diff --git a/drivers/media/vin/tvin/hdmirx/hdmi_rx_drv.h b/drivers/media/vin/tvin/hdmirx/hdmi_rx_drv.h index 1e70f5a77..15765cc9c 100644 --- a/drivers/media/vin/tvin/hdmirx/hdmi_rx_drv.h +++ b/drivers/media/vin/tvin/hdmirx/hdmi_rx_drv.h @@ -96,7 +96,8 @@ /* 2023.7.5 clear dv packet when no emp */ /* 2023.7.12 txhd2 bring up debug */ /* 2023.8.1 add ctrl of 5v wake up */ -#define RX_VER1 "ver.2023/7/12" +/* 2023.08.14 modify the mapped emp buffer address*/ +#define RX_VER1 "ver.2023/8/14" /* 50ms timer for hdmirx main loop (HDMI_STATE_CHECK_FREQ is 20) */ diff --git a/drivers/media/vin/tvin/hdmirx/hdmi_rx_hw.c b/drivers/media/vin/tvin/hdmirx/hdmi_rx_hw.c index fd14fd046..032257c2a 100644 --- a/drivers/media/vin/tvin/hdmirx/hdmi_rx_hw.c +++ b/drivers/media/vin/tvin/hdmirx/hdmi_rx_hw.c @@ -6647,7 +6647,11 @@ void rx_emp_field_done_irq(u8 port) for (i = 0; i < recv_pagenum;) { /*one page 4k*/ cur_start_pg_addr = phys_to_page(p_addr + i * PAGE_SIZE); - src_addr = kmap_atomic(cur_start_pg_addr); + if (p_addr == rx_info.emp_buff_a.p_addr_a) + src_addr = kmap_atomic(cur_start_pg_addr); + else + src_addr = kmap_atomic(cur_start_pg_addr) + (rx_info.emp_buff_a.p_addr_b - + rx_info.emp_buff_a.p_addr_a) % PAGE_SIZE; if (!src_addr) return; dma_sync_single_for_cpu(hdmirx_dev, (p_addr + i * PAGE_SIZE),