[PATCH v2 3/7] clk: exynos5420: Rename clock IDs

Shaik Ameer Basha shaik.samsung at gmail.com
Sun Apr 20 01:32:13 PDT 2014


Hi Tomasz,

Thanks for the review comments.

On Tue, Apr 15, 2014 at 10:33 PM, Tomasz Figa <tomasz.figa at gmail.com> wrote:
> Hi Shaik,
>
>
> On 27.03.2014 12:07, Shaik Ameer Basha wrote:
>>
>> From: Rahul Sharma <rahul.sharma at samsung.com>
>>
>> This patch renames the clock IDs used for the DT bindings as
>> per Exynos5420 datasheet.
>>
>> Signed-off-by: Rahul Sharma <rahul.sharma at samsung.com>
>> Signed-off-by: Shaik Ameer Basha <shaik.ameer at samsung.com>
>> ---
>>   drivers/clk/samsung/clk-exynos5420.c   |  162
>> +++++++++++++++++---------------
>>   include/dt-bindings/clock/exynos5420.h |  138
>> +++++++++++++--------------
>>   2 files changed, 154 insertions(+), 146 deletions(-)
>>
>> diff --git a/drivers/clk/samsung/clk-exynos5420.c
>> b/drivers/clk/samsung/clk-exynos5420.c
>> index 3d0fb77..1402554 100644
>> --- a/drivers/clk/samsung/clk-exynos5420.c
>> +++ b/drivers/clk/samsung/clk-exynos5420.c
>> @@ -544,8 +544,8 @@ static struct samsung_div_clock exynos5420_div_clks[]
>> __initdata = {
>>
>>   static struct samsung_gate_clock exynos5420_gate_clks[] __initdata = {
>>         /* TODO: Re-verify the CG bits for all the gate clocks */
>> -       GATE_A(CLK_MCT, "pclk_st", "aclk66_psgen", GATE_BUS_PERIS1, 2, 0,
>> 0,
>> -               "mct"),
>> +       GATE_A(CLK_PCLK_MCT, "pclk_st", "aclk66_psgen",
>> +                       GATE_BUS_PERIS1, 2, 0, 0, "mct"),

True. I think somehow i missed it. I will fix that.

>
>
> Clock IDs should generally match clock names, while this one obviously does
> not. Either you should update both, or... (see below)
>
>
>>
>>         GATE(0, "aclk200_fsys", "mout_user_aclk200_fsys",
>>                         GATE_BUS_FSYS0, 9, CLK_IGNORE_UNUSED, 0),
>> @@ -643,83 +643,90 @@ static struct samsung_gate_clock
>> exynos5420_gate_clks[] __initdata = {
>>                 GATE_TOP_SCLK_MAU, 1, CLK_SET_RATE_PARENT, 0),
>>         /* FSYS */
>>         GATE(CLK_TSI, "tsi", "aclk200_fsys", GATE_BUS_FSYS0, 0, 0, 0),
>> -       GATE(CLK_PDMA0, "pdma0", "aclk200_fsys", GATE_BUS_FSYS0, 1, 0, 0),
>> -       GATE(CLK_PDMA1, "pdma1", "aclk200_fsys", GATE_BUS_FSYS0, 2, 0, 0),
>> +       GATE(CLK_ACLK_PDMA0, "pdma0", "aclk200_fsys", GATE_BUS_FSYS0, 1,
>> 0, 0),
>> +       GATE(CLK_ACLK_PDMA1, "pdma1", "aclk200_fsys", GATE_BUS_FSYS0, 2,
>> 0, 0),
>>         GATE(CLK_UFS, "ufs", "aclk200_fsys2", GATE_BUS_FSYS0, 3, 0, 0),
>> -       GATE(CLK_RTIC, "rtic", "aclk200_fsys", GATE_BUS_FSYS0, 5, 0, 0),
>> -       GATE(CLK_MMC0, "mmc0", "aclk200_fsys2", GATE_BUS_FSYS0, 12, 0, 0),
>> -       GATE(CLK_MMC1, "mmc1", "aclk200_fsys2", GATE_BUS_FSYS0, 13, 0, 0),
>> -       GATE(CLK_MMC2, "mmc2", "aclk200_fsys2", GATE_BUS_FSYS0, 14, 0, 0),
>> -       GATE(CLK_SROMC, "sromc", "aclk200_fsys2",
>> +       GATE(CLK_ACLK_RTIC, "rtic", "aclk200_fsys", GATE_BUS_FSYS0, 5, 0,
>> 0),
>> +       GATE(CLK_ACLK_MMC0, "mmc0", "aclk200_fsys2", GATE_BUS_FSYS0, 12,
>> 0, 0),
>> +       GATE(CLK_ACLK_MMC1, "mmc1", "aclk200_fsys2", GATE_BUS_FSYS0, 13,
>> 0, 0),
>> +       GATE(CLK_ACLK_MMC2, "mmc2", "aclk200_fsys2", GATE_BUS_FSYS0, 14,
>> 0, 0),
>> +       GATE(CLK_HCLK_SROMC, "sromc", "aclk200_fsys2",
>>                         GATE_BUS_FSYS0, 19, CLK_IGNORE_UNUSED, 0),
>> -       GATE(CLK_USBH20, "usbh20", "aclk200_fsys", GATE_BUS_FSYS0, 20, 0,
>> 0),
>> -       GATE(CLK_USBD300, "usbd300", "aclk200_fsys", GATE_BUS_FSYS0, 21,
>> 0, 0),
>> -       GATE(CLK_USBD301, "usbd301", "aclk200_fsys", GATE_BUS_FSYS0, 28,
>> 0, 0),
>> +       GATE(CLK_HCLK_USBH20, "usbh20", "aclk200_fsys",
>> +                       GATE_BUS_FSYS0, 20, 0, 0),
>> +       GATE(CLK_HCLK_USBD300, "usbd300", "aclk200_fsys",
>> +                       GATE_BUS_FSYS0, 21, 0, 0),
>> +       GATE(CLK_HCLK_USBD301, "usbd301", "aclk200_fsys",
>> +                       GATE_BUS_FSYS0, 28, 0, 0),
>>
>>         /* UART */
>> -       GATE(CLK_UART0, "uart0", "aclk66_peric", GATE_BUS_PERIC, 4, 0, 0),
>> -       GATE(CLK_UART1, "uart1", "aclk66_peric", GATE_BUS_PERIC, 5, 0, 0),
>> -       GATE_A(CLK_UART2, "uart2", "aclk66_peric",
>> +       GATE(CLK_PCLK_UART0, "uart0", "aclk66_peric", GATE_BUS_PERIC, 4,
>> 0, 0),
>> +       GATE(CLK_PCLK_UART1, "uart1", "aclk66_peric", GATE_BUS_PERIC, 5,
>> 0, 0),
>> +       GATE_A(CLK_PCLK_UART2, "uart2", "aclk66_peric",
>>                 GATE_BUS_PERIC, 6, CLK_IGNORE_UNUSED, 0, "uart2"),
>> -       GATE(CLK_UART3, "uart3", "aclk66_peric", GATE_BUS_PERIC, 7, 0, 0),
>> +       GATE(CLK_PCLK_UART3, "uart3", "aclk66_peric", GATE_BUS_PERIC, 7,
>> 0, 0),
>>         /* I2C */
>> -       GATE(CLK_I2C0, "i2c0", "aclk66_peric", GATE_BUS_PERIC, 9, 0, 0),
>> -       GATE(CLK_I2C1, "i2c1", "aclk66_peric", GATE_BUS_PERIC, 10, 0, 0),
>> -       GATE(CLK_I2C2, "i2c2", "aclk66_peric", GATE_BUS_PERIC, 11, 0, 0),
>> -       GATE(CLK_I2C3, "i2c3", "aclk66_peric", GATE_BUS_PERIC, 12, 0, 0),
>> -       GATE(CLK_I2C4, "i2c4", "aclk66_peric", GATE_BUS_PERIC, 13, 0, 0),
>> -       GATE(CLK_I2C5, "i2c5", "aclk66_peric", GATE_BUS_PERIC, 14, 0, 0),
>> -       GATE(CLK_I2C6, "i2c6", "aclk66_peric", GATE_BUS_PERIC, 15, 0, 0),
>> -       GATE(CLK_I2C7, "i2c7", "aclk66_peric", GATE_BUS_PERIC, 16, 0, 0),
>> -       GATE(CLK_I2C_HDMI, "i2c_hdmi", "aclk66_peric", GATE_BUS_PERIC, 17,
>> 0,
>> -               0),
>> -       GATE(CLK_TSADC, "tsadc", "aclk66_peric", GATE_BUS_PERIC, 18, 0,
>> 0),
>> +       GATE(CLK_PCLK_I2C0, "i2c0", "aclk66_peric", GATE_BUS_PERIC, 9, 0,
>> 0),
>> +       GATE(CLK_PCLK_I2C1, "i2c1", "aclk66_peric", GATE_BUS_PERIC, 10, 0,
>> 0),
>> +       GATE(CLK_PCLK_I2C2, "i2c2", "aclk66_peric", GATE_BUS_PERIC, 11, 0,
>> 0),
>> +       GATE(CLK_PCLK_I2C3, "i2c3", "aclk66_peric", GATE_BUS_PERIC, 12, 0,
>> 0),
>> +       GATE(CLK_PCLK_I2C_HDMI, "i2c_hdmi", "aclk66_peric",
>> +                       GATE_BUS_PERIC, 17, 0, 0),
>> +       GATE(CLK_PCLK_TSADC, "tsadc", "aclk66_peric", GATE_BUS_PERIC, 18,
>> 0, 0),
>>         /* SPI */
>> -       GATE(CLK_SPI0, "spi0", "aclk66_peric", GATE_BUS_PERIC, 19, 0, 0),
>> -       GATE(CLK_SPI1, "spi1", "aclk66_peric", GATE_BUS_PERIC, 20, 0, 0),
>> -       GATE(CLK_SPI2, "spi2", "aclk66_peric", GATE_BUS_PERIC, 21, 0, 0),
>> +       GATE(CLK_PCLK_SPI0, "spi0", "aclk66_peric", GATE_BUS_PERIC, 19, 0,
>> 0),
>> +       GATE(CLK_PCLK_SPI1, "spi1", "aclk66_peric", GATE_BUS_PERIC, 20, 0,
>> 0),
>> +       GATE(CLK_PCLK_SPI2, "spi2", "aclk66_peric", GATE_BUS_PERIC, 21, 0,
>> 0),
>>         GATE(CLK_KEYIF, "keyif", "aclk66_peric", GATE_BUS_PERIC, 22, 0,
>> 0),
>>         /* I2S */
>> -       GATE(CLK_I2S1, "i2s1", "aclk66_peric", GATE_BUS_PERIC, 23, 0, 0),
>> -       GATE(CLK_I2S2, "i2s2", "aclk66_peric", GATE_BUS_PERIC, 24, 0, 0),
>> +       GATE(CLK_PCLK_I2S1, "i2s1", "aclk66_peric", GATE_BUS_PERIC, 23, 0,
>> 0),
>> +       GATE(CLK_PCLK_I2S2, "i2s2", "aclk66_peric", GATE_BUS_PERIC, 24, 0,
>> 0),
>>         /* PCM */
>> -       GATE(CLK_PCM1, "pcm1", "aclk66_peric", GATE_BUS_PERIC, 25, 0, 0),
>> -       GATE(CLK_PCM2, "pcm2", "aclk66_peric", GATE_BUS_PERIC, 26, 0, 0),
>> +       GATE(CLK_PCLK_PCM1, "pcm1", "aclk66_peric", GATE_BUS_PERIC, 25, 0,
>> 0),
>> +       GATE(CLK_PCLK_PCM2, "pcm2", "aclk66_peric", GATE_BUS_PERIC, 26, 0,
>> 0),
>>         /* PWM */
>> -       GATE(CLK_PWM, "pwm", "aclk66_peric", GATE_BUS_PERIC, 27, 0, 0),
>> +       GATE(CLK_PCLK_PWM, "pwm", "aclk66_peric", GATE_BUS_PERIC, 27, 0,
>> 0),
>>         /* SPDIF */
>> -       GATE(CLK_SPDIF, "spdif", "aclk66_peric", GATE_BUS_PERIC, 29, 0,
>> 0),
>> -
>> -       GATE(CLK_I2C8, "i2c8", "aclk66_peric", GATE_BUS_PERIC1, 0, 0, 0),
>> -       GATE(CLK_I2C9, "i2c9", "aclk66_peric", GATE_BUS_PERIC1, 1, 0, 0),
>> -       GATE(CLK_I2C10, "i2c10", "aclk66_peric", GATE_BUS_PERIC1, 2, 0,
>> 0),
>> +       GATE(CLK_PCLK_SPDIF, "spdif", "aclk66_peric", GATE_BUS_PERIC, 29,
>> 0, 0),
>>
>> -       GATE(CLK_CHIPID, "chipid", "aclk66_psgen",
>> +       GATE(CLK_PCLK_CHIPID, "chipid", "aclk66_psgen",
>>                         GATE_BUS_PERIS0, 12, CLK_IGNORE_UNUSED, 0),
>> -       GATE(CLK_SYSREG, "sysreg", "aclk66_psgen",
>> +       GATE(CLK_PCLK_SYSREG, "sysreg", "aclk66_psgen",
>>                         GATE_BUS_PERIS0, 13, CLK_IGNORE_UNUSED, 0),
>> -       GATE(CLK_TZPC0, "tzpc0", "aclk66_psgen", GATE_BUS_PERIS0, 18, 0,
>> 0),
>> -       GATE(CLK_TZPC1, "tzpc1", "aclk66_psgen", GATE_BUS_PERIS0, 19, 0,
>> 0),
>> -       GATE(CLK_TZPC2, "tzpc2", "aclk66_psgen", GATE_BUS_PERIS0, 20, 0,
>> 0),
>> -       GATE(CLK_TZPC3, "tzpc3", "aclk66_psgen", GATE_BUS_PERIS0, 21, 0,
>> 0),
>> -       GATE(CLK_TZPC4, "tzpc4", "aclk66_psgen", GATE_BUS_PERIS0, 22, 0,
>> 0),
>> -       GATE(CLK_TZPC5, "tzpc5", "aclk66_psgen", GATE_BUS_PERIS0, 23, 0,
>> 0),
>> -       GATE(CLK_TZPC6, "tzpc6", "aclk66_psgen", GATE_BUS_PERIS0, 24, 0,
>> 0),
>> -       GATE(CLK_TZPC7, "tzpc7", "aclk66_psgen", GATE_BUS_PERIS0, 25, 0,
>> 0),
>> -       GATE(CLK_TZPC8, "tzpc8", "aclk66_psgen", GATE_BUS_PERIS0, 26, 0,
>> 0),
>> -       GATE(CLK_TZPC9, "tzpc9", "aclk66_psgen", GATE_BUS_PERIS0, 27, 0,
>> 0),
>> +       GATE(CLK_PCLK_TZPC0, "tzpc0", "aclk66_psgen",
>> +                       GATE_BUS_PERIS0, 18, 0, 0),
>> +       GATE(CLK_PCLK_TZPC1, "tzpc1", "aclk66_psgen",
>> +                       GATE_BUS_PERIS0, 19, 0, 0),
>> +       GATE(CLK_PCLK_TZPC2, "tzpc2", "aclk66_psgen",
>> +                       GATE_BUS_PERIS0, 20, 0, 0),
>> +       GATE(CLK_PCLK_TZPC3, "tzpc3", "aclk66_psgen",
>> +                       GATE_BUS_PERIS0, 21, 0, 0),
>> +       GATE(CLK_PCLK_TZPC4, "tzpc4", "aclk66_psgen",
>> +                       GATE_BUS_PERIS0, 22, 0, 0),
>> +       GATE(CLK_PCLK_TZPC5, "tzpc5", "aclk66_psgen",
>> +                       GATE_BUS_PERIS0, 23, 0, 0),
>> +       GATE(CLK_PCLK_TZPC6, "tzpc6", "aclk66_psgen",
>> +                       GATE_BUS_PERIS0, 24, 0, 0),
>> +       GATE(CLK_PCLK_TZPC7, "tzpc7", "aclk66_psgen",
>> +                       GATE_BUS_PERIS0, 25, 0, 0),
>> +       GATE(CLK_PCLK_TZPC8, "tzpc8", "aclk66_psgen",
>> +                       GATE_BUS_PERIS0, 26, 0, 0),
>> +       GATE(CLK_PCLK_TZPC9, "tzpc9", "aclk66_psgen",
>> +                       GATE_BUS_PERIS0, 27, 0, 0),
>>
>>         GATE(CLK_HDMI_CEC, "hdmi_cec", "aclk66_psgen", GATE_BUS_PERIS1, 0,
>> 0,
>>                 0),
>>         GATE(CLK_SECKEY, "seckey", "aclk66_psgen", GATE_BUS_PERIS1, 1, 0,
>> 0),
>> -       GATE(CLK_WDT, "wdt", "aclk66_psgen", GATE_BUS_PERIS1, 3, 0, 0),
>> -       GATE(CLK_RTC, "rtc", "aclk66_psgen", GATE_BUS_PERIS1, 4, 0, 0),
>> -       GATE(CLK_TMU, "tmu", "aclk66_psgen", GATE_BUS_PERIS1, 5, 0, 0),
>> -       GATE(CLK_TMU_GPU, "tmu_gpu", "aclk66_psgen", GATE_BUS_PERIS1, 6,
>> 0, 0),
>> +       GATE(CLK_PCLK_WDT, "wdt", "aclk66_psgen", GATE_BUS_PERIS1, 3, 0,
>> 0),
>> +       GATE(CLK_PCLK_RTC, "rtc", "aclk66_psgen", GATE_BUS_PERIS1, 4, 0,
>> 0),
>> +       GATE(CLK_PCLK_TMU, "tmu", "aclk66_psgen", GATE_BUS_PERIS1, 5, 0,
>> 0),
>> +       GATE(CLK_PCLK_TMU_GPU, "tmu_gpu", "aclk66_psgen",
>> +                       GATE_BUS_PERIS1, 6, 0, 0),
>>
>
> I'm starting to suspect that there is something wrong with this driver. Why
> does it use GATE_BUS_* registers? I believe they provide too fine grained
> control over clocks to suit expectations of our drivers, which usually need
> one "bus clock" gate and optionally one "special clock" gate.
>
> The problem with GATE_BUS_* bits is that they provide control over every
> single clock of over single IP and each IP can have multiple bus clocks
> (e.g. ACLK, PCLK, HCLK, etc.). Gating or ungating one is not enough to
> either properly save power or make the device operable. That's why all
> previous SoCs (Exynos4, Exynos5250) simply used GATE_IP_* registers that
> provide per IP control which matches what our drivers use.

True.
According to the datasheet for Exynos5420, Clock gating of any IP is
described like this

------>
Four types of clock gating control registers to disable/enable clock operation:
        [1] Clock gating control register for function block (CLK_GATE_BLOCK_*)
        [2] Clock gating control register for IP (CLK_GATE_IP_*)
        [3] Clock gating control register for special clocks
(CLK_GATE_SCLK_*, CLK_GATE_TOP_SCLK_*)
        [4] Clock gating control register for BUS (CLK_GATE_BUS_*)

Any combination of above four register are ANDed together to generate
a final clock gating enable signal.
As a result, if one of the combined register field is truned off, the
resulting clock stops.
For instance, in order to stop clocks that are provided to MIXER
module, one may set
        CLK_MIXER field in CLK_GATE_BUS_IP_DISP1 register to 0 or
        CLK_DISP1 field in CLK_GATE_BLOCK register to 0 or
        ACLK_MIXER field in CLK_GATE_BUS_DISP1 register to 0
<---------

But if we see the Exynos5250 datasheet, points [3], [4] are not mentioned.
Currently we are using point [4] to gate any IP wherever possible.

And even CLK_GATE_IP_* register also distinguishes between APB and AXI
clock gating.
For example, there are two different bits to gate APB and AXI clocks
separately in CLK_GATE_IP_GSCL0.

Register: CLK_GATE_IP_GSCL0
CLK_GSCALER1 - [15] -  Gating APB clock for GSCALER1,  0 = Masks and 1 = Passes
CLK_GSCALER0 - [14]  - Gating APB clock for GSCALER0,  0 = Masks and 1 = Passes

CLK_GSCL1 - [1]   - Gating AXI clock for SYSMMU_GSCALER1
                                 Gating AXI clock for QE_GSCALER1
                                 Gating AXI clock for GSCALER1
                                 0 = Masks and 1 = Passes

CLK_GSCL0 - [0]  - Gating AXI clock for SYSMMU_GSCALER0
                                Gating AXI clock for QE_GSCALER0
                                Gating AXI clock for GSCALER0
                                0 = Masks and 1 = Passes

Rahul may have other requirements for selecting this method [4] for
chrome project.
I hope he will clarify the same here.

For me, If I see no difference b/w using CLK_GATE_BUS_* and
CLK_GATE_IP_* registers,
then I will definitely interested to use the CLK_GATE_IP_* in the next series.

Incase if I see any difficulty in implementation with above method, I
will share with you and
provide a suitable workaround.

Regards,
Shaik Ameer Basha

>
> I need to verify this further in datasheet (as soon as I get access to
> one...), but I suspect this is plain wrong.
>
> Now, one side effect of using GATE_IP_* registers will be no need to add
> *CLK_ prefix to clock IDs as they would be simply gating the IPs, not their
> particular clocks.
>
>
>> -       GATE(CLK_GSCL0, "gscl0", "aclk300_gscl", GATE_IP_GSCL0, 0, 0, 0),
>> -       GATE(CLK_GSCL1, "gscl1", "aclk300_gscl", GATE_IP_GSCL0, 1, 0, 0),
>> -       GATE(CLK_CLK_3AA, "clk_3aa", "aclk300_gscl", GATE_IP_GSCL0, 4, 0,
>> 0),
>> +       GATE(CLK_ACLK_GSCL0, "gscl0", "aclk300_gscl", GATE_IP_GSCL0, 0, 0,
>> 0),
>> +       GATE(CLK_ACLK_GSCL1, "gscl1", "aclk300_gscl", GATE_IP_GSCL0, 1, 0,
>> 0),
>> +       GATE(CLK_ACLK_FIMC_3AA, "clk_3aa", "aclk300_gscl",
>> +                       GATE_IP_GSCL0, 4, 0, 0),
>>
>>         GATE(CLK_SMMU_3AA, "smmu_3aa", "aclk333_432_gscl", GATE_IP_GSCL1,
>> 2, 0,
>>                 0),
>> @@ -731,38 +738,39 @@ static struct samsung_gate_clock
>> exynos5420_gate_clks[] __initdata = {
>>                 0),
>>         GATE(CLK_SMMU_GSCL1, "smmu_gscl1", "aclk300_gscl", GATE_IP_GSCL1,
>> 7, 0,
>>                 0),
>> -       GATE(CLK_GSCL_WA, "gscl_wa", "aclk300_gscl", GATE_IP_GSCL1, 12, 0,
>> 0),
>> +       GATE(CLK_PCLK_GSCL_WA, "gscl_wa", "aclk300_gscl",
>> +                       GATE_IP_GSCL1, 12, 0, 0),
>>         GATE(CLK_GSCL_WB, "gscl_wb", "aclk300_gscl", GATE_IP_GSCL1, 13, 0,
>> 0),
>>         GATE(CLK_SMMU_FIMCL3, "smmu_fimcl3,", "aclk333_432_gscl",
>>                         GATE_IP_GSCL1, 16, 0, 0),
>> -       GATE(CLK_FIMC_LITE3, "fimc_lite3", "aclk333_432_gscl",
>> +       GATE(CLK_ACLK_FIMC_LITE3, "fimc_lite3", "aclk333_432_gscl",
>>                         GATE_IP_GSCL1, 17, 0, 0),
>>
>> -       GATE(CLK_FIMD1, "fimd1", "aclk300_disp1", GATE_IP_DISP1, 0, 0, 0),
>> -       GATE(CLK_DSIM1, "dsim1", "aclk200_disp1", GATE_IP_DISP1, 3, 0, 0),
>> -       GATE(CLK_DP1, "dp1", "aclk200_disp1", GATE_IP_DISP1, 4, 0, 0),
>> -       GATE(CLK_MIXER, "mixer", "aclk166", GATE_IP_DISP1, 5, 0, 0),
>> -       GATE(CLK_HDMI, "hdmi", "aclk200_disp1", GATE_IP_DISP1, 6, 0, 0),
>> -       GATE(CLK_SMMU_FIMD1, "smmu_fimd1", "aclk300_disp1", GATE_IP_DISP1,
>> 8, 0,
>> -               0),
>> +       GATE(CLK_ACLK_FIMD1, "fimd1", "aclk300_disp1", GATE_IP_DISP1, 0,
>> 0, 0),
>> +       GATE(CLK_PCLK_DSIM1, "dsim1", "aclk200_disp1", GATE_IP_DISP1, 3,
>> 0, 0),
>> +       GATE(CLK_PCLK_DP1, "dp1", "aclk200_disp1", GATE_IP_DISP1, 4, 0,
>> 0),
>> +       GATE(CLK_ACLK_MIXER, "mixer", "aclk166", GATE_IP_DISP1, 5, 0, 0),
>> +       GATE(CLK_PCLK_HDMI, "hdmi", "aclk200_disp1", GATE_IP_DISP1, 6, 0,
>> 0),
>> +       GATE(CLK_SMMU_FIMD1M0, "smmu_fimd1", "aclk300_disp1",
>> +                       GATE_IP_DISP1, 8, 0, 0),
>>
>> -       GATE(CLK_MFC, "mfc", "aclk333", GATE_IP_MFC, 0, 0, 0),
>> +       GATE(CLK_ACLK_MFC, "mfc", "aclk333", GATE_IP_MFC, 0, 0, 0),
>>         GATE(CLK_SMMU_MFCL, "smmu_mfcl", "aclk333", GATE_IP_MFC, 1, 0, 0),
>>         GATE(CLK_SMMU_MFCR, "smmu_mfcr", "aclk333", GATE_IP_MFC, 2, 0, 0),
>>
>>         GATE(CLK_G3D, "g3d", "aclkg3d", GATE_IP_G3D, 9, 0, 0),
>>
>> -       GATE(CLK_ROTATOR, "rotator", "aclk266", GATE_IP_GEN, 1, 0, 0),
>> -       GATE(CLK_JPEG, "jpeg", "aclk300_jpeg", GATE_IP_GEN, 2, 0, 0),
>> -       GATE(CLK_JPEG2, "jpeg2", "aclk300_jpeg", GATE_IP_GEN, 3, 0, 0),
>> -       GATE(CLK_MDMA1, "mdma1", "aclk266", GATE_IP_GEN, 4, 0, 0),
>> +       GATE(CLK_ACLK_ROTATOR, "rotator", "aclk266", GATE_IP_GEN, 1, 0,
>> 0),
>> +       GATE(CLK_ACLK_JPEG, "jpeg", "aclk300_jpeg", GATE_IP_GEN, 2, 0, 0),
>> +       GATE(CLK_ACLK_JPEG2, "jpeg2", "aclk300_jpeg", GATE_IP_GEN, 3, 0,
>> 0),
>> +       GATE(CLK_ACLK_MDMA1, "mdma1", "aclk266", GATE_IP_GEN, 4, 0, 0),
>>         GATE(CLK_SMMU_ROTATOR, "smmu_rotator", "aclk266", GATE_IP_GEN, 6,
>> 0, 0),
>>         GATE(CLK_SMMU_JPEG, "smmu_jpeg", "aclk300_jpeg", GATE_IP_GEN, 7,
>> 0, 0),
>>         GATE(CLK_SMMU_MDMA1, "smmu_mdma1", "aclk266", GATE_IP_GEN, 9, 0,
>> 0),
>>
>> -       GATE(CLK_MSCL0, "mscl0", "aclk400_mscl", GATE_IP_MSCL, 0, 0, 0),
>> -       GATE(CLK_MSCL1, "mscl1", "aclk400_mscl", GATE_IP_MSCL, 1, 0, 0),
>> -       GATE(CLK_MSCL2, "mscl2", "aclk400_mscl", GATE_IP_MSCL, 2, 0, 0),
>> +       GATE(CLK_ACLK_MSCL0, "mscl0", "aclk400_mscl", GATE_IP_MSCL, 0, 0,
>> 0),
>> +       GATE(CLK_ACLK_MSCL1, "mscl1", "aclk400_mscl", GATE_IP_MSCL, 1, 0,
>> 0),
>> +       GATE(CLK_ACLK_MSCL2, "mscl2", "aclk400_mscl", GATE_IP_MSCL, 2, 0,
>> 0),
>>         GATE(CLK_SMMU_MSCL0, "smmu_mscl0", "aclk400_mscl", GATE_IP_MSCL,
>> 8, 0,
>>                 0),
>>         GATE(CLK_SMMU_MSCL1, "smmu_mscl1", "aclk400_mscl", GATE_IP_MSCL,
>> 9, 0,
>> @@ -773,7 +781,7 @@ static struct samsung_gate_clock
>> exynos5420_gate_clks[] __initdata = {
>>                 0),
>>
>>         /* SSS */
>> -       GATE(CLK_SSS, "sss", "aclk266_g2d", GATE_IP_G2D, 2, 0, 0),
>> +       GATE(CLK_ACLK_SSS, "aclk_sss", "aclk266_g2d", GATE_IP_G2D, 2, 0,
>> 0),
>>   };
>>
>>   static struct samsung_pll_clock exynos5420_plls[nr_plls] __initdata = {
>> diff --git a/include/dt-bindings/clock/exynos5420.h
>> b/include/dt-bindings/clock/exynos5420.h
>> index e921913..598eb48 100644
>> --- a/include/dt-bindings/clock/exynos5420.h
>> +++ b/include/dt-bindings/clock/exynos5420.h
>> @@ -71,120 +71,120 @@
>>
>>   /* gate clocks */
>>   #define CLK_ACLK66_PERIC      256
>> -#define CLK_UART0              257
>> -#define CLK_UART1              258
>> -#define CLK_UART2              259
>> -#define CLK_UART3              260
>> -#define CLK_I2C0               261
>> -#define CLK_I2C1               262
>> -#define CLK_I2C2               263
>> -#define CLK_I2C3               264
>> +#define CLK_PCLK_UART0         257
>> +#define CLK_PCLK_UART1         258
>> +#define CLK_PCLK_UART2         259
>> +#define CLK_PCLK_UART3         260
>> +#define CLK_PCLK_I2C0          261
>> +#define CLK_PCLK_I2C1          262
>> +#define CLK_PCLK_I2C2          263
>> +#define CLK_PCLK_I2C3          264
>>   #define CLK_I2C4              265
>>   #define CLK_I2C5              266
>>   #define CLK_I2C6              267
>>   #define CLK_I2C7              268
>> -#define CLK_I2C_HDMI           269
>> -#define CLK_TSADC              270
>> -#define CLK_SPI0               271
>> -#define CLK_SPI1               272
>> -#define CLK_SPI2               273
>> +#define CLK_PCLK_I2C_HDMI      269
>> +#define CLK_PCLK_TSADC         270
>> +#define CLK_PCLK_SPI0          271
>> +#define CLK_PCLK_SPI1          272
>> +#define CLK_PCLK_SPI2          273
>>   #define CLK_KEYIF             274
>> -#define CLK_I2S1               275
>> -#define CLK_I2S2               276
>> -#define CLK_PCM1               277
>> -#define CLK_PCM2               278
>> -#define CLK_PWM                        279
>> -#define CLK_SPDIF              280
>> +#define CLK_PCLK_I2S1          275
>> +#define CLK_PCLK_I2S2          276
>> +#define CLK_PCLK_PCM1          277
>> +#define CLK_PCLK_PCM2          278
>> +#define CLK_PCLK_PWM           279
>> +#define CLK_PCLK_SPDIF         280
>>   #define CLK_I2C8              281
>>   #define CLK_I2C9              282
>>   #define CLK_I2C10             283
>>   #define CLK_ACLK66_PSGEN      300
>> -#define CLK_CHIPID             301
>> -#define CLK_SYSREG             302
>> -#define CLK_TZPC0              303
>> -#define CLK_TZPC1              304
>> -#define CLK_TZPC2              305
>> -#define CLK_TZPC3              306
>> -#define CLK_TZPC4              307
>> -#define CLK_TZPC5              308
>> -#define CLK_TZPC6              309
>> -#define CLK_TZPC7              310
>> -#define CLK_TZPC8              311
>> -#define CLK_TZPC9              312
>> +#define CLK_PCLK_CHIPID                301
>> +#define CLK_PCLK_SYSREG                302
>> +#define CLK_PCLK_TZPC0         303
>> +#define CLK_PCLK_TZPC1         304
>> +#define CLK_PCLK_TZPC2         305
>> +#define CLK_PCLK_TZPC3         306
>> +#define CLK_PCLK_TZPC4         307
>> +#define CLK_PCLK_TZPC5         308
>> +#define CLK_PCLK_TZPC6         309
>> +#define CLK_PCLK_TZPC7         310
>> +#define CLK_PCLK_TZPC8         311
>> +#define CLK_PCLK_TZPC9         312
>>   #define CLK_HDMI_CEC          313
>>   #define CLK_SECKEY            314
>> -#define CLK_MCT                        315
>> -#define CLK_WDT                        316
>> -#define CLK_RTC                        317
>> -#define CLK_TMU                        318
>> -#define CLK_TMU_GPU            319
>> +#define CLK_PCLK_MCT           315
>> +#define CLK_PCLK_WDT           316
>> +#define CLK_PCLK_RTC           317
>> +#define CLK_PCLK_TMU           318
>> +#define CLK_PCLK_TMU_GPU       319
>>   #define CLK_PCLK66_GPIO               330
>>   #define CLK_ACLK200_FSYS2     350
>> -#define CLK_MMC0               351
>> -#define CLK_MMC1               352
>> -#define CLK_MMC2               353
>> -#define CLK_SROMC              354
>> +#define CLK_ACLK_MMC0          351
>> +#define CLK_ACLK_MMC1          352
>> +#define CLK_ACLK_MMC2          353
>> +#define CLK_HCLK_SROMC         354
>>   #define CLK_UFS                       355
>>   #define CLK_ACLK200_FSYS      360
>>   #define CLK_TSI                       361
>> -#define CLK_PDMA0              362
>> -#define CLK_PDMA1              363
>> -#define CLK_RTIC               364
>> -#define CLK_USBH20             365
>> -#define CLK_USBD300            366
>> -#define CLK_USBD301            367
>> +#define CLK_ACLK_PDMA0         362
>> +#define CLK_ACLK_PDMA1         363
>> +#define CLK_ACLK_RTIC          364
>> +#define CLK_HCLK_USBH20                365
>> +#define CLK_HCLK_USBD300       366
>> +#define CLK_HCLK_USBD301       367
>>   #define CLK_PCLK200_FSYS      370
>>   #define CLK_ACLK400_MSCL      380
>> -#define CLK_MSCL0              381
>> -#define CLK_MSCL1              382
>> -#define CLK_MSCL2              383
>> +#define CLK_ACLK_MSCL0         381
>> +#define CLK_ACLK_MSCL1         382
>> +#define CLK_ACLK_MSCL2         383
>>   #define CLK_SMMU_MSCL0                384
>>   #define CLK_SMMU_MSCL1                385
>>   #define CLK_SMMU_MSCL2                386
>>   #define CLK_ACLK333           400
>> -#define CLK_MFC                        401
>> +#define CLK_ACLK_MFC           401
>>   #define CLK_SMMU_MFCL         402
>>   #define CLK_SMMU_MFCR         403
>>   #define CLK_ACLK200_DISP1     410
>> -#define CLK_DSIM1              411
>> -#define CLK_DP1                        412
>> -#define CLK_HDMI               413
>> +#define CLK_PCLK_DSIM1         411
>> +#define CLK_PCLK_DP1           412
>> +#define CLK_PCLK_HDMI          413
>>   #define CLK_ACLK300_DISP1     420
>> -#define CLK_FIMD1              421
>> -#define CLK_SMMU_FIMD1         422
>> +#define CLK_ACLK_FIMD1         421
>> +#define CLK_SMMU_FIMD1M0       422
>>   #define CLK_SMMU_FIMD1M1      423
>>   #define CLK_ACLK400_DISP1     424
>>   #define CLK_ACLK166           430
>> -#define CLK_MIXER              431
>> +#define CLK_ACLK_MIXER         431
>>   #define CLK_ACLK266           440
>> -#define CLK_ROTATOR            441
>> -#define CLK_MDMA1              442
>> +#define CLK_ACLK_ROTATOR       441
>> +#define CLK_ACLK_MDMA1         442
>>   #define CLK_SMMU_ROTATOR      443
>>   #define CLK_SMMU_MDMA1                444
>>   #define CLK_ACLK300_JPEG      450
>> -#define CLK_JPEG               451
>> -#define CLK_JPEG2              452
>> +#define CLK_ACLK_JPEG          451
>> +#define CLK_ACLK_JPEG2         452
>>   #define CLK_SMMU_JPEG         453
>>   #define CLK_ACLK300_GSCL      460
>>   #define CLK_SMMU_GSCL0                461
>>   #define CLK_SMMU_GSCL1                462
>> -#define CLK_GSCL_WA            463
>> +#define CLK_PCLK_GSCL_WA       463
>>   #define CLK_GSCL_WB           464
>> -#define CLK_GSCL0              465
>> -#define CLK_GSCL1              466
>> -#define CLK_CLK_3AA            467
>> +#define CLK_ACLK_GSCL0         465
>> +#define CLK_ACLK_GSCL1         466
>> +#define CLK_ACLK_FIMC_3AA      467
>>   #define CLK_ACLK266_G2D               470
>> -#define CLK_SSS                        471
>> -#define CLK_SLIM_SSS           472
>> -#define CLK_MDMA0              473
>> +#define CLK_ACLK_SSS           471
>> +#define CLK_ACLK_SLIM_SSS      472
>> +#define CLK_ACLK_MDMA0         473
>>   #define CLK_ACLK333_G2D               480
>> -#define CLK_G2D                        481
>> +#define CLK_ACLK_G2D           481
>>   #define CLK_ACLK333_432_GSCL  490
>>   #define CLK_SMMU_3AA          491
>>   #define CLK_SMMU_FIMCL0               492
>>   #define CLK_SMMU_FIMCL1               493
>>   #define CLK_SMMU_FIMCL3               494
>> -#define CLK_FIMC_LITE3         495
>> +#define CLK_ACLK_FIMC_LITE3    495
>>   #define CLK_G3D                       500
>>   #define CLK_SMMU_MIXER                502
>>   #define CLK_PCLK_TZPC10               503
>>
>
> As Gerhard already mentioned, this will break bisection of existing users of
> old macros, so this is a bad idea to change them this way.
>
> Anyway, most of those renames are mostly adding *CLK_ prefixes, so I really
> wonder if this is necessary, especially considering the GATE_BUS_* issue I
> mentioned above and that clock names (and parent names in all their
> children) would have to be updated as well. What do you think?
>
> Best regards,
> Tomasz



More information about the linux-arm-kernel mailing list