Re: [PATCH 2/2] clk: sunxi-ng: h616: Add clock/reset for LCD TCON

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 12 Feb 2025 13:11:09 -0600
Chris Morgan <macroalpha82@xxxxxxxxx> wrote:

> From: Chris Morgan <macromorgan@xxxxxxxxxxx>
> 
> Add the required clock and reset which is used for the LCD TCON.

Please mention here (and in the cover letter) that while those clocks
do exist on every H616 die, the respective LCD controllers are not
exposed on the H616 package, but only on the T507 and H700 version.

> 
> Signed-off-by: Chris Morgan <macromorgan@xxxxxxxxxxx>

Apart from the part, I compared the code against the T507 manual, that
is a match:

Reviewed-by: Andre Przywara <andre.przywara@xxxxxxx>

Cheers,
Andre

> ---
>  drivers/clk/sunxi-ng/ccu-sun50i-h616.c | 24 ++++++++++++++++++++++++
>  drivers/clk/sunxi-ng/ccu-sun50i-h616.h |  2 +-
>  2 files changed, 25 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/clk/sunxi-ng/ccu-sun50i-h616.c b/drivers/clk/sunxi-ng/ccu-sun50i-h616.c
> index 190816c35da9..40ab6873b797 100644
> --- a/drivers/clk/sunxi-ng/ccu-sun50i-h616.c
> +++ b/drivers/clk/sunxi-ng/ccu-sun50i-h616.c
> @@ -645,6 +645,20 @@ static const char * const tcon_tv_parents[] = { "pll-video0",
>  						"pll-video0-4x",
>  						"pll-video1",
>  						"pll-video1-4x" };
> +static SUNXI_CCU_MUX_WITH_GATE(tcon_lcd0_clk, "tcon-lcd0",
> +			       tcon_tv_parents, 0xb60,
> +			       24, 3,	/* mux */
> +			       BIT(31),	/* gate */
> +			       CLK_SET_RATE_PARENT);
> +static SUNXI_CCU_MUX_WITH_GATE(tcon_lcd1_clk, "tcon-lcd1",
> +			       tcon_tv_parents, 0xb64,
> +			       24, 3,	/* mux */
> +			       BIT(31),	/* gate */
> +			       CLK_SET_RATE_PARENT);
> +static SUNXI_CCU_GATE(bus_tcon_lcd0_clk, "bus-tcon-lcd0", "ahb3",
> +		      0xb7c, BIT(0), 0);
> +static SUNXI_CCU_GATE(bus_tcon_lcd1_clk, "bus-tcon-lcd1", "ahb3",
> +		      0xb7c, BIT(1), 0);
>  static SUNXI_CCU_MP_WITH_MUX_GATE(tcon_tv0_clk, "tcon-tv0",
>  				  tcon_tv_parents, 0xb80,
>  				  0, 4,		/* M */
> @@ -855,8 +869,12 @@ static struct ccu_common *sun50i_h616_ccu_clks[] = {
>  	&hdmi_cec_clk.common,
>  	&bus_hdmi_clk.common,
>  	&bus_tcon_top_clk.common,
> +	&tcon_lcd0_clk.common,
> +	&tcon_lcd1_clk.common,
>  	&tcon_tv0_clk.common,
>  	&tcon_tv1_clk.common,
> +	&bus_tcon_lcd0_clk.common,
> +	&bus_tcon_lcd1_clk.common,
>  	&bus_tcon_tv0_clk.common,
>  	&bus_tcon_tv1_clk.common,
>  	&tve0_clk.common,
> @@ -989,8 +1007,12 @@ static struct clk_hw_onecell_data sun50i_h616_hw_clks = {
>  		[CLK_HDMI_CEC]		= &hdmi_cec_clk.common.hw,
>  		[CLK_BUS_HDMI]		= &bus_hdmi_clk.common.hw,
>  		[CLK_BUS_TCON_TOP]	= &bus_tcon_top_clk.common.hw,
> +		[CLK_TCON_LCD0]		= &tcon_lcd0_clk.common.hw,
> +		[CLK_TCON_LCD1]		= &tcon_lcd1_clk.common.hw,
>  		[CLK_TCON_TV0]		= &tcon_tv0_clk.common.hw,
>  		[CLK_TCON_TV1]		= &tcon_tv1_clk.common.hw,
> +		[CLK_BUS_TCON_LCD0]	= &bus_tcon_lcd0_clk.common.hw,
> +		[CLK_BUS_TCON_LCD1]	= &bus_tcon_lcd1_clk.common.hw,
>  		[CLK_BUS_TCON_TV0]	= &bus_tcon_tv0_clk.common.hw,
>  		[CLK_BUS_TCON_TV1]	= &bus_tcon_tv1_clk.common.hw,
>  		[CLK_TVE0]		= &tve0_clk.common.hw,
> @@ -1062,6 +1084,8 @@ static const struct ccu_reset_map sun50i_h616_ccu_resets[] = {
>  	[RST_BUS_HDMI]		= { 0xb1c, BIT(16) },
>  	[RST_BUS_HDMI_SUB]	= { 0xb1c, BIT(17) },
>  	[RST_BUS_TCON_TOP]	= { 0xb5c, BIT(16) },
> +	[RST_BUS_TCON_LCD0]	= { 0xb7c, BIT(16) },
> +	[RST_BUS_TCON_LCD1]	= { 0xb7c, BIT(17) },
>  	[RST_BUS_TCON_TV0]	= { 0xb9c, BIT(16) },
>  	[RST_BUS_TCON_TV1]	= { 0xb9c, BIT(17) },
>  	[RST_BUS_TVE_TOP]	= { 0xbbc, BIT(16) },
> diff --git a/drivers/clk/sunxi-ng/ccu-sun50i-h616.h b/drivers/clk/sunxi-ng/ccu-sun50i-h616.h
> index a75803b49f6a..7056f293a8e0 100644
> --- a/drivers/clk/sunxi-ng/ccu-sun50i-h616.h
> +++ b/drivers/clk/sunxi-ng/ccu-sun50i-h616.h
> @@ -51,6 +51,6 @@
>  
>  #define CLK_BUS_DRAM		56
>  
> -#define CLK_NUMBER		(CLK_BUS_GPADC + 1)
> +#define CLK_NUMBER		(CLK_BUS_TCON_LCD1 + 1)
>  
>  #endif /* _CCU_SUN50I_H616_H_ */





[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux