Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'imx-fixes-5.16-2' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux into arm/fixes

i.MX fixes for 5.16, round 2:

- One fix on imx8m-blk-ctrl driver to get i.MX8MM MIPI reset work
properly
- Fix CSI_DATA07__ESAI_TX0 pad name in i.MX7ULL pin function header
- Remove interconnect property from i.MX8MQ LCDIF device to fix the
regression that LCDIF driver stops probe, because interconnect
provider driver (imx-bus) hasn't been fully working.
- Fix soc-imx driver to register SoC device only on i.MX platform.

* tag 'imx-fixes-5.16-2' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux:
soc: imx: Register SoC device only on i.MX boards
soc: imx: imx8m-blk-ctrl: Fix imx8mm mipi reset
ARM: dts: imx6ull-pinfunc: Fix CSI_DATA07__ESAI_TX0 pad name
arm64: dts: imx8mq: remove interconnect property from lcdif

Link: https://lore.kernel.org/r/20211211015625.GK4216@dragon
Signed-off-by: Arnd Bergmann <arnd@arndb.de>

+24 -3
+1 -1
arch/arm/boot/dts/imx6ull-pinfunc.h
··· 82 82 #define MX6ULL_PAD_CSI_DATA04__ESAI_TX_FS 0x01F4 0x0480 0x0000 0x9 0x0 83 83 #define MX6ULL_PAD_CSI_DATA05__ESAI_TX_CLK 0x01F8 0x0484 0x0000 0x9 0x0 84 84 #define MX6ULL_PAD_CSI_DATA06__ESAI_TX5_RX0 0x01FC 0x0488 0x0000 0x9 0x0 85 - #define MX6ULL_PAD_CSI_DATA07__ESAI_T0 0x0200 0x048C 0x0000 0x9 0x0 85 + #define MX6ULL_PAD_CSI_DATA07__ESAI_TX0 0x0200 0x048C 0x0000 0x9 0x0 86 86 87 87 #endif /* __DTS_IMX6ULL_PINFUNC_H */
-2
arch/arm64/boot/dts/freescale/imx8mq.dtsi
··· 524 524 <&clk IMX8MQ_VIDEO_PLL1>, 525 525 <&clk IMX8MQ_VIDEO_PLL1_OUT>; 526 526 assigned-clock-rates = <0>, <0>, <0>, <594000000>; 527 - interconnects = <&noc IMX8MQ_ICM_LCDIF &noc IMX8MQ_ICS_DRAM>; 528 - interconnect-names = "dram"; 529 527 status = "disabled"; 530 528 531 529 port@0 {
+19
drivers/soc/imx/imx8m-blk-ctrl.c
··· 17 17 18 18 #define BLK_SFT_RSTN 0x0 19 19 #define BLK_CLK_EN 0x4 20 + #define BLK_MIPI_RESET_DIV 0x8 /* Mini/Nano DISPLAY_BLK_CTRL only */ 20 21 21 22 struct imx8m_blk_ctrl_domain; 22 23 ··· 37 36 const char *gpc_name; 38 37 u32 rst_mask; 39 38 u32 clk_mask; 39 + 40 + /* 41 + * i.MX8M Mini and Nano have a third DISPLAY_BLK_CTRL register 42 + * which is used to control the reset for the MIPI Phy. 43 + * Since it's only present in certain circumstances, 44 + * an if-statement should be used before setting and clearing this 45 + * register. 46 + */ 47 + u32 mipi_phy_rst_mask; 40 48 }; 41 49 42 50 #define DOMAIN_MAX_CLKS 3 ··· 88 78 89 79 /* put devices into reset */ 90 80 regmap_clear_bits(bc->regmap, BLK_SFT_RSTN, data->rst_mask); 81 + if (data->mipi_phy_rst_mask) 82 + regmap_clear_bits(bc->regmap, BLK_MIPI_RESET_DIV, data->mipi_phy_rst_mask); 91 83 92 84 /* enable upstream and blk-ctrl clocks to allow reset to propagate */ 93 85 ret = clk_bulk_prepare_enable(data->num_clks, domain->clks); ··· 111 99 112 100 /* release reset */ 113 101 regmap_set_bits(bc->regmap, BLK_SFT_RSTN, data->rst_mask); 102 + if (data->mipi_phy_rst_mask) 103 + regmap_set_bits(bc->regmap, BLK_MIPI_RESET_DIV, data->mipi_phy_rst_mask); 114 104 115 105 /* disable upstream clocks */ 116 106 clk_bulk_disable_unprepare(data->num_clks, domain->clks); ··· 134 120 struct imx8m_blk_ctrl *bc = domain->bc; 135 121 136 122 /* put devices into reset and disable clocks */ 123 + if (data->mipi_phy_rst_mask) 124 + regmap_clear_bits(bc->regmap, BLK_MIPI_RESET_DIV, data->mipi_phy_rst_mask); 125 + 137 126 regmap_clear_bits(bc->regmap, BLK_SFT_RSTN, data->rst_mask); 138 127 regmap_clear_bits(bc->regmap, BLK_CLK_EN, data->clk_mask); 139 128 ··· 497 480 .gpc_name = "mipi-dsi", 498 481 .rst_mask = BIT(5), 499 482 .clk_mask = BIT(8) | BIT(9), 483 + .mipi_phy_rst_mask = BIT(17), 500 484 }, 501 485 [IMX8MM_DISPBLK_PD_MIPI_CSI] = { 502 486 .name = "dispblk-mipi-csi", ··· 506 488 .gpc_name = "mipi-csi", 507 489 .rst_mask = BIT(3) | BIT(4), 508 490 .clk_mask = BIT(10) | BIT(11), 491 + .mipi_phy_rst_mask = BIT(16), 509 492 }, 510 493 }; 511 494
+4
drivers/soc/imx/soc-imx.c
··· 36 36 int ret; 37 37 int i; 38 38 39 + /* Return early if this is running on devices with different SoCs */ 40 + if (!__mxc_cpu_type) 41 + return 0; 42 + 39 43 if (of_machine_is_compatible("fsl,ls1021a")) 40 44 return 0; 41 45