From a095b986015598f2aa1ef1e424f766a8bb65f4a3 Mon Sep 17 00:00:00 2001 From: Shawn Lin Date: Wed, 11 Oct 2023 08:58:14 +0800 Subject: [PATCH 1/8] PCI: rockchip: dw: remove .link_up() hook from struct dw_pcie_ops [2.353901] rk-pcie 3c0000000.pcie Link up. LTSSM is 0x1 [2.354036] rk-pcie 3c0000000.pcie: PCI host bridge to bus 0000 :00 [2.354058] pci_bus 0000:00: root bus resource [bus 00-0f] [2.354074] pci_bus 0000:00: root bus resource [??? 0x4000000-0xf40fffff flags 0x0] ... The original link event is checking LTSSM and ensure it's in L0. However enabling ASPM will make accessing config space failed. So commit 824c99261a9a ("PCI: rockchip: dw: Update link up check state") remove the LTSSM check. But it introduce a situation that if link still in training and host bridge tries to enumerate slot, it will fail unexpectedly. Fix this by removing rk_pcie_link_up and let dwc core use its own port logic to decide the link state. Signed-off-by: Shawn Lin Change-Id: I41f05a8aa89ac33782d569ffa7d466cf95981c68 --- drivers/pci/controller/dwc/pcie-dw-rockchip.c | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/drivers/pci/controller/dwc/pcie-dw-rockchip.c b/drivers/pci/controller/dwc/pcie-dw-rockchip.c index 4e5a2251b49b..67b11fbf9e18 100644 --- a/drivers/pci/controller/dwc/pcie-dw-rockchip.c +++ b/drivers/pci/controller/dwc/pcie-dw-rockchip.c @@ -702,24 +702,6 @@ static inline void rk_pcie_enable_ltssm(struct rk_pcie *rk_pcie) rk_pcie_writel_apb(rk_pcie, 0x0, 0xC000C); } -static int rk_pcie_link_up(struct dw_pcie *pci) -{ - struct rk_pcie *rk_pcie = to_rk_pcie(pci); - u32 val; - - if (rk_pcie->is_rk1808) { - val = rk_pcie_readl_apb(rk_pcie, PCIE_CLIENT_GENERAL_DEBUG); - if ((val & (PCIE_PHY_LINKUP | PCIE_DATA_LINKUP)) == 0x3) - return 1; - } else { - val = rk_pcie_readl_apb(rk_pcie, PCIE_CLIENT_LTSSM_STATUS); - if ((val & (RDLH_LINKUP | SMLH_LINKUP)) == 0x30000) - return 1; - } - - return 0; -} - static void rk_pcie_enable_debug(struct rk_pcie *rk_pcie) { if (!IS_ENABLED(CONFIG_DEBUG_FS)) @@ -1601,7 +1583,6 @@ MODULE_DEVICE_TABLE(of, rk_pcie_of_match); static const struct dw_pcie_ops dw_pcie_ops = { .start_link = rk_pcie_establish_link, - .link_up = rk_pcie_link_up, }; static int rk1808_pcie_fixup(struct rk_pcie *rk_pcie, struct device_node *np) From 81b6116b245f359b2badab53bfdca6e5e074ac27 Mon Sep 17 00:00:00 2001 From: Jianwei Fan Date: Wed, 11 Oct 2023 06:28:58 +0000 Subject: [PATCH 2/8] arm64: dts: rockchip: rk3568-evb: fix gc8034 power domain config Signed-off-by: Jianwei Fan Change-Id: I2c21854981952f5784de077f397bd1469835abe2 --- arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10.dtsi | 1 + arch/arm64/boot/dts/rockchip/rk3568-evb5-ddr4-v10.dtsi | 1 + 2 files changed, 2 insertions(+) diff --git a/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10.dtsi b/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10.dtsi index 7ef900001f51..dc9ad4236dd3 100644 --- a/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10.dtsi +++ b/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10.dtsi @@ -273,6 +273,7 @@ clock-names = "xvclk"; pinctrl-names = "default"; pinctrl-0 = <&cif_clk>; + power-domains = <&power RK3568_PD_VI>; reset-gpios = <&gpio3 RK_PB6 GPIO_ACTIVE_LOW>; pwdn-gpios = <&gpio4 RK_PB4 GPIO_ACTIVE_LOW>; rockchip,grf = <&grf>; diff --git a/arch/arm64/boot/dts/rockchip/rk3568-evb5-ddr4-v10.dtsi b/arch/arm64/boot/dts/rockchip/rk3568-evb5-ddr4-v10.dtsi index 4a51275109fb..beba4ab09426 100644 --- a/arch/arm64/boot/dts/rockchip/rk3568-evb5-ddr4-v10.dtsi +++ b/arch/arm64/boot/dts/rockchip/rk3568-evb5-ddr4-v10.dtsi @@ -304,6 +304,7 @@ clock-names = "xvclk"; pinctrl-names = "default"; pinctrl-0 = <&cif_clk>; + power-domains = <&power RK3568_PD_VI>; reset-gpios = <&gpio3 RK_PB6 GPIO_ACTIVE_LOW>; pwdn-gpios = <&gpio4 RK_PB4 GPIO_ACTIVE_LOW>; rockchip,grf = <&grf>; From 8f518bafab4127822cdce0b4d76e9f5f76c30df9 Mon Sep 17 00:00:00 2001 From: Damon Ding Date: Wed, 11 Oct 2023 17:20:39 +0800 Subject: [PATCH 3/8] arm64: dts: rockchip: rk3588s-evb3: disable gt1x in bt1120 display board The pins of gt1x and sii9022 are multiplexed. In addition, add support for bt656 by the same display ext board. Signed-off-by: Damon Ding Change-Id: I9164bd0a354a215cf5e04eec99946714c0638465 --- ...3588s-evb3-lp4x-v10-sii9022-bt1120-to-hdmi.dts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/arch/arm64/boot/dts/rockchip/rk3588s-evb3-lp4x-v10-sii9022-bt1120-to-hdmi.dts b/arch/arm64/boot/dts/rockchip/rk3588s-evb3-lp4x-v10-sii9022-bt1120-to-hdmi.dts index e2d5f25d53bf..4a03bc67aeb1 100644 --- a/arch/arm64/boot/dts/rockchip/rk3588s-evb3-lp4x-v10-sii9022-bt1120-to-hdmi.dts +++ b/arch/arm64/boot/dts/rockchip/rk3588s-evb3-lp4x-v10-sii9022-bt1120-to-hdmi.dts @@ -19,6 +19,13 @@ status = "disabled"; }; +/* + * The pins of gt1x and sii9022 are multiplexed + */ +>1x { + status = "disabled"; +}; + &i2c4 { clock-frequency = <400000>; status = "okay"; @@ -32,6 +39,10 @@ interrupts = ; reset-gpio = <&gpio1 RK_PA7 GPIO_ACTIVE_LOW>; enable-gpio = <&gpio1 RK_PB5 GPIO_ACTIVE_HIGH>; + /* + * MEDIA_BUS_FMT_UYVY8_1X16 for bt1120 + * MEDIA_BUS_FMT_UYVY8_2X8 for bt656 + */ bus-format = ; ports { @@ -60,6 +71,10 @@ &rgb { status = "okay"; pinctrl-names = "default"; + /* + * <&bt1120_pins> for bt1120 + * <&bt656_pins> for bt656 + */ pinctrl-0 = <&bt1120_pins>; ports { From 0b926bd8ddffa804be646bc27ac2f416a92052a1 Mon Sep 17 00:00:00 2001 From: Huibin Hong Date: Wed, 11 Oct 2023 09:08:31 +0000 Subject: [PATCH 4/8] fiq_debugger: set uart irq no balancing When IRQ BALANCING is enable, the log below is show: fiq_debugger:cpu 0 not responding,reverting to cpu 6 Signed-off-by: Huibin Hong Change-Id: Ic5a1786ecb72dc4b28e9b9fa8428065e111e55ee --- drivers/soc/rockchip/fiq_debugger/fiq_debugger.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/soc/rockchip/fiq_debugger/fiq_debugger.c b/drivers/soc/rockchip/fiq_debugger/fiq_debugger.c index 1f8e88e73acc..77850ffc7009 100644 --- a/drivers/soc/rockchip/fiq_debugger/fiq_debugger.c +++ b/drivers/soc/rockchip/fiq_debugger/fiq_debugger.c @@ -1556,7 +1556,7 @@ static int fiq_debugger_probe(struct platform_device *pdev) pr_err("%s: could not install nmi irq handler\n", __func__); irq_clear_status_flags(state->uart_irq, IRQ_NOAUTOEN); ret = request_irq(state->uart_irq, fiq_debugger_uart_irq, - IRQF_NO_SUSPEND, "debug", state); + IRQF_NO_SUSPEND | IRQF_NOBALANCING, "debug", state); } else { enable_nmi(state->uart_irq); } From 3b4cfe2daed105062e199dd261db090d401a345a Mon Sep 17 00:00:00 2001 From: Rimon Xu Date: Sun, 8 Oct 2023 18:00:53 +0800 Subject: [PATCH 5/8] video: rockchip: vtunnel: fix compile errors on android 14 Change-Id: If3ef85ec97616507a337fa8a898155b80397f9f2 Signed-off-by: Rimon Xu --- drivers/video/rockchip/vtunnel/rkvtunnel.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/video/rockchip/vtunnel/rkvtunnel.c b/drivers/video/rockchip/vtunnel/rkvtunnel.c index 238a6516fc32..a2ce451b7cda 100644 --- a/drivers/video/rockchip/vtunnel/rkvtunnel.c +++ b/drivers/video/rockchip/vtunnel/rkvtunnel.c @@ -731,7 +731,7 @@ rkvt_reset_proc(struct rkvt_ctrl_data *data, struct rkvt_session *session) { struct rkvt_dev *vt_dev = session->vt_dev; struct rkvt_instance *inst; - long read_buf_id; + long long read_buf_id; inst = rkvt_inst_get_by_tid(vt_dev, data->vt_id); if (!inst) @@ -1191,7 +1191,7 @@ rkvt_release_buf(struct rkvt_buf_data *data, struct rkvt_session *session) struct rkvt_buffer *buffer = NULL; int i; int ret = 0; - long read_buf_id; + long long read_buf_id; inst = rkvt_inst_get_by_tid(vt_dev, data->vt_id); if (!inst) From 206d4855f156e7fc828842d7239f35325172c646 Mon Sep 17 00:00:00 2001 From: Wangqiang Guo Date: Wed, 11 Oct 2023 06:15:56 +0000 Subject: [PATCH 6/8] arm64: rockchip_defconfig: enable icm4260x sensor. support RK3588-EVB7 Change-Id: I1899ae8f1bc8b102a68bd7b00ca9d698760f8f19 Signed-off-by: Wangqiang Guo --- arch/arm64/configs/rockchip_defconfig | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/arm64/configs/rockchip_defconfig b/arch/arm64/configs/rockchip_defconfig index e411b933e58c..b19d854fc7da 100644 --- a/arch/arm64/configs/rockchip_defconfig +++ b/arch/arm64/configs/rockchip_defconfig @@ -475,6 +475,7 @@ CONFIG_GS_LSM303D=y CONFIG_LSM330_ACC=y CONFIG_BMA2XX_ACC=y CONFIG_GS_DA223=y +CONFIG_ICM4260X_ACC=y CONFIG_COMPASS_DEVICE=y CONFIG_COMPASS_AK8975=y CONFIG_COMPASS_AK8963=y @@ -485,6 +486,7 @@ CONFIG_GYRO_EWTSA=y CONFIG_GYRO_MPU6500=y CONFIG_GYRO_MPU6880=y CONFIG_GYRO_LSM330=y +CONFIG_GYRO_ICM4260X=y CONFIG_LIGHT_DEVICE=y CONFIG_LS_CM3217=y CONFIG_LS_CM3218=y From 89b28f5bba3ad712e3d8be0e7d88be7a8717abce Mon Sep 17 00:00:00 2001 From: Wangqiang Guo Date: Wed, 11 Oct 2023 06:17:35 +0000 Subject: [PATCH 7/8] arm64: rockchip_gki.config: enable icm4260x sensor. support RK3588-EVB7 Change-Id: I1b365c1bf344a1cd106ae6ba55c1a177cb759861 Signed-off-by: Wangqiang Guo --- arch/arm64/configs/rockchip_gki.config | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/arm64/configs/rockchip_gki.config b/arch/arm64/configs/rockchip_gki.config index 160bfa284ae9..d1dd1e15dcc7 100644 --- a/arch/arm64/configs/rockchip_gki.config +++ b/arch/arm64/configs/rockchip_gki.config @@ -85,6 +85,7 @@ CONFIG_GS_SC7A20=m CONFIG_GS_SC7A30=m CONFIG_GYROSCOPE_DEVICE=m CONFIG_GYRO_EWTSA=m +CONFIG_GYRO_ICM4260X=m CONFIG_GYRO_L3G20D=m CONFIG_GYRO_L3G4200D=m CONFIG_GYRO_LSM330=m @@ -139,6 +140,7 @@ CONFIG_I2C_CHARDEV=m CONFIG_I2C_GPIO=m CONFIG_I2C_HID=m CONFIG_I2C_RK3X=m +CONFIG_ICM4260X_ACC=m CONFIG_IEP=m CONFIG_IIO_BUFFER_CB=m CONFIG_INPUT_RK805_PWRKEY=m From 372c139deef48d827f8fe6ca47cb8210b28914a4 Mon Sep 17 00:00:00 2001 From: Johnson Ding Date: Wed, 11 Oct 2023 09:04:00 +0800 Subject: [PATCH 8/8] video: rockchip: mpp: fix JPEG Enc dma sync problem Signed-off-by: Johnson Ding Change-Id: I5947652b7291cd997ee4555c89942a0bd7af53c1 --- drivers/video/rockchip/mpp/mpp_rkvenc2.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/video/rockchip/mpp/mpp_rkvenc2.c b/drivers/video/rockchip/mpp/mpp_rkvenc2.c index 5ea47d99163e..fc55395dafc0 100644 --- a/drivers/video/rockchip/mpp/mpp_rkvenc2.c +++ b/drivers/video/rockchip/mpp/mpp_rkvenc2.c @@ -1469,7 +1469,7 @@ static int rkvenc_finish(struct mpp_dev *mpp, struct mpp_task *mpp_task) if (task->bs_buf) { u32 bs_size = mpp_read(mpp, 0x4064); - mpp_dma_buf_sync(task->bs_buf, 0, bs_size / 8 + task->offset_bs, + mpp_dma_buf_sync(task->bs_buf, 0, bs_size + task->offset_bs, DMA_FROM_DEVICE, true); }