Merge commit '657e562238236b025e092455c42ba24cf95b5840'

* commit '657e562238236b025e092455c42ba24cf95b5840':
  media: i2c: os02k10 support normal boot
  ASoC: rockchip: sai: Fix warning
  arm64: dts: rockchip: rk3562-amp: use ap core CPU3 rpmsg as default
  media: rockchip: isp: fix rv1106g3 4k can't cmsk rightmost
  video: rockchip: rga3: fix multi-process import virtual address error
  video: rockchip: rga3: debug log "MSG" supports multi-tasking mode
  video: rockchip: rga3: add running log for rga_mm

Change-Id: Ib35dbac8922ea1f231edfce30331c1317792a061
This commit is contained in:
Tao Huang
2023-10-24 11:28:31 +08:00
7 changed files with 51 additions and 32 deletions

View File

@@ -17,7 +17,7 @@
pinctrl-0 = <&uart7m1_xfer>;
amp-cpu-aff-maskbits = /bits/ 64 <0x0 0x1 0x1 0x2 0x2 0x4 0x3 0x8>;
amp-irqs = /bits/ 64 <GIC_AMP_IRQ_CFG_ROUTE(81, 0xd0, CPU_GET_AFFINITY(3, 0))>;
amp-irqs = /bits/ 64 <GIC_AMP_IRQ_CFG_ROUTE(147, 0xd0, CPU_GET_AFFINITY(3, 0))>;
status = "okay";
};
@@ -57,7 +57,8 @@
mbox-names = "rpmsg-rx", "rpmsg-tx";
mboxes = <&mailbox 0 &mailbox 3>;
rockchip,vdev-nums = <1>;
rockchip,link-id = <0x04>;
/* CPU3: link-id 0x03; MCU: link-id 0x04; */
rockchip,link-id = <0x03>;
reg = <0x0 0x7c00000 0x0 0x20000>;
memory-region = <&rpmsg_dma_reserved>;

View File

@@ -47,7 +47,7 @@
#define OS02K10_XVCLK_FREQ 24000000
#define CHIP_ID 0x530243
#define CHIP_ID 0x005302
#define OS02K10_REG_CHIP_ID 0x300a
#define OS02K10_REG_CTRL_MODE 0x0100
@@ -2095,11 +2095,11 @@ static int os02k10_probe(struct i2c_client *client,
return -EINVAL;
}
os02k10->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_ASIS);
os02k10->reset_gpio = devm_gpiod_get(dev, "reset", os02k10->is_thunderboot ? GPIOD_ASIS : GPIOD_OUT_LOW);
if (IS_ERR(os02k10->reset_gpio))
dev_warn(dev, "Failed to get reset-gpios\n");
os02k10->pwdn_gpio = devm_gpiod_get(dev, "pwdn", GPIOD_ASIS);
os02k10->pwdn_gpio = devm_gpiod_get(dev, "pwdn", os02k10->is_thunderboot ? GPIOD_ASIS : GPIOD_OUT_LOW);
if (IS_ERR(os02k10->pwdn_gpio))
dev_warn(dev, "Failed to get pwdn-gpios\n");

View File

