Re: [PATCH 4/5] ARM: SAMSUNG: Add clkdev support for exynos4

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

 



Hi Mr. Kyungmin Park,

On Mon, Mar 28, 2011 at 6:41 PM, Kyungmin Park <kmpark@xxxxxxxxxxxxx> wrote:
> Hi,
>
> On Mon, Mar 28, 2011 at 8:07 PM, Thomas Abraham <thomas.ab@xxxxxxxxxxx> wrote:
>> Add clkdev support for Samsung's Exynos4 platforms.
>>
>> Cc: Ben Dooks <ben-linux@xxxxxxxxx>
>> Signed-off-by: Thomas Abraham <thomas.ab@xxxxxxxxxxx>
>> ---
>>  arch/arm/Kconfig                            |    1 +
>>  arch/arm/mach-exynos4/clock.c               |   57 +++++++++++++++++++++++++++
>>  arch/arm/mach-exynos4/include/mach/clkdev.h |    7 +++
>>  arch/arm/mach-exynos4/time.c                |    2 +
>>  arch/arm/plat-samsung/pwm-clock.c           |   10 +++++
>>  5 files changed, 77 insertions(+), 0 deletions(-)
>>  create mode 100644 arch/arm/mach-exynos4/include/mach/clkdev.h
>>
>> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
>> index 93d595a..66f50f8 100644
>> --- a/arch/arm/Kconfig
>> +++ b/arch/arm/Kconfig
>> @@ -779,6 +779,7 @@ config ARCH_EXYNOS4
>>        select ARCH_SPARSEMEM_ENABLE
>>        select GENERIC_GPIO
>>        select HAVE_CLK
>> +       select CLKDEV_LOOKUP
>>        select ARCH_HAS_CPUFREQ
>>        select GENERIC_CLOCKEVENTS
>>        select HAVE_S3C_RTC if RTC_CLASS
>> diff --git a/arch/arm/mach-exynos4/clock.c b/arch/arm/mach-exynos4/clock.c
>> index 871f9d5..8e4dbf6 100644
>> --- a/arch/arm/mach-exynos4/clock.c
>> +++ b/arch/arm/mach-exynos4/clock.c
>> @@ -404,41 +404,49 @@ static struct clk init_clocks_off[] = {
>>                .ctrlbit        = (1<<24),
>>        }, {
>>                .name           = "csis",
>> +               .devname        = "s5p-mipi-csis.0",
>>                .id             = 0,
>>                .enable         = exynos4_clk_ip_cam_ctrl,
>>                .ctrlbit        = (1 << 4),

[...]

>>        }, {
>>                .name           = "fimc",
>> +               .devname        = "exynos4-fimc.3",
>>                .id             = 3,
>>                .enable         = exynos4_clk_ip_cam_ctrl,
>>                .ctrlbit        = (1 << 3),
>>        }, {
>>                .name           = "fimd",
>> +               .devname        = "s5pv310-fb.0",
>
> actually it doesn't yet determine which name is used at framebuffer,
> fimd or lcd.

The fb driver (drivers/video/s3c-fb.c) is using 'lcd' as the name of
the clock. So the name of the clock above 'fimd' will have to be
changed to 'lcd'. If a patch for that change is not already submitted,
I will submit a separate patch for that.

>
>>                .id             = 0,
>>                .enable         = exynos4_clk_ip_lcd0_ctrl,
>>                .ctrlbit        = (1 << 0),
>>        }, {

[...]

>>                .name           = "hsmmc",
>> +               .devname        = "s3c-sdhci.4",
> exynos4 has different host controller at channel 4. designeware
> dw_mmc. so please check it.

Thanks for pointing this out. The clock name will change for this
(need to still find a name). Since, this will be the only instance of
clock (.id = -1), the devname can be avoided. In the next revision of
this patch, I will remove the devname addition for this clock.

>
>>                .id             = 4,
>>                .parent         = &clk_aclk_133.clk,
>>                .enable         = exynos4_clk_ip_fsys_ctrl,
>> @@ -486,11 +499,13 @@ static struct clk init_clocks_off[] = {
>>                .ctrlbit        = (1 << 10),
>>        }, {
>>                .name           = "pdma",
>> +               .devname        = "s3c-pl330.0",
>>                .id             = 0,
>>                .enable         = exynos4_clk_ip_fsys_ctrl,
>>                .ctrlbit        = (1 << 0),

[...]

>>        }, {
>>                .name           = "iis",
>> +               .devname        = "samsung-i2s.0",
> does it still use the 'iis'?

The i2c driver uses the clock name as iis. So no change here.

>>                .id             = 0,
>>                .enable         = exynos4_clk_ip_peril_ctrl,
>>                .ctrlbit        = (1 << 19),
>>        }, {
>>                .name           = "iis",

[...]

>> diff --git a/arch/arm/mach-exynos4/include/mach/clkdev.h b/arch/arm/mach-exynos4/include/mach/clkdev.h
>> new file mode 100644
>> index 0000000..1247f5e
>> --- /dev/null
>> +++ b/arch/arm/mach-exynos4/include/mach/clkdev.h
>> @@ -0,0 +1,7 @@
>> +#ifndef __MACH_EXYNOS4_CLKDEV_H__
>> +#define __MACH_EXYNOS4_CLKDEV_H__
>> +
>> +#define __clk_get(clk) ({ 1; })
>> +#define __clk_put(clk) do { } while (0)
>> +
>> +#endif
>> diff --git a/arch/arm/mach-exynos4/time.c b/arch/arm/mach-exynos4/time.c
>> index 86b9fa0..cb63f97 100644
>> --- a/arch/arm/mach-exynos4/time.c
>> +++ b/arch/arm/mach-exynos4/time.c
>> @@ -262,6 +262,7 @@ static void __init exynos4_timer_resources(void)
>>        clk_enable(timerclk);
>>
>>        tmpdev.id = 2;
>> +       tmpdev.dev.init_name = "s3c24xx-pwm.2";
>
> what's this? why does it need at here?

platform_device instances are not registered for PWM timer's that are
used to generate the clock ticks. A un-registered version of
platform_device (tmpdev above) is used to lookup the clocks in this
case. Since this platform_device is unregistered and clk_get (when
using clkdev lookup) requires a devname, a temporary device name can
be assigned to the platform_device (refer to dev_name function in
include/linux/device.h file).

Thanks for your comments.

Regards,
Thomas.
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux SoC Development]     [Linux Rockchip Development]     [Linux USB Development]     [Video for Linux]     [Linux Audio Users]     [Linux SCSI]     [Yosemite News]

  Powered by Linux