mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-10 21:07:02 +09:00
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:
@@ -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>;
|
||||
|
||||
|
||||
@@ -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");
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user