Skip to contentSkip to conversation

ARM: S3C6410: Use device names for both I2C clocks

PATCH New Mark Brown 2 participants 3 messages Nov 8, 2011

Subsystems (3)
lore
Share & tools
lore

Mark Brown

author
#0 lore raw

PATCH 1/1 ARM: S3C6410: Use device names for both I2C clocks

When the S3C64xx CPUs were converted to clkdev mappings were added for the I2C controllers on them. On S3C6410 a device name is specified for I2C controller 1 but not for controller 0 which makes the code less robust as we'll falsely return the clock for controller 0 if there's an error in the request for controller 1.

Improve things by registering a device name for controller 0 as well. Due to the fact that we change the numbering for controller 0 depending on if we've registered controller 1 this requires an ifdef to choose the name.

---
 arch/arm/mach-s3c64xx/clock.c |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)
arch/arm/mach-s3c64xx/clock.c +5 -0
index 39c238d..52b264e 100644
@@ -138,6 +138,11 @@ static struct clk init_clocks_off[] = {
 		.ctrlbit	= S3C_CLKCON_PCLK_TSADC,
 	}, {
 		.name		= "i2c",
+#ifdef CONFIG_S3C_DEV_I2C1
+		.devname        = "s3c2440-i2c.0",
+#else
+		.devname	= "s3c2440-i2c",
+#endif
 		.parent		= &clk_p,
 		.enable		= s3c64xx_pclk_ctrl,
 		.ctrlbit	= S3C_CLKCON_PCLK_IIC,
Signature · 1 line
1.7.7.1
#1 lore raw

PATCH 1/1 ARM: S3C6410: Use device names for both I2C clocks

Quoted 21 lines · Mark Brown

When the S3C64xx CPUs were converted to clkdev mappings were added for the I2C controllers on them. On S3C6410 a device name is specified for I2C controller 1 but not for controller 0 which makes the code less robust as we'll falsely return the clock for controller 0 if there's an error in the request for controller 1.

Improve things by registering a device name for controller 0 as well. Due to the fact that we change the numbering for controller 0 depending on if we've registered controller 1 this requires an ifdef to choose the name.

---
?arch/arm/mach-s3c64xx/clock.c | ? ?5 +++++
?1 files changed, 5 insertions(+), 0 deletions(-)

arch/arm/mach-s3c64xx/clock.c +0 -0
index 39c238d..52b264e 100644
@@ -138,6 +138,11 @@ static struct clk init_clocks_off[] = {
 ? ? ? ? ? ? ? ?.ctrlbit ? ? ? ?= S3C_CLKCON_PCLK_TSADC,

arch/arm/mach-s3c64xx/clock.c static struct clk init_clocks_off[] = { · line 148

Quoted 10 lines
arch/arm/mach-s3c64xx/clock.c +5 -0
 ? ? ? ?}, {
 ? ? ? ? ? ? ? ?.name ? ? ? ? ? = "i2c",
+#ifdef CONFIG_S3C_DEV_I2C1
+ ? ? ? ? ? ? ? .devname ? ? ? ?= "s3c2440-i2c.0",
+#else
+ ? ? ? ? ? ? ? .devname ? ? ? ?= "s3c2440-i2c",
+#endif
 ? ? ? ? ? ? ? ?.parent ? ? ? ? = &clk_p,
 ? ? ? ? ? ? ? ?.enable ? ? ? ? = s3c64xx_pclk_ctrl,
 ? ? ? ? ? ? ? ?.ctrlbit ? ? ? ?= S3C_CLKCON_PCLK_IIC,

The #ifdef around the id of the s3c_device_i2c0 structure in arch/arm/plat-samsung/devs.c file can be removed and id can be fixed as 0. And devname "s3c2440-i2c.0" can be assigned above without the #ifdef. Will there be any issues in using .id as 0 even if there is only one instance of i2c?

Thanks,
Thomas.

author
#2 lore raw

PATCH 1/1 ARM: S3C6410: Use device names for both I2C clocks

Quoted 13 lines · Thomas Abraham

On 8 November 2011 21:39, Mark Brown

arch/arm/mach-s3c64xx/clock.c static struct clk init_clocks_off[] = { · line 145

Quoted 5 lines
arch/arm/mach-s3c64xx/clock.c +5 -0
+#ifdef CONFIG_S3C_DEV_I2C1
+ ? ? ? ? ? ? ? .devname ? ? ? ?= "s3c2440-i2c.0",
+#else
+ ? ? ? ? ? ? ? .devname ? ? ? ?= "s3c2440-i2c",
+#endif

The #ifdef around the id of the s3c_device_i2c0 structure in arch/arm/plat-samsung/devs.c file can be removed and id can be fixed as 0. And devname "s3c2440-i2c.0" can be assigned above without the #ifdef. Will there be any issues in using .id as 0 even if there is only one instance of i2c?

That would be much nicer from my point of view but it's much more invasive as this device is used by a whole raft of other SoCs, not all of which have more than one I2C controller and I don't really feel like changing the idiom over the entire Samsung SoC family right now.