@@ -1469,7 +1469,7 @@ static void rkisp_config_cmsk_dual(struct rkisp_device *dev,
left.win[0].win_en &= ~BIT(i);
left.win[1].win_en &= ~BIT(i);
left.win[2].win_en &= ~BIT(i);
right.win[i].h_offs = right.win[i].h_offs - w;
right.win[i].h_offs = h_offs - w + RKMOUDLE_UNITE_EXTEND_PIXEL;
} else {
/* cmsk window at dual isp */
left.win[i].h_size = ALIGN(w - h_offs, 8);

View File

@@ -885,11 +885,6 @@ static long rga_ioctl_blit(unsigned long arg, uint32_t cmd, struct rga_session *
/* In the BLIT_SYNC/BLIT_ASYNC command, in_fence_fd needs to be set. */
request->acquire_fence_fd = rga_req->in_fence_fd;
if (DEBUGGER_EN(MSG)) {
pr_info("Blit mode: request id = %d", user_request.id);
rga_cmd_print_debug_info(rga_req);
}
ret = rga_request_submit(request);
if (ret < 0) {
pr_err("request[%d] submit failed!\n", user_request.id);

View File

@@ -820,7 +820,14 @@ int rga_request_commit(struct rga_request *request)
struct rga_job *job;
for (i = 0; i < request->task_count; i++) {
job = rga_job_commit(&(request->task_list[i]), request);
struct rga_req *req = &(request->task_list[i]);
if (DEBUGGER_EN(MSG)) {
pr_info("commit request[%d] task[%d]:\n", request->id, i);
rga_cmd_print_debug_info(req);
}
job = rga_job_commit(req, request);
if (IS_ERR(job)) {
pr_err("request[%d] task[%d] job_commit failed.\n", request->id, i);
rga_request_release_abort(request, PTR_ERR(job));

View File

@@ -842,7 +842,8 @@ static int rga_mm_handle_remove(int id, void *ptr, void *data)
static struct rga_internal_buffer *
rga_mm_lookup_external(struct rga_mm *mm_session,
struct rga_external_buffer *external_buffer)
struct rga_external_buffer *external_buffer,
struct mm_struct *current_mm)
{
int id;
struct dma_buf *dma_buf = NULL;
@@ -875,8 +876,12 @@ rga_mm_lookup_external(struct rga_mm *mm_session,
continue;
if (temp_buffer->virt_addr->addr == external_buffer->memory) {
output_buffer = temp_buffer;
break;
if (temp_buffer->current_mm == current_mm) {
output_buffer = temp_buffer;
break;
}
continue;
}
}
@@ -1482,6 +1487,11 @@ static void rga_mm_put_buffer(struct rga_mm *mm,
if (rga_mm_sync_dma_sg_for_cpu(internal_buffer, job, dir))
pr_err("sync sgt for cpu error!\n");
if (DEBUGGER_EN(MM)) {
pr_info("handle[%d] put info:\n", (int)internal_buffer->handle);
rga_mm_dump_buffer(internal_buffer);
}
mutex_lock(&mm->lock);
kref_put(&internal_buffer->refcount, rga_mm_kref_release_buffer);
mutex_unlock(&mm->lock);
@@ -2023,11 +2033,17 @@ uint32_t rga_mm_import_buffer(struct rga_external_buffer *external_buffer,
mutex_lock(&mm->lock);
/* first, Check whether to rga_mm */
internal_buffer = rga_mm_lookup_external(mm, external_buffer);
internal_buffer = rga_mm_lookup_external(mm, external_buffer, current->mm);
if (!IS_ERR_OR_NULL(internal_buffer)) {
kref_get(&internal_buffer->refcount);
mutex_unlock(&mm->lock);
if (DEBUGGER_EN(MM)) {
pr_info("import existing buffer:\n");
rga_mm_dump_buffer(internal_buffer);
}
return internal_buffer->handle;
}

View File

@@ -881,39 +881,39 @@ static const char * const tpaths_text[] = {
"From PATH0", "From PATH1", "From PATH2", "From PATH3" };
/* TXCR */
static SOC_ENUM_SINGLE_DECL(tsft_enum, SAI_TXCR, 22, edge_shift_text);
static SOC_ENUM_SINGLE_DECL(__maybe_unused tsft_enum, SAI_TXCR, 22, edge_shift_text);
static const struct soc_enum tx_lanes_enum =
SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(tx_lanes_text), tx_lanes_text);
static SOC_ENUM_SINGLE_DECL(tsjm_enum, SAI_TXCR, 19, sjm_text);
static SOC_ENUM_SINGLE_DECL(tfbm_enum, SAI_TXCR, 18, fbm_text);
static SOC_ENUM_SINGLE_DECL(tvdj_enum, SAI_TXCR, 10, vdj_text);
static SOC_ENUM_SINGLE_DECL(tsbw_enum, SAI_TXCR, 5, sbw_text);
static SOC_ENUM_SINGLE_DECL(__maybe_unused tsjm_enum, SAI_TXCR, 19, sjm_text);
static SOC_ENUM_SINGLE_DECL(__maybe_unused tfbm_enum, SAI_TXCR, 18, fbm_text);
static SOC_ENUM_SINGLE_DECL(__maybe_unused tvdj_enum, SAI_TXCR, 10, vdj_text);
static SOC_ENUM_SINGLE_DECL(__maybe_unused tsbw_enum, SAI_TXCR, 5, sbw_text);
/* FSCR */
static SOC_ENUM_SINGLE_DECL(edge_enum, SAI_FSCR, 24, edge_text);
static const struct soc_enum fpw_enum =
static SOC_ENUM_SINGLE_DECL(__maybe_unused edge_enum, SAI_FSCR, 24, edge_text);
static const struct soc_enum __maybe_unused fpw_enum =
SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(fpw_text), fpw_text);
static const struct soc_enum fw_ratio_enum =
static const struct soc_enum __maybe_unused fw_ratio_enum =
SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(fw_ratio_text), fw_ratio_text);
/* RXCR */
static SOC_ENUM_SINGLE_DECL(rsft_enum, SAI_RXCR, 22, edge_shift_text);
static SOC_ENUM_SINGLE_DECL(__maybe_unused rsft_enum, SAI_RXCR, 22, edge_shift_text);
static const struct soc_enum rx_lanes_enum =
SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(rx_lanes_text), rx_lanes_text);
static SOC_ENUM_SINGLE_DECL(rsjm_enum, SAI_RXCR, 19, sjm_text);
static SOC_ENUM_SINGLE_DECL(rfbm_enum, SAI_RXCR, 18, fbm_text);
static SOC_ENUM_SINGLE_DECL(rvdj_enum, SAI_RXCR, 10, vdj_text);
static SOC_ENUM_SINGLE_DECL(rsbw_enum, SAI_RXCR, 5, sbw_text);
static SOC_ENUM_SINGLE_DECL(__maybe_unused rsjm_enum, SAI_RXCR, 19, sjm_text);
static SOC_ENUM_SINGLE_DECL(__maybe_unused rfbm_enum, SAI_RXCR, 18, fbm_text);
static SOC_ENUM_SINGLE_DECL(__maybe_unused rvdj_enum, SAI_RXCR, 10, vdj_text);
static SOC_ENUM_SINGLE_DECL(__maybe_unused rsbw_enum, SAI_RXCR, 5, sbw_text);
/* MONO_CR */
static SOC_ENUM_SINGLE_DECL(rmono_switch, SAI_MONO_CR, 1, mono_text);
static SOC_ENUM_SINGLE_DECL(tmono_switch, SAI_MONO_CR, 0, mono_text);
/* CKR */
static const struct soc_enum mss_switch =
static const struct soc_enum __maybe_unused mss_switch =
SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(mss_text), mss_text);
static SOC_ENUM_SINGLE_DECL(sp_switch, SAI_CKR, 1, ckp_text);
static SOC_ENUM_SINGLE_DECL(fp_switch, SAI_CKR, 0, ckp_text);
static SOC_ENUM_SINGLE_DECL(__maybe_unused sp_switch, SAI_CKR, 1, ckp_text);
static SOC_ENUM_SINGLE_DECL(__maybe_unused fp_switch, SAI_CKR, 0, ckp_text);
/* PATH_SEL */
static SOC_ENUM_SINGLE_DECL(lp3_enum, SAI_PATH_SEL, 28, lpx_text);