Messages in this thread | | | Date | Thu, 8 Sep 2022 08:20:11 +0800 | Subject | Re: [PATCH V5 5/8] soc: imx: add i.MX8MP HDMI blk ctrl HDCP/HRV_MWR | From | Peng Fan <> |
| |
On 9/7/2022 10:41 AM, Peng Fan wrote: > > > On 9/6/2022 10:37 PM, Alexander Stein wrote: >> Hello, >> >> Am Montag, 22. August 2022, 08:45:33 CEST schrieb Peng Fan (OSS): >>> From: Peng Fan <peng.fan@nxp.com> >>> >>> i.MX8MP HDMI supports HDCP and HRV_MWR(HDMI RX Video Memory Write Master >>> for RXRX validation), so add them. >>> >>> Signed-off-by: Peng Fan <peng.fan@nxp.com> >>> --- >>> drivers/soc/imx/imx8mp-blk-ctrl.c | 30 ++++++++++++++++++++++++++++++ >>> 1 file changed, 30 insertions(+) >>> >>> diff --git a/drivers/soc/imx/imx8mp-blk-ctrl.c >>> b/drivers/soc/imx/imx8mp-blk-ctrl.c index 6f983adcb47c..527d45d12a54 >>> 100644 >>> --- a/drivers/soc/imx/imx8mp-blk-ctrl.c >>> +++ b/drivers/soc/imx/imx8mp-blk-ctrl.c >>> @@ -235,6 +235,13 @@ static void imx8mp_hdmi_blk_ctrl_power_on(struct >>> imx8mp_blk_ctrl *bc, regmap_set_bits(bc->regmap, HDMI_RTX_RESET_CTL0, >>> BIT(12)); >>> regmap_clear_bits(bc->regmap, HDMI_TX_CONTROL0, BIT(3)); >>> break; >>> + case IMX8MP_HDMIBLK_PD_HDCP: >>> + regmap_set_bits(bc->regmap, HDMI_RTX_CLK_CTL0, BIT(11)); >>> + break; >>> + case IMX8MP_HDMIBLK_PD_HRV: >>> + regmap_set_bits(bc->regmap, HDMI_RTX_CLK_CTL1, BIT(3) | >> BIT(4) | BIT(5)); >>> + regmap_set_bits(bc->regmap, HDMI_RTX_RESET_CTL0, >> BIT(15)); >>> + break; >>> default: >>> break; >>> } >>> @@ -283,6 +290,13 @@ static void imx8mp_hdmi_blk_ctrl_power_off(struct >>> imx8mp_blk_ctrl *bc, regmap_clear_bits(bc->regmap, HDMI_RTX_RESET_CTL0, >>> BIT(12)); >>> regmap_clear_bits(bc->regmap, HDMI_RTX_CLK_CTL1, BIT(22) >> | BIT(24)); >>> break; >>> + case IMX8MP_HDMIBLK_PD_HDCP: >>> + regmap_clear_bits(bc->regmap, HDMI_RTX_CLK_CTL0, >> BIT(11)); >>> + break; >>> + case IMX8MP_HDMIBLK_PD_HRV: >>> + regmap_clear_bits(bc->regmap, HDMI_RTX_RESET_CTL0, >> BIT(15)); >>> + regmap_clear_bits(bc->regmap, HDMI_RTX_CLK_CTL1, BIT(3) >> | BIT(4) | >>> BIT(5)); + break; >>> default: >>> break; >>> } >>> @@ -365,6 +379,22 @@ static const struct imx8mp_blk_ctrl_domain_data >>> imx8mp_hdmi_domain_data[] = { .num_clks = 2, >>> .gpc_name = "hdmi-tx-phy", >>> }, >>> + [IMX8MP_HDMIBLK_PD_HRV] = { >>> + .name = "hdmiblk-hrv", >>> + .clk_names = (const char *[]){ "axi", "apb" }, >>> + .num_clks = 2, >>> + .gpc_name = "hrv", >>> + .path_names = (const char *[]){"hrv"}, >>> + .num_paths = 1, >>> + }, >>> + [IMX8MP_HDMIBLK_PD_HDCP] = { >>> + .name = "hdmiblk-hdcp", >>> + .clk_names = (const char *[]){ "axi", "apb" }, >>> + .num_clks = 2, >>> + .gpc_name = "hdcp", >>> + .path_names = (const char *[]){"hdcp"}, >>> + .num_paths = 1, >>> + }, >>> }; >>> >>> static const struct imx8mp_blk_ctrl_data >>> imx8mp_hdmi_blk_ctl_dev_data = { >> >> Something is missing here. Iget the following error during boot: >> [ 0.886211] Unable to handle kernel NULL pointer dereference at >> virtual >> address 0000000000000000 >> [ 0.895043] Mem abort info: >> [ 0.897841] ESR = 0x0000000096000004 >> [ 0.901606] EC = 0x25: DABT (current EL), IL = 32 bits >> [ 0.906942] SET = 0, FnV = 0 >> [ 0.910003] EA = 0, S1PTW = 0 >> [ 0.913159] FSC = 0x04: level 0 translation fault >> [ 0.918054] Data abort info: >> [ 0.920943] ISV = 0, ISS = 0x00000004 >> [ 0.924791] CM = 0, WnR = 0 >> [ 0.927761] [0000000000000000] user address but active_mm is swapper >> [ 0.934157] Internal error: Oops: 96000004 [#1] PREEMPT SMP >> [ 0.939749] Modules linked in: >> [ 0.942813] CPU: 1 PID: 1 Comm: swapper/0 Not tainted 6.0.0-rc4- >> next-20220906+ #674 2c55fa642ba20b0dbb66c0e78dacc9ca96d5e733 >> [ 0.954099] Hardware name: TQ-Systems i.MX8MPlus TQMa8MPxL on >> MBa8MPxL (DT) >> [ 0.961100] pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS >> BTYPE=--) >> [ 0.968099] pc : kobject_set_name_vargs+0x10/0xd0 >> [ 0.972823] lr : dev_set_name+0x58/0x80 >> [ 0.976674] sp : ffff800009c7b860 >> [ 0.979997] x29: ffff800009c7b860 x28: ffff000002d728f8 x27: >> 0000000000000150 >> [ 0.987172] x26: 0000000000000009 x25: 0000000000000007 x24: >> ffff800009ab8958 >> [ 0.994347] x23: ffff0000000a0000 x22: ffff800008eb77d8 x21: >> ffff000000225410 >> [ 1.001524] x20: ffff800008eb7808 x19: 0000000000000000 x18: >> 0000000000000000 >> [ 1.008697] x17: 702d78742d696d64 x16: 682d6b6c62696d64 x15: >> 68203a656d616e3e >> [ 1.015872] x14: 0000000000000000 x13: 70636468203a656d x12: >> 616e5f6370673e2d >> [ 1.023047] x11: 61746164203a6c72 x10: 74632d6b6c622e30 x9 : >> 7274632d6b6c622e >> [ 1.030222] x8 : 3030303063663233 x7 : 205d353039393738 x6 : >> ffff800009a240e0 >> [ 1.037397] x5 : 00000000ffffffd0 x4 : ffff800009c7b920 x3 : >> 00000000ffffffd0 >> [ 1.044572] x2 : ffff800009c7b8d0 x1 : ffff80000936ca78 x0 : >> 0000000000000000 >> [ 1.051749] Call trace: >> [ 1.054199] kobject_set_name_vargs+0x10/0xd0 >> [ 1.058574] dev_set_name+0x58/0x80 >> [ 1.062072] imx8mp_blk_ctrl_probe+0x5c0/0x660 >> [ 1.066534] platform_probe+0x64/0x100 >> [ 1.070297] call_driver_probe+0x28/0x140 >> [ 1.074322] really_probe+0xc0/0x334 >> [ 1.077909] __driver_probe_device+0x84/0x144 >> [ 1.082284] driver_probe_device+0x38/0x130 >> [ 1.086486] __driver_attach+0xac/0x244 >> [ 1.090334] bus_for_each_dev+0x6c/0xc0 >> [ 1.094184] driver_attach+0x20/0x30 >> [ 1.097772] bus_add_driver+0x174/0x244 >> [ 1.101622] driver_register+0x74/0x120 >> [ 1.105474] __platform_driver_register+0x24/0x30 >> [ 1.110197] imx8mp_blk_ctrl_driver_init+0x18/0x20 >> [ 1.115009] do_one_initcall+0x58/0x200 >> [ 1.118861] do_initcalls+0x164/0x19c >> [ 1.122534] kernel_init_freeable+0x134/0x17c >> [ 1.126909] kernel_init+0x2c/0x150 >> [ 1.130411] ret_from_fork+0x10/0x20 >> [ 1.134003] Code: a9bb7bfd 910003fd a90153f3 aa0003f3 (f9400000) >> [ 1.140127] ---[ end trace 0000000000000000 ]--- >> >> Adding some debug out shows: >> [ 0.866795] imx8mp-blk-ctrl 32fc0000.blk-ctrl: domain->power_dev: 0x0 >> [ 0.873257] imx8mp-blk-ctrl 32fc0000.blk-ctrl: data->name: >> hdmiblk-hdcp >> [ 0.879905] imx8mp-blk-ctrl 32fc0000.blk-ctrl: data->gpc_name: hdcp >> >> AFAICS the power domains 'hrv' and 'hdcp' are missing in the >> 'hdmi_blk_ctrl: >> blk-ctrl@32fc0000' node thus resulting in a NULL pointer from calling >> dev_pm_domain_attach_by_name().
yes, you are correct.
Should add hrv/hdcp entry in hdmi_blk_ctrl node to Lucas's patch: https://lore.kernel.org/all/20220826192932.3217260-1-l.stach@pengutronix.de/
Regards, Peng.
> > The HDMI blk ctrl dts not landed in Shawn's branch, could you share me > your dts change? > > And dev_set_name, as I recall, Lucas has a patch to remove that. > > Regards, > Peng. > >> >> Is there a patch I am missing. >> >> Best regards, >> Alexander >> >>
| |