ARM: EXYNOS4: Configure MAX8997 PMIC for Origen
Subsystems (3)
PATCH 1/1 ARM: EXYNOS4: Configure MAX8997 PMIC for Origen
From: Inderpal Singh <[email protected]>
Configure MAX8997 PMIC and provide platform specific data for origen.
--- arch/arm/mach-exynos4/mach-origen.c | 399 ++++++++++++++++++++++++++++++++++- 1 files changed, 398 insertions(+), 1 deletions(-)
arch/arm/mach-exynos4/mach-origen.c +398 -1
@@ -14,6 +14,9 @@#include <linux/platform_device.h> #include <linux/io.h> #include <linux/input.h> +#include <linux/i2c.h> +#include <linux/regulator/machine.h> +#include <linux/mfd/max8997.h> #include <asm/mach/arch.h> #include <asm/mach-types.h>
@@ -24,7 +27,7 @@#include <plat/devs.h> #include <plat/sdhci.h> #include <plat/iic.h> - +#include <plat/gpio-cfg.h> #include <mach/map.h> /* Following are default values for UCON, ULCON and UFCON UART registers */
@@ -72,6 +75,382 @@ static struct s3c2410_uartcfg origen_uartcfgs[] __initdata = { }, }; +static struct regulator_consumer_supply __initdata ldo3_consumer[] = { +REGULATOR_SUPPLY ("vdd11" ,"s5p-mipi-csis.0" ),/* MIPI */ +}; +static struct regulator_consumer_supply __initdata ldo6_consumer[] = { +REGULATOR_SUPPLY ("vdd18" ,"s5p-mipi-csis.0" ),/* MIPI */ +}; +static struct regulator_consumer_supply __initdata ldo7_consumer[] = { +REGULATOR_SUPPLY ("avdd" ,"soc-audio" ),/* Reatek ALC5625*/ +}; +static struct regulator_consumer_supply __initdata ldo8_consumer[] = { +REGULATOR_SUPPLY ("vdd" ,"s5p-adc" ),/* ADC */ +}; +static struct regulator_consumer_supply __initdata ldo9_consumer[] = { +REGULATOR_SUPPLY ("dvdd" ,"swb-a31" ),/* AR6003 WLAN & CSR 8810 BT*/ +}; +static struct regulator_consumer_supply __initdata ldo11_consumer[] = { +REGULATOR_SUPPLY ("dvdd" ,"soc-audio" ),/* Reatek ALC5625*/ +}; +static struct regulator_consumer_supply __initdata ldo14_consumer[] = { +REGULATOR_SUPPLY ("avdd18" ,"swb-a31" ),/* AR6003 WLAN & CSR 8810 BT*/ +}; +static struct regulator_consumer_supply __initdata ldo17_consumer[] = { +REGULATOR_SUPPLY ("vdd33" ,"swb-a31" ),/* AR6003 WLAN & CSR 8810 BT*/ +}; +static struct regulator_consumer_supply __initdata buck1_consumer[] = { +REGULATOR_SUPPLY ("vdd_arm" ,NULL ),/* CPUFREQ */ +}; +static struct regulator_consumer_supply __initdata buck2_consumer[] = { +REGULATOR_SUPPLY ("vdd_int" ,NULL ),/* CPUFREQ */ +}; +static struct regulator_consumer_supply __initdata buck3_consumer[] = { +REGULATOR_SUPPLY ("vdd_g3d" ,"mali_drm" ),/* G3D */ +}; +static struct regulator_consumer_supply __initdata buck7_consumer[] = { +REGULATOR_SUPPLY ("vcc" ,"platform-lcd" ),/* LCD */ +}; + +static struct regulator_init_data __initdata max8997_ldo1_data = { + .constraints = { + .name ="VDD_ABB_3.3V" , + .min_uV =3300000 , + .max_uV =3300000 , + .apply_uV =1 , + .state_mem = { + .disabled =1 , + }, + }, +}; + +static struct regulator_init_data __initdata max8997_ldo2_data = { + .constraints = { + .name ="VDD_ALIVE_1.1V" , + .min_uV =1100000 , + .max_uV =1100000 , + .apply_uV =1 , + .always_on =1 , + .state_mem = { + .enabled =1 , + }, + }, +}; + +static struct regulator_init_data __initdata max8997_ldo3_data = { + .constraints = { + .name ="VMIPI_1.1V" , + .min_uV =1100000 , + .max_uV =1100000 , + .apply_uV =1 , + .always_on =1 , + .valid_ops_mask =REGULATOR_CHANGE_STATUS , + .state_mem = { + .disabled =1 , + }, + }, + .num_consumer_supplies =ARRAY_SIZE (ldo3_consumer), + .consumer_supplies = ldo3_consumer, +}; + +static struct regulator_init_data __initdata max8997_ldo4_data = { + .constraints = { + .name ="VDD_RTC_1.8V" , + .min_uV =1800000 , + .max_uV =1800000 , + .apply_uV =1 , + .always_on =1 , + .state_mem = { + .disabled =1 , + }, + }, +}; + +static struct regulator_init_data __initdata max8997_ldo6_data = { + .constraints = { + .name ="VMIPI_1.8V" , + .min_uV =1800000 , + .max_uV =1800000 , + .apply_uV =1 , + .valid_ops_mask =REGULATOR_CHANGE_STATUS , + .state_mem = { + .disabled =1 , + }, + }, + .num_consumer_supplies =ARRAY_SIZE (ldo6_consumer), + .consumer_supplies = ldo6_consumer, +}; + +static struct regulator_init_data __initdata max8997_ldo7_data = { + .constraints = { + .name ="VDD_AUD_1.8V" , + .min_uV =1800000 , + .max_uV =1800000 , + .apply_uV =1 , + .always_on =1 , + .valid_ops_mask =REGULATOR_CHANGE_STATUS , + .state_mem = { + .disabled =1 , + }, + }, + .num_consumer_supplies =ARRAY_SIZE (ldo7_consumer), + .consumer_supplies = ldo7_consumer, +}; + +static struct regulator_init_data __initdata max8997_ldo8_data = { + .constraints = { + .name ="VADC_3.3V" , + .min_uV =3300000 , + .max_uV =3300000 , + .apply_uV =1 , + .always_on =1 , + .valid_ops_mask =REGULATOR_CHANGE_STATUS , + .state_mem = { + .disabled =1 , + }, + }, + .num_consumer_supplies =ARRAY_SIZE (ldo8_consumer), + .consumer_supplies = ldo8_consumer, +}; + +static struct regulator_init_data __initdata max8997_ldo9_data = { + .constraints = { + .name ="DVDD_SWB_2.8V" , + .min_uV =2800000 , + .max_uV =2800000 , + .apply_uV =1 , + .always_on =1 , + .valid_ops_mask =REGULATOR_CHANGE_VOLTAGE , + .state_mem = { + .disabled =1 , + }, + }, + .num_consumer_supplies =ARRAY_SIZE (ldo9_consumer), + .consumer_supplies = ldo9_consumer, +}; + +static struct regulator_init_data __initdata max8997_ldo10_data = { + .constraints = { + .name ="VDD_PLL_1.1V" , + .min_uV =1100000 , + .max_uV =1100000 , + .apply_uV =1 , + .always_on =1 , + .state_mem = { + .disabled =1 , + }, + }, +}; + +static struct regulator_init_data __initdata max8997_ldo11_data = { + .constraints = { + .name ="VDD_AUD_3V" , + .min_uV =3000000 , + .max_uV =3000000 , + .apply_uV =1 , + .always_on =1 , + .valid_ops_mask =REGULATOR_CHANGE_STATUS , + .state_mem = { + .disabled =1 , + }, + }, + .num_consumer_supplies =ARRAY_SIZE (ldo11_consumer), + .consumer_supplies = ldo11_consumer, +}; + +static struct regulator_init_data __initdata max8997_ldo14_data = { + .constraints = { + .name ="AVDD18_SWB_1.8V" , + .min_uV =1800000 , + .max_uV =1800000 , + .apply_uV =1 , + .valid_ops_mask =REGULATOR_CHANGE_STATUS , + .state_mem = { + .disabled =1 , + }, + }, + .num_consumer_supplies =ARRAY_SIZE (ldo14_consumer), + .consumer_supplies = ldo14_consumer, +}; + +static struct regulator_init_data __initdata max8997_ldo17_data = { + .constraints = { + .name ="VDD_SWB_3.3V" , + .min_uV =3300000 , + .max_uV =3300000 , + .apply_uV =1 , + .valid_ops_mask =REGULATOR_CHANGE_STATUS , + .state_mem = { + .disabled =1 , + }, + }, + .num_consumer_supplies =ARRAY_SIZE (ldo17_consumer), + .consumer_supplies = ldo17_consumer, +}; + +static struct regulator_init_data __initdata max8997_ldo21_data = { + .constraints = { + .name ="VDD_MIF_1.2V" , + .min_uV =1200000 , + .max_uV =1200000 , + .apply_uV =1 , + .always_on =1 , + .state_mem = { + .disabled =1 , + }, + }, +}; + +static struct regulator_init_data __initdata max8997_buck1_data = { + .constraints = { + .name ="VDD_ARM_1.2V" , + .min_uV =950000 , + .max_uV =1350000 , + .always_on =1 , + .boot_on =1 , + .valid_ops_mask =REGULATOR_CHANGE_VOLTAGE , + .state_mem = { + .disabled =1 , + }, + }, + .num_consumer_supplies =ARRAY_SIZE (buck1_consumer), + .consumer_supplies = buck1_consumer, +}; + +static struct regulator_init_data __initdata max8997_buck2_data = { + .constraints = { + .name ="VDD_INT_1.1V" , + .min_uV =900000 , + .max_uV =1100000 , + .always_on =1 , + .boot_on =1 , + .valid_ops_mask =REGULATOR_CHANGE_VOLTAGE , + .state_mem = { + .disabled =1 , + }, + }, + .num_consumer_supplies =ARRAY_SIZE (buck2_consumer), + .consumer_supplies = buck2_consumer, +}; + +static struct regulator_init_data __initdata max8997_buck3_data = { + .constraints = { + .name ="VDD_G3D_1.1V" , + .min_uV =900000 , + .max_uV =1100000 , + .valid_ops_mask =REGULATOR_CHANGE_VOLTAGE | +REGULATOR_CHANGE_STATUS , + .state_mem = { + .disabled =1 , + }, + }, + .num_consumer_supplies =ARRAY_SIZE (buck3_consumer), + .consumer_supplies = buck3_consumer, +}; + +static struct regulator_init_data __initdata max8997_buck5_data = { + .constraints = { + .name ="VDDQ_M1M2_1.2V" , + .min_uV =1200000 , + .max_uV =1200000 , + .apply_uV =1 , + .always_on =1 , + .state_mem = { + .disabled =1 , + }, + }, +}; + +static struct regulator_init_data __initdata max8997_buck7_data = { + .constraints = { + .name ="VDD_LCD_3.3V" , + .min_uV =3300000 , + .max_uV =3300000 , + .always_on =1 , + .apply_uV =1 , + .valid_ops_mask =REGULATOR_CHANGE_STATUS , + .state_mem = { + .disabled =1 + }, + }, + .num_consumer_supplies =ARRAY_SIZE (buck7_consumer), + .consumer_supplies = buck7_consumer, +}; + +static struct max8997_regulator_data __initdata origen_max8997_regulators[] = { + {MAX8997_LDO1 , &max8997_ldo1_data }, + {MAX8997_LDO2 , &max8997_ldo2_data }, + {MAX8997_LDO3 , &max8997_ldo3_data }, + {MAX8997_LDO4 , &max8997_ldo4_data }, + {MAX8997_LDO6 , &max8997_ldo6_data }, + {MAX8997_LDO7 , &max8997_ldo7_data }, + {MAX8997_LDO8 , &max8997_ldo8_data }, + {MAX8997_LDO9 , &max8997_ldo9_data }, + {MAX8997_LDO10 , &max8997_ldo10_data }, + {MAX8997_LDO11 , &max8997_ldo11_data }, + {MAX8997_LDO14 , &max8997_ldo14_data }, + {MAX8997_LDO17 , &max8997_ldo17_data }, + {MAX8997_LDO21 , &max8997_ldo21_data }, + {MAX8997_BUCK1 , &max8997_buck1_data }, + {MAX8997_BUCK2 , &max8997_buck2_data }, + {MAX8997_BUCK3 , &max8997_buck3_data }, + {MAX8997_BUCK5 , &max8997_buck5_data }, + {MAX8997_BUCK7 , &max8997_buck7_data }, +}; + +struct max8997_platform_data __initdata origen_max8997_pdata = { + .num_regulators =ARRAY_SIZE (origen_max8997_regulators), + .regulators = origen_max8997_regulators, + + .wakeup = true, + .buck1_gpiodvs = false, + .buck2_gpiodvs = false, + .buck5_gpiodvs = false, + + .ignore_gpiodvs_side_effect = true, + .buck125_default_idx =0x0 , + + .buck125_gpios[0 ] =EXYNOS4_GPX0 (0 ), + .buck125_gpios[1 ] =EXYNOS4_GPX0 (1 ), + .buck125_gpios[2 ] =EXYNOS4_GPX0 (2 ), + + .buck1_voltage[0 ] =1350000 , + .buck1_voltage[1 ] =1300000 , + .buck1_voltage[2 ] =1250000 , + .buck1_voltage[3 ] =1200000 , + .buck1_voltage[4 ] =1150000 , + .buck1_voltage[5 ] =1100000 , + .buck1_voltage[6 ] =1000000 , + .buck1_voltage[7 ] =950000 , + + .buck2_voltage[0 ] =1100000 , + .buck2_voltage[1 ] =1100000 , + .buck2_voltage[2 ] =1100000 , + .buck2_voltage[3 ] =1100000 , + .buck2_voltage[4 ] =1000000 , + .buck2_voltage[5 ] =1000000 , + .buck2_voltage[6 ] =1000000 , + .buck2_voltage[7 ] =1000000 , + + .buck5_voltage[0 ] =1200000 , + .buck5_voltage[1 ] =1200000 , + .buck5_voltage[2 ] =1200000 , + .buck5_voltage[3 ] =1200000 , + .buck5_voltage[4 ] =1200000 , + .buck5_voltage[5 ] =1200000 , + .buck5_voltage[6 ] =1200000 , + .buck5_voltage[7 ] =1200000 , +}; + +/* I2C0 */ +enum {I2C0_MAX8997 }; +static struct i2c_board_info i2c0_devs[]__initdata = { +[I2C0_MAX8997 ] = { +I2C_BOARD_INFO ("max8997" , (0xCC >>1 )), + .platform_data = &origen_max8997_pdata, + }, +}; +static struct s3c_sdhci_platdata origen_hsmmc2_pdata__initdata = { .cd_type =S3C_SDHCI_CD_GPIO , .ext_cd_gpio =EXYNOS4_GPK2 (2 ),
@@ -80,6 +459,7 @@ static struct s3c_sdhci_platdata origen_hsmmc2_pdata __initdata = { };static struct platform_device *origen_devices[]__initdata = { + &s3c_device_i2c0, &s3c_device_hsmmc2, &s3c_device_rtc, &s3c_device_wdt,
@@ -92,8 +472,25 @@ static void __init origen_map_io(void)s3c24xx_init_uarts (origen_uartcfgs,ARRAY_SIZE (origen_uartcfgs)); } +static void __init origen_power_init (void ) +{ +int gpio; +int irq_base =IRQ_GPIO_END +1 ; + + origen_max8997_pdata.irq_base = irq_base; + gpio =EXYNOS4_GPX0 (4 ); +s3c_gpio_cfgpin (gpio,S3C_GPIO_SFN (0xf )); +s3c_gpio_setpull (gpio,S3C_GPIO_PULL_NONE ); +} +static void __init origen_machine_init (void ) { +origen_power_init (); + +s3c_i2c0_set_platdata (NULL ); + i2c0_devs[I2C0_MAX8997 ].irq =gpio_to_irq (EXYNOS4_GPX0 (4 )); +i2c_register_board_info (0 , i2c0_devs,ARRAY_SIZE (i2c0_devs)); +s3c_sdhci2_set_platdata (&origen_hsmmc2_pdata);platform_add_devices (origen_devices,ARRAY_SIZE (origen_devices)); }
Signature · 1 line
1.7.4.1
PATCH 1/1 ARM: EXYNOS4: Configure MAX8997 PMIC for Origen
arch/arm/mach-exynos4/mach-origen.c static struct s3c2410_uartcfg origen_uartcfgs[] __initdata = { · line 86
Quoted 3 lines · Inderpal Singh
arch/arm/mach-exynos4/mach-origen.c +3
-0+static struct regulator_consumer_supply __initdata ldo7_consumer[] = { +REGULATOR_SUPPLY ("avdd" ,"soc-audio" ),/* Reatek ALC5625*/ +};
Ick, no. The soc-audio device is a virtual device within Linux and is being phased out, any driver adding new soc-audio devices will be rejected. The CODEC driver should deal with its own power.
arch/arm/mach-exynos4/mach-origen.c static struct s3c2410_uartcfg origen_uartcfgs[] __initdata = { · line 147
Quoted 8 lines
arch/arm/mach-exynos4/mach-origen.c +8
-0+static struct regulator_init_data __initdata max8997_ldo3_data = { + .constraints = { + .name ="VMIPI_1.1V" , + .min_uV =1100000 , + .max_uV =1100000 , + .apply_uV =1 , + .always_on =1 , + .valid_ops_mask =REGULATOR_CHANGE_STATUS ,
The regulator is always enabled but the consumers can change its status?
arch/arm/mach-exynos4/mach-origen.c static struct s3c2410_uartcfg origen_uartcfgs[] __initdata = { · line 223
Quoted 6 lines
arch/arm/mach-exynos4/mach-origen.c +6
-0+ .name = "DVDD_SWB_2.8V", + .min_uV = 2800000, + .max_uV = 2800000, + .apply_uV = 1, + .always_on = 1, + .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE,
The regulator has a fixed voltage but the consumers can change it?
arch/arm/mach-exynos4/mach-origen.c static struct s3c2410_uartcfg origen_uartcfgs[] __initdata = { · line 452
Quoted 6 lines
arch/arm/mach-exynos4/mach-origen.c +6
-0+static struct i2c_board_info i2c0_devs[]__initdata = { +[I2C0_MAX8997 ] = { +I2C_BOARD_INFO ("max8997" , (0xCC >>1 )), + .platform_data = &origen_max8997_pdata, + }, +};
Why are you assigning the array index? That's very unusual.
arch/arm/mach-exynos4/mach-origen.c static void __init origen_map_io(void) · line 480
Quoted 6 lines
arch/arm/mach-exynos4/mach-origen.c +6
-0+static void __init origen_power_init (void ) +{ +int gpio; +int irq_base =IRQ_GPIO_END +1 ; + + origen_max8997_pdata.irq_base = irq_base;
Why is this not just set statically in the pdata?
arch/arm/mach-exynos4/mach-origen.c static void __init origen_map_io(void) · line 483
Quoted 3 lines
arch/arm/mach-exynos4/mach-origen.c +3
-0+ gpio =EXYNOS4_GPX0 (4 ); +s3c_gpio_cfgpin (gpio,S3C_GPIO_SFN (0xf )); +s3c_gpio_setpull (gpio,S3C_GPIO_PULL_NONE );
A define for the GPIO would be a bit more common.
arch/arm/mach-exynos4/mach-origen.c static void __init origen_map_io(void) · line 491
Quoted 2 lines
arch/arm/mach-exynos4/mach-origen.c +2
-0+s3c_i2c0_set_platdata (NULL ); + i2c0_devs[I2C0_MAX8997 ].irq =gpio_to_irq (EXYNOS4_GPX0 (4 ));
There should be defines to do this statically.
A message that is not in the archive (sent off-list or not yet received): CAG17yqTP+Amg_UhWNjwZ0x8bH+VzV82k3La5Y0fep9WRArbe+g@mail.gmail.com
PATCH 1/1 ARM: EXYNOS4: Configure MAX8997 PMIC for Origen
Quoted 11 lines · Inderpal Singh
Quoted 9 lines · Mark Brown
arch/arm/mach-exynos4/mach-origen.c static struct s3c2410_uartcfg origen_uartcfgs[] __initdata = { · line 86
Quoted 3 lines · Inderpal Singh
arch/arm/mach-exynos4/mach-origen.c +3
-0+static struct regulator_consumer_supply __initdata ldo7_consumer[] = { +REGULATOR_SUPPLY ("avdd" ,"soc-audio" ),/* Reatek ALC5625*/ +};Ick, no. The soc-audio device is a virtual device within Linux and is being phased out, any driver adding new soc-audio devices will be rejected. The CODEC driver should deal with its own power.
Quoted 2 lines
Ok. So does it mean that sound cards will have their own devices? And those device names should be listed as consumers?
As I said above "The CODEC driver should deal with its own power."
Quoted 9 lines
Quoted 8 lines
arch/arm/mach-exynos4/mach-origen.c static struct s3c2410_uartcfg origen_uartcfgs[] __initdata = { · line 452
Quoted 6 lines
arch/arm/mach-exynos4/mach-origen.c +6
-0+static struct i2c_board_info i2c0_devs[]__initdata = { +[I2C0_MAX8997 ] = { +I2C_BOARD_INFO ("max8997" , (0xCC >>1 )), + .platform_data = &origen_max8997_pdata, + }, +};Why are you assigning the array index? That's very unusual.
Quoted 3 lines
Have seen this kind of initialisation at few places. It looked more readable.
If its not preferred, I will remove it.
You shouldn't need to be looking up individual members in a board info array in the first place.
Quoted 6 lines
Quoted 4 lines
arch/arm/mach-exynos4/mach-origen.c static void __init origen_map_io(void) · line 491
Quoted 2 lines
arch/arm/mach-exynos4/mach-origen.c +2
-0+s3c_i2c0_set_platdata (NULL ); + i2c0_devs[I2C0_MAX8997 ].irq =gpio_to_irq (EXYNOS4_GPX0 (4 ));There should be defines to do this statically.
What advantages do you see in using defines?
It's non-idiomatic to modify the I2C board info at runtime, all the numbers are known at compile time anyway.
PATCH 1/1 ARM: EXYNOS4: Configure MAX8997 PMIC for Origen
Quoted 13 lines · Mark Brown
Quoted 10 lines · Inderpal Singh
Quoted 9 lines · Mark Brown
arch/arm/mach-exynos4/mach-origen.c static struct s3c2410_uartcfg origen_uartcfgs[] __initdata = { · line 86
Quoted 3 lines · Inderpal Singh
arch/arm/mach-exynos4/mach-origen.c +3
-0+static struct regulator_consumer_supply __initdata ldo7_consumer[] = { + ? ? REGULATOR_SUPPLY("avdd", "soc-audio"), /* Reatek ALC5625*/ +};Ick, no. ?The soc-audio device is a virtual device within Linux and is being phased out, any driver adding new soc-audio devices will be rejected. ?The CODEC driver should deal with its own power.
Quoted 4 lines
Quoted 2 lines
Ok. So does it mean that sound cards will have their own devices? And those device names should be listed as consumers?
As I said above "The CODEC driver should deal with its own power."
Ok, will change accordingly.
Quoted 10 lines
Quoted 9 lines
Quoted 9 lines
arch/arm/mach-exynos4/mach-origen.c static struct s3c2410_uartcfg origen_uartcfgs[] __initdata = { · line 452
Quoted 7 lines
arch/arm/mach-exynos4/mach-origen.c +6
-0+static struct i2c_board_info i2c0_devs[]__initdata = { +[I2C0_MAX8997 ] = { + ? ? I2C_BOARD_INFO("max8997", (0xCC >> 1)), + ? ? .platform_data = &origen_max8997_pdata, + ? ? }, +};Why are you assigning the array index? ?That's very unusual.
Quoted 6 lines
Quoted 3 lines
Have seen this kind of initialisation at few places. It looked more readable.
If its not preferred, I will remove it.You shouldn't need to be looking up individual members in a board info array in the first place.
Ok, will remove array index assignment.
Quoted 10 lines
Quoted 7 lines
Quoted 5 lines
Quoted 3 lines
+ ? ?
s3c_i2c0_set_platdata(NULL);
+ ? ? i2c0_devs[I2C0_MAX8997].irq = gpio_to_irq(EXYNOS4_GPX0(4));There should be defines to do this statically.
What advantages do you see in using defines?
It's non-idiomatic to modify the I2C board info at runtime, all the numbers are known at compile time anyway.
This line is External Interrupt line, so will use suitable IRQ_EINT macro and resubmit the patch.
With Regards,
Inder
PATCH v2 1/1 ARM: EXYNOS4: Configure MAX8997 PMIC for Origen
In reply to Inderpal SinghFrom: Inderpal Singh <[email protected]>
Configure MAX8997 PMIC and provide platform specific data for origen.
---
Changes from v1:
- Removed soc-audio
- Used macro for GPIO pin
- irq assigned statically
- Rectified mismatches in constraints flags
- Removed assigning of array index
arch/arm/mach-exynos4/mach-origen.c | 390 +++++++++++++++++++++++++++++++++++ 1 files changed, 390 insertions(+), 0 deletions(-)
arch/arm/mach-exynos4/mach-origen.c +390 -0
@@ -14,6 +14,9 @@#include <linux/platform_device.h> #include <linux/io.h> #include <linux/input.h> +#include <linux/i2c.h> +#include <linux/regulator/machine.h> +#include <linux/mfd/max8997.h> #include <asm/mach/arch.h> #include <asm/mach-types.h>
@@ -24,6 +27,7 @@#include <plat/devs.h> #include <plat/sdhci.h> #include <plat/iic.h> +#include <plat/gpio-cfg.h> #include <mach/map.h>
@@ -72,6 +76,378 @@ static struct s3c2410_uartcfg origen_uartcfgs[] __initdata = { }, }; +static struct regulator_consumer_supply __initdata ldo3_consumer[] = { +REGULATOR_SUPPLY ("vdd11" ,"s5p-mipi-csis.0" ),/* MIPI */ +}; +static struct regulator_consumer_supply __initdata ldo6_consumer[] = { +REGULATOR_SUPPLY ("vdd18" ,"s5p-mipi-csis.0" ),/* MIPI */ +}; +static struct regulator_consumer_supply __initdata ldo7_consumer[] = { +REGULATOR_SUPPLY ("avdd" ,"alc5625" ),/* Realtek ALC5625 */ +}; +static struct regulator_consumer_supply __initdata ldo8_consumer[] = { +REGULATOR_SUPPLY ("vdd" ,"s5p-adc" ),/* ADC */ +}; +static struct regulator_consumer_supply __initdata ldo9_consumer[] = { +REGULATOR_SUPPLY ("dvdd" ,"swb-a31" ),/* AR6003 WLAN & CSR 8810 BT */ +}; +static struct regulator_consumer_supply __initdata ldo11_consumer[] = { +REGULATOR_SUPPLY ("dvdd" ,"alc5625" ),/* Realtek ALC5625 */ +}; +static struct regulator_consumer_supply __initdata ldo14_consumer[] = { +REGULATOR_SUPPLY ("avdd18" ,"swb-a31" ),/* AR6003 WLAN & CSR 8810 BT */ +}; +static struct regulator_consumer_supply __initdata ldo17_consumer[] = { +REGULATOR_SUPPLY ("vdd33" ,"swb-a31" ),/* AR6003 WLAN & CSR 8810 BT */ +}; +static struct regulator_consumer_supply __initdata buck1_consumer[] = { +REGULATOR_SUPPLY ("vdd_arm" ,NULL ),/* CPUFREQ */ +}; +static struct regulator_consumer_supply __initdata buck2_consumer[] = { +REGULATOR_SUPPLY ("vdd_int" ,NULL ),/* CPUFREQ */ +}; +static struct regulator_consumer_supply __initdata buck3_consumer[] = { +REGULATOR_SUPPLY ("vdd_g3d" ,"mali_drm" ),/* G3D */ +}; +static struct regulator_consumer_supply __initdata buck7_consumer[] = { +REGULATOR_SUPPLY ("vcc" ,"platform-lcd" ),/* LCD */ +}; + +static struct regulator_init_data __initdata max8997_ldo1_data = { + .constraints = { + .name ="VDD_ABB_3.3V" , + .min_uV =3300000 , + .max_uV =3300000 , + .apply_uV =1 , + .state_mem = { + .disabled =1 , + }, + }, +}; + +static struct regulator_init_data __initdata max8997_ldo2_data = { + .constraints = { + .name ="VDD_ALIVE_1.1V" , + .min_uV =1100000 , + .max_uV =1100000 , + .apply_uV =1 , + .always_on =1 , + .state_mem = { + .enabled =1 , + }, + }, +}; + +static struct regulator_init_data __initdata max8997_ldo3_data = { + .constraints = { + .name ="VMIPI_1.1V" , + .min_uV =1100000 , + .max_uV =1100000 , + .apply_uV =1 , + .valid_ops_mask =REGULATOR_CHANGE_STATUS , + .state_mem = { + .disabled =1 , + }, + }, + .num_consumer_supplies =ARRAY_SIZE (ldo3_consumer), + .consumer_supplies = ldo3_consumer, +}; + +static struct regulator_init_data __initdata max8997_ldo4_data = { + .constraints = { + .name ="VDD_RTC_1.8V" , + .min_uV =1800000 , + .max_uV =1800000 , + .apply_uV =1 , + .always_on =1 , + .state_mem = { + .disabled =1 , + }, + }, +}; + +static struct regulator_init_data __initdata max8997_ldo6_data = { + .constraints = { + .name ="VMIPI_1.8V" , + .min_uV =1800000 , + .max_uV =1800000 , + .apply_uV =1 , + .valid_ops_mask =REGULATOR_CHANGE_STATUS , + .state_mem = { + .disabled =1 , + }, + }, + .num_consumer_supplies =ARRAY_SIZE (ldo6_consumer), + .consumer_supplies = ldo6_consumer, +}; + +static struct regulator_init_data __initdata max8997_ldo7_data = { + .constraints = { + .name ="VDD_AUD_1.8V" , + .min_uV =1800000 , + .max_uV =1800000 , + .apply_uV =1 , + .valid_ops_mask =REGULATOR_CHANGE_STATUS , + .state_mem = { + .disabled =1 , + }, + }, + .num_consumer_supplies =ARRAY_SIZE (ldo7_consumer), + .consumer_supplies = ldo7_consumer, +}; + +static struct regulator_init_data __initdata max8997_ldo8_data = { + .constraints = { + .name ="VADC_3.3V" , + .min_uV =3300000 , + .max_uV =3300000 , + .apply_uV =1 , + .valid_ops_mask =REGULATOR_CHANGE_STATUS , + .state_mem = { + .disabled =1 , + }, + }, + .num_consumer_supplies =ARRAY_SIZE (ldo8_consumer), + .consumer_supplies = ldo8_consumer, +}; + +static struct regulator_init_data __initdata max8997_ldo9_data = { + .constraints = { + .name ="DVDD_SWB_2.8V" , + .min_uV =2800000 , + .max_uV =2800000 , + .apply_uV =1 , + .valid_ops_mask =REGULATOR_CHANGE_STATUS , + .state_mem = { + .disabled =1 , + }, + }, + .num_consumer_supplies =ARRAY_SIZE (ldo9_consumer), + .consumer_supplies = ldo9_consumer, +}; + +static struct regulator_init_data __initdata max8997_ldo10_data = { + .constraints = { + .name ="VDD_PLL_1.1V" , + .min_uV =1100000 , + .max_uV =1100000 , + .apply_uV =1 , + .always_on =1 , + .state_mem = { + .disabled =1 , + }, + }, +}; + +static struct regulator_init_data __initdata max8997_ldo11_data = { + .constraints = { + .name ="VDD_AUD_3V" , + .min_uV =3000000 , + .max_uV =3000000 , + .apply_uV =1 , + .valid_ops_mask =REGULATOR_CHANGE_STATUS , + .state_mem = { + .disabled =1 , + }, + }, + .num_consumer_supplies =ARRAY_SIZE (ldo11_consumer), + .consumer_supplies = ldo11_consumer, +}; + +static struct regulator_init_data __initdata max8997_ldo14_data = { + .constraints = { + .name ="AVDD18_SWB_1.8V" , + .min_uV =1800000 , + .max_uV =1800000 , + .apply_uV =1 , + .valid_ops_mask =REGULATOR_CHANGE_STATUS , + .state_mem = { + .disabled =1 , + }, + }, + .num_consumer_supplies =ARRAY_SIZE (ldo14_consumer), + .consumer_supplies = ldo14_consumer, +}; + +static struct regulator_init_data __initdata max8997_ldo17_data = { + .constraints = { + .name ="VDD_SWB_3.3V" , + .min_uV =3300000 , + .max_uV =3300000 , + .apply_uV =1 , + .valid_ops_mask =REGULATOR_CHANGE_STATUS , + .state_mem = { + .disabled =1 , + }, + }, + .num_consumer_supplies =ARRAY_SIZE (ldo17_consumer), + .consumer_supplies = ldo17_consumer, +}; + +static struct regulator_init_data __initdata max8997_ldo21_data = { + .constraints = { + .name ="VDD_MIF_1.2V" , + .min_uV =1200000 , + .max_uV =1200000 , + .apply_uV =1 , + .always_on =1 , + .state_mem = { + .disabled =1 , + }, + }, +}; + +static struct regulator_init_data __initdata max8997_buck1_data = { + .constraints = { + .name ="VDD_ARM_1.2V" , + .min_uV =950000 , + .max_uV =1350000 , + .always_on =1 , + .boot_on =1 , + .valid_ops_mask =REGULATOR_CHANGE_VOLTAGE , + .state_mem = { + .disabled =1 , + }, + }, + .num_consumer_supplies =ARRAY_SIZE (buck1_consumer), + .consumer_supplies = buck1_consumer, +}; + +static struct regulator_init_data __initdata max8997_buck2_data = { + .constraints = { + .name ="VDD_INT_1.1V" , + .min_uV =900000 , + .max_uV =1100000 , + .always_on =1 , + .boot_on =1 , + .valid_ops_mask =REGULATOR_CHANGE_VOLTAGE , + .state_mem = { + .disabled =1 , + }, + }, + .num_consumer_supplies =ARRAY_SIZE (buck2_consumer), + .consumer_supplies = buck2_consumer, +}; + +static struct regulator_init_data __initdata max8997_buck3_data = { + .constraints = { + .name ="VDD_G3D_1.1V" , + .min_uV =900000 , + .max_uV =1100000 , + .valid_ops_mask =REGULATOR_CHANGE_VOLTAGE | +REGULATOR_CHANGE_STATUS , + .state_mem = { + .disabled =1 , + }, + }, + .num_consumer_supplies =ARRAY_SIZE (buck3_consumer), + .consumer_supplies = buck3_consumer, +}; + +static struct regulator_init_data __initdata max8997_buck5_data = { + .constraints = { + .name ="VDDQ_M1M2_1.2V" , + .min_uV =1200000 , + .max_uV =1200000 , + .apply_uV =1 , + .always_on =1 , + .state_mem = { + .disabled =1 , + }, + }, +}; + +static struct regulator_init_data __initdata max8997_buck7_data = { + .constraints = { + .name ="VDD_LCD_3.3V" , + .min_uV =3300000 , + .max_uV =3300000 , + .boot_on =1 , + .apply_uV =1 , + .valid_ops_mask =REGULATOR_CHANGE_STATUS , + .state_mem = { + .disabled =1 + }, + }, + .num_consumer_supplies =ARRAY_SIZE (buck7_consumer), + .consumer_supplies = buck7_consumer, +}; + +static struct max8997_regulator_data __initdata origen_max8997_regulators[] = { + {MAX8997_LDO1 , &max8997_ldo1_data }, + {MAX8997_LDO2 , &max8997_ldo2_data }, + {MAX8997_LDO3 , &max8997_ldo3_data }, + {MAX8997_LDO4 , &max8997_ldo4_data }, + {MAX8997_LDO6 , &max8997_ldo6_data }, + {MAX8997_LDO7 , &max8997_ldo7_data }, + {MAX8997_LDO8 , &max8997_ldo8_data }, + {MAX8997_LDO9 , &max8997_ldo9_data }, + {MAX8997_LDO10 , &max8997_ldo10_data }, + {MAX8997_LDO11 , &max8997_ldo11_data }, + {MAX8997_LDO14 , &max8997_ldo14_data }, + {MAX8997_LDO17 , &max8997_ldo17_data }, + {MAX8997_LDO21 , &max8997_ldo21_data }, + {MAX8997_BUCK1 , &max8997_buck1_data }, + {MAX8997_BUCK2 , &max8997_buck2_data }, + {MAX8997_BUCK3 , &max8997_buck3_data }, + {MAX8997_BUCK5 , &max8997_buck5_data }, + {MAX8997_BUCK7 , &max8997_buck7_data }, +}; + +struct max8997_platform_data __initdata origen_max8997_pdata = { + .num_regulators =ARRAY_SIZE (origen_max8997_regulators), + .regulators = origen_max8997_regulators, + + .wakeup = true, + .buck1_gpiodvs = false, + .buck2_gpiodvs = false, + .buck5_gpiodvs = false, + .irq_base =IRQ_GPIO_END +1 , + + .ignore_gpiodvs_side_effect = true, + .buck125_default_idx =0x0 , + + .buck125_gpios[0 ] =EXYNOS4_GPX0 (0 ), + .buck125_gpios[1 ] =EXYNOS4_GPX0 (1 ), + .buck125_gpios[2 ] =EXYNOS4_GPX0 (2 ), + + .buck1_voltage[0 ] =1350000 , + .buck1_voltage[1 ] =1300000 , + .buck1_voltage[2 ] =1250000 , + .buck1_voltage[3 ] =1200000 , + .buck1_voltage[4 ] =1150000 , + .buck1_voltage[5 ] =1100000 , + .buck1_voltage[6 ] =1000000 , + .buck1_voltage[7 ] =950000 , + + .buck2_voltage[0 ] =1100000 , + .buck2_voltage[1 ] =1100000 , + .buck2_voltage[2 ] =1100000 , + .buck2_voltage[3 ] =1100000 , + .buck2_voltage[4 ] =1000000 , + .buck2_voltage[5 ] =1000000 , + .buck2_voltage[6 ] =1000000 , + .buck2_voltage[7 ] =1000000 , + + .buck5_voltage[0 ] =1200000 , + .buck5_voltage[1 ] =1200000 , + .buck5_voltage[2 ] =1200000 , + .buck5_voltage[3 ] =1200000 , + .buck5_voltage[4 ] =1200000 , + .buck5_voltage[5 ] =1200000 , + .buck5_voltage[6 ] =1200000 , + .buck5_voltage[7 ] =1200000 , +}; + +/* I2C0 */ +static struct i2c_board_info i2c0_devs[]__initdata = { + { +I2C_BOARD_INFO ("max8997" , (0xCC >>1 )), + .platform_data = &origen_max8997_pdata, + .irq =IRQ_EINT (4 ), + }, +}; +static struct s3c_sdhci_platdata origen_hsmmc2_pdata__initdata = { .cd_type =S3C_SDHCI_CD_GPIO , .ext_cd_gpio =EXYNOS4_GPK2 (2 ),
@@ -80,6 +456,7 @@ static struct s3c_sdhci_platdata origen_hsmmc2_pdata __initdata = { };static struct platform_device *origen_devices[]__initdata = { + &s3c_device_i2c0, &s3c_device_hsmmc2, &s3c_device_rtc, &s3c_device_wdt,
@@ -92,8 +469,21 @@ static void __init origen_map_io(void)s3c24xx_init_uarts (origen_uartcfgs,ARRAY_SIZE (origen_uartcfgs)); } +#define ORIGEN_PMIC_GPIO EXYNOS4_GPX0(4) +static void __init origen_power_init (void ) +{ +gpio_request (ORIGEN_PMIC_GPIO ,"PMIC_IRQ" ); +s3c_gpio_cfgpin (ORIGEN_PMIC_GPIO ,S3C_GPIO_SFN (0xf )); +s3c_gpio_setpull (ORIGEN_PMIC_GPIO ,S3C_GPIO_PULL_NONE ); +} +static void __init origen_machine_init (void ) { +origen_power_init (); + +s3c_i2c0_set_platdata (NULL ); +i2c_register_board_info (0 , i2c0_devs,ARRAY_SIZE (i2c0_devs)); +s3c_sdhci2_set_platdata (&origen_hsmmc2_pdata);platform_add_devices (origen_devices,ARRAY_SIZE (origen_devices)); }
Signature · 1 line
1.7.4.1
PATCH v2 1/1 ARM: EXYNOS4: Configure MAX8997 PMIC for Origen
Quoted 15 lines · Inderpal Singh
From: Inderpal Singh <[email protected]>
Configure MAX8997 PMIC and provide platform specific data for origen.
Signed-off-by Inderpal Singh <[email protected]>---
Changes from v1:
- Removed soc-audio
- Used macro for GPIO pin
- irq assigned statically
- Rectified mismatches in constraints flags
- Removed assigning of array index
Quoted 1 line
arch/arm/mach-exynos4/mach-origen.c | 390
+++++++++++++++++++++++++++++++++++
Review
Quoted 3 lines
1 files changed, 390 insertions(+), 0 deletions(-)(quoted diff) +0
-0
b/arch/arm/mach-exynos4/mach-origen.c
arch/arm/mach-exynos4/mach-origen.c static struct s3c2410_uartcfg origen_uartcfgs[]
Quoted 22 lines
index ed59f86..ccd2a55 100644
arch/arm/mach-exynos4/mach-origen.c +4
-0@@ -14,6 +14,9 @@#include <linux/platform_device.h> #include <linux/io.h> #include <linux/input.h> +#include <linux/i2c.h> +#include <linux/regulator/machine.h> +#include <linux/mfd/max8997.h> #include <asm/mach/arch.h> #include <asm/mach-types.h> @@ -24,6 +27,7 @@#include <plat/devs.h> #include <plat/sdhci.h> #include <plat/iic.h> +#include <plat/gpio-cfg.h> #include <mach/map.h> @@ -72,6 +76,378 @@ static struct s3c2410_uartcfg origen_uartcfgs[]
__initdata = {
Quoted 13 lines
arch/arm/mach-exynos4/mach-origen.c +10
-0}, }; +static struct regulator_consumer_supply __initdata ldo3_consumer[] = { +REGULATOR_SUPPLY ("vdd11" ,"s5p-mipi-csis.0" ),/* MIPI */ +}; +static struct regulator_consumer_supply __initdata ldo6_consumer[] = { +REGULATOR_SUPPLY ("vdd18" ,"s5p-mipi-csis.0" ),/* MIPI */ +}; +static struct regulator_consumer_supply __initdata ldo7_consumer[] = { +REGULATOR_SUPPLY ("avdd" ,"alc5625" ),/* Realtek ALC5625 */ +}; +static struct regulator_consumer_supply __initdata ldo8_consumer[] = {
arch/arm/mach-exynos4/mach-origen.c static struct s3c2410_uartcfg origen_uartcfgs[] __initdata = {
Quoted 10 lines
arch/arm/mach-exynos4/mach-origen.c +10
-0+ REGULATOR_SUPPLY("vdd", "s5p-adc"), /* ADC */ +}; +static struct regulator_consumer_supply __initdata ldo9_consumer[] = { +REGULATOR_SUPPLY ("dvdd" ,"swb-a31" ),/* AR6003 WLAN & CSR 8810 BT */ +}; +static struct regulator_consumer_supply __initdata ldo11_consumer[] = { +REGULATOR_SUPPLY ("dvdd" ,"alc5625" ),/* Realtek ALC5625 */ +}; +static struct regulator_consumer_supply __initdata ldo14_consumer[] = { +REGULATOR_SUPPLY ("avdd18" ,"swb-a31" ),/* AR6003 WLAN & CSR 8810 BT
*/
arch/arm/mach-exynos4/mach-origen.c static struct s3c2410_uartcfg origen_uartcfgs[] __initdata = {
Quoted 3 lines
arch/arm/mach-exynos4/mach-origen.c +3
-0+}; +static struct regulator_consumer_supply __initdata ldo17_consumer[] = { +REGULATOR_SUPPLY ("vdd33" ,"swb-a31" ),/* AR6003 WLAN & CSR 8810 BT
*/
Quoted 265 lines
arch/arm/mach-exynos4/mach-origen.c +265
-0+}; +static struct regulator_consumer_supply __initdata buck1_consumer[] = { +REGULATOR_SUPPLY ("vdd_arm" ,NULL ),/* CPUFREQ */ +}; +static struct regulator_consumer_supply __initdata buck2_consumer[] = { +REGULATOR_SUPPLY ("vdd_int" ,NULL ),/* CPUFREQ */ +}; +static struct regulator_consumer_supply __initdata buck3_consumer[] = { +REGULATOR_SUPPLY ("vdd_g3d" ,"mali_drm" ),/* G3D */ +}; +static struct regulator_consumer_supply __initdata buck7_consumer[] = { +REGULATOR_SUPPLY ("vcc" ,"platform-lcd" ),/* LCD */ +}; + +static struct regulator_init_data __initdata max8997_ldo1_data = { + .constraints = { + .name ="VDD_ABB_3.3V" , + .min_uV =3300000 , + .max_uV =3300000 , + .apply_uV =1 , + .state_mem = { + .disabled =1 , + }, + }, +}; + +static struct regulator_init_data __initdata max8997_ldo2_data = { + .constraints = { + .name ="VDD_ALIVE_1.1V" , + .min_uV =1100000 , + .max_uV =1100000 , + .apply_uV =1 , + .always_on =1 , + .state_mem = { + .enabled =1 , + }, + }, +}; + +static struct regulator_init_data __initdata max8997_ldo3_data = { + .constraints = { + .name ="VMIPI_1.1V" , + .min_uV =1100000 , + .max_uV =1100000 , + .apply_uV =1 , + .valid_ops_mask =REGULATOR_CHANGE_STATUS , + .state_mem = { + .disabled =1 , + }, + }, + .num_consumer_supplies =ARRAY_SIZE (ldo3_consumer), + .consumer_supplies = ldo3_consumer, +}; + +static struct regulator_init_data __initdata max8997_ldo4_data = { + .constraints = { + .name ="VDD_RTC_1.8V" , + .min_uV =1800000 , + .max_uV =1800000 , + .apply_uV =1 , + .always_on =1 , + .state_mem = { + .disabled =1 , + }, + }, +}; + +static struct regulator_init_data __initdata max8997_ldo6_data = { + .constraints = { + .name ="VMIPI_1.8V" , + .min_uV =1800000 , + .max_uV =1800000 , + .apply_uV =1 , + .valid_ops_mask =REGULATOR_CHANGE_STATUS , + .state_mem = { + .disabled =1 , + }, + }, + .num_consumer_supplies =ARRAY_SIZE (ldo6_consumer), + .consumer_supplies = ldo6_consumer, +}; + +static struct regulator_init_data __initdata max8997_ldo7_data = { + .constraints = { + .name ="VDD_AUD_1.8V" , + .min_uV =1800000 , + .max_uV =1800000 , + .apply_uV =1 , + .valid_ops_mask =REGULATOR_CHANGE_STATUS , + .state_mem = { + .disabled =1 , + }, + }, + .num_consumer_supplies =ARRAY_SIZE (ldo7_consumer), + .consumer_supplies = ldo7_consumer, +}; + +static struct regulator_init_data __initdata max8997_ldo8_data = { + .constraints = { + .name ="VADC_3.3V" , + .min_uV =3300000 , + .max_uV =3300000 , + .apply_uV =1 , + .valid_ops_mask =REGULATOR_CHANGE_STATUS , + .state_mem = { + .disabled =1 , + }, + }, + .num_consumer_supplies =ARRAY_SIZE (ldo8_consumer), + .consumer_supplies = ldo8_consumer, +}; + +static struct regulator_init_data __initdata max8997_ldo9_data = { + .constraints = { + .name ="DVDD_SWB_2.8V" , + .min_uV =2800000 , + .max_uV =2800000 , + .apply_uV =1 , + .valid_ops_mask =REGULATOR_CHANGE_STATUS , + .state_mem = { + .disabled =1 , + }, + }, + .num_consumer_supplies =ARRAY_SIZE (ldo9_consumer), + .consumer_supplies = ldo9_consumer, +}; + +static struct regulator_init_data __initdata max8997_ldo10_data = { + .constraints = { + .name ="VDD_PLL_1.1V" , + .min_uV =1100000 , + .max_uV =1100000 , + .apply_uV =1 , + .always_on =1 , + .state_mem = { + .disabled =1 , + }, + }, +}; + +static struct regulator_init_data __initdata max8997_ldo11_data = { + .constraints = { + .name ="VDD_AUD_3V" , + .min_uV =3000000 , + .max_uV =3000000 , + .apply_uV =1 , + .valid_ops_mask =REGULATOR_CHANGE_STATUS , + .state_mem = { + .disabled =1 , + }, + }, + .num_consumer_supplies =ARRAY_SIZE (ldo11_consumer), + .consumer_supplies = ldo11_consumer, +}; + +static struct regulator_init_data __initdata max8997_ldo14_data = { + .constraints = { + .name ="AVDD18_SWB_1.8V" , + .min_uV =1800000 , + .max_uV =1800000 , + .apply_uV =1 , + .valid_ops_mask =REGULATOR_CHANGE_STATUS , + .state_mem = { + .disabled =1 , + }, + }, + .num_consumer_supplies =ARRAY_SIZE (ldo14_consumer), + .consumer_supplies = ldo14_consumer, +}; + +static struct regulator_init_data __initdata max8997_ldo17_data = { + .constraints = { + .name ="VDD_SWB_3.3V" , + .min_uV =3300000 , + .max_uV =3300000 , + .apply_uV =1 , + .valid_ops_mask =REGULATOR_CHANGE_STATUS , + .state_mem = { + .disabled =1 , + }, + }, + .num_consumer_supplies =ARRAY_SIZE (ldo17_consumer), + .consumer_supplies = ldo17_consumer, +}; + +static struct regulator_init_data __initdata max8997_ldo21_data = { + .constraints = { + .name ="VDD_MIF_1.2V" , + .min_uV =1200000 , + .max_uV =1200000 , + .apply_uV =1 , + .always_on =1 , + .state_mem = { + .disabled =1 , + }, + }, +}; + +static struct regulator_init_data __initdata max8997_buck1_data = { + .constraints = { + .name ="VDD_ARM_1.2V" , + .min_uV =950000 , + .max_uV =1350000 , + .always_on =1 , + .boot_on =1 , + .valid_ops_mask =REGULATOR_CHANGE_VOLTAGE , + .state_mem = { + .disabled =1 , + }, + }, + .num_consumer_supplies =ARRAY_SIZE (buck1_consumer), + .consumer_supplies = buck1_consumer, +}; + +static struct regulator_init_data __initdata max8997_buck2_data = { + .constraints = { + .name ="VDD_INT_1.1V" , + .min_uV =900000 , + .max_uV =1100000 , + .always_on =1 , + .boot_on =1 , + .valid_ops_mask =REGULATOR_CHANGE_VOLTAGE , + .state_mem = { + .disabled =1 , + }, + }, + .num_consumer_supplies =ARRAY_SIZE (buck2_consumer), + .consumer_supplies = buck2_consumer, +}; + +static struct regulator_init_data __initdata max8997_buck3_data = { + .constraints = { + .name ="VDD_G3D_1.1V" , + .min_uV =900000 , + .max_uV =1100000 , + .valid_ops_mask =REGULATOR_CHANGE_VOLTAGE | +REGULATOR_CHANGE_STATUS , + .state_mem = { + .disabled =1 , + }, + }, + .num_consumer_supplies =ARRAY_SIZE (buck3_consumer), + .consumer_supplies = buck3_consumer, +}; + +static struct regulator_init_data __initdata max8997_buck5_data = { + .constraints = { + .name ="VDDQ_M1M2_1.2V" , + .min_uV =1200000 , + .max_uV =1200000 , + .apply_uV =1 , + .always_on =1 , + .state_mem = { + .disabled =1 , + }, + }, +}; + +static struct regulator_init_data __initdata max8997_buck7_data = { + .constraints = { + .name ="VDD_LCD_3.3V" , + .min_uV =3300000 , + .max_uV =3300000 , + .boot_on =1 , + .apply_uV =1 ,
arch/arm/mach-exynos4/mach-origen.c static struct s3c2410_uartcfg origen_uartcfgs[] __initdata = {
Quoted 10 lines
arch/arm/mach-exynos4/mach-origen.c +10
-0+ .valid_ops_mask = REGULATOR_CHANGE_STATUS, + .state_mem = { + .disabled = 1 + }, + }, + .num_consumer_supplies = ARRAY_SIZE(buck7_consumer), + .consumer_supplies = buck7_consumer, +}; + +static struct max8997_regulator_data __initdata
origen_max8997_regulators[] = {
arch/arm/mach-exynos4/mach-origen.c static struct s3c_sdhci_platdata origen_hsmmc2_pdata
Quoted 78 lines
arch/arm/mach-exynos4/mach-origen.c +74
-0+ { MAX8997_LDO1, &max8997_ldo1_data }, + { MAX8997_LDO2, &max8997_ldo2_data }, + { MAX8997_LDO3, &max8997_ldo3_data }, + { MAX8997_LDO4, &max8997_ldo4_data }, + { MAX8997_LDO6, &max8997_ldo6_data }, + { MAX8997_LDO7, &max8997_ldo7_data }, + { MAX8997_LDO8, &max8997_ldo8_data }, + { MAX8997_LDO9, &max8997_ldo9_data }, + { MAX8997_LDO10, &max8997_ldo10_data }, + { MAX8997_LDO11, &max8997_ldo11_data }, + { MAX8997_LDO14, &max8997_ldo14_data }, + { MAX8997_LDO17, &max8997_ldo17_data }, + { MAX8997_LDO21, &max8997_ldo21_data }, + { MAX8997_BUCK1, &max8997_buck1_data }, + { MAX8997_BUCK2, &max8997_buck2_data }, + { MAX8997_BUCK3, &max8997_buck3_data }, + { MAX8997_BUCK5, &max8997_buck5_data }, + { MAX8997_BUCK7, &max8997_buck7_data }, +}; + +struct max8997_platform_data __initdata origen_max8997_pdata = { + .num_regulators =ARRAY_SIZE (origen_max8997_regulators), + .regulators = origen_max8997_regulators, + + .wakeup = true, + .buck1_gpiodvs = false, + .buck2_gpiodvs = false, + .buck5_gpiodvs = false, + .irq_base =IRQ_GPIO_END +1 , + + .ignore_gpiodvs_side_effect = true, + .buck125_default_idx =0x0 , + + .buck125_gpios[0 ] =EXYNOS4_GPX0 (0 ), + .buck125_gpios[1 ] =EXYNOS4_GPX0 (1 ), + .buck125_gpios[2 ] =EXYNOS4_GPX0 (2 ), + + .buck1_voltage[0 ] =1350000 , + .buck1_voltage[1 ] =1300000 , + .buck1_voltage[2 ] =1250000 , + .buck1_voltage[3 ] =1200000 , + .buck1_voltage[4 ] =1150000 , + .buck1_voltage[5 ] =1100000 , + .buck1_voltage[6 ] =1000000 , + .buck1_voltage[7 ] =950000 , + + .buck2_voltage[0 ] =1100000 , + .buck2_voltage[1 ] =1100000 , + .buck2_voltage[2 ] =1100000 , + .buck2_voltage[3 ] =1100000 , + .buck2_voltage[4 ] =1000000 , + .buck2_voltage[5 ] =1000000 , + .buck2_voltage[6 ] =1000000 , + .buck2_voltage[7 ] =1000000 , + + .buck5_voltage[0 ] =1200000 , + .buck5_voltage[1 ] =1200000 , + .buck5_voltage[2 ] =1200000 , + .buck5_voltage[3 ] =1200000 , + .buck5_voltage[4 ] =1200000 , + .buck5_voltage[5 ] =1200000 , + .buck5_voltage[6 ] =1200000 , + .buck5_voltage[7 ] =1200000 , +}; + +/* I2C0 */ +static struct i2c_board_info i2c0_devs[]__initdata = { + { +I2C_BOARD_INFO ("max8997" , (0xCC >>1 )), + .platform_data = &origen_max8997_pdata, + .irq =IRQ_EINT (4 ), + }, +}; +static struct s3c_sdhci_platdata origen_hsmmc2_pdata__initdata = { .cd_type =S3C_SDHCI_CD_GPIO , .ext_cd_gpio = EXYNOS4_GPK2(2),@@ -80,6 +456,7 @@ static struct s3c_sdhci_platdata origen_hsmmc2_pdata
__initdata = {
Quoted 30 lines
arch/arm/mach-exynos4/mach-origen.c +14
-1};static struct platform_device *origen_devices[]__initdata = { + &s3c_device_i2c0, &s3c_device_hsmmc2, &s3c_device_rtc, &s3c_device_wdt,@@ -92,8 +469,21 @@ static void __init origen_map_io(void)s3c24xx_init_uarts (origen_uartcfgs,ARRAY_SIZE (origen_uartcfgs)); } +#define ORIGEN_PMIC_GPIO EXYNOS4_GPX0(4) +static void __init origen_power_init (void ) +{ +gpio_request (ORIGEN_PMIC_GPIO ,"PMIC_IRQ" ); +s3c_gpio_cfgpin (ORIGEN_PMIC_GPIO ,S3C_GPIO_SFN (0xf )); +s3c_gpio_setpull (ORIGEN_PMIC_GPIO ,S3C_GPIO_PULL_NONE ); +} +static void __init origen_machine_init (void ) { +origen_power_init (); + +s3c_i2c0_set_platdata (NULL ); +i2c_register_board_info (0 , i2c0_devs,ARRAY_SIZE (i2c0_devs)); +s3c_sdhci2_set_platdata (&origen_hsmmc2_pdata);platform_add_devices (origen_devices,ARRAY_SIZE (origen_devices)); } --
Quoted 1 line
1.7.4.1
OK, will apply.
Thanks.
Best regards,
Kgene.
--
Kukjin Kim <[email protected]>, Senior Engineer, SW Solution Development Team, Samsung Electronics Co., Ltd.
PATCH v2 1/1 ARM: EXYNOS4: Configure MAX8997 PMIC for Origen
In reply to Inderpal SinghQuoted 4 lines · Kukjin Kim
Quoted 2 lines · Inderpal Singh
From: Inderpal Singh <[email protected]>
^^^^^^^^^^^
Quoted 5 lines
Quoted 5 lines
Configure MAX8997 PMIC and provide platform specific data for origen.
Signed-off-by Inderpal Singh <[email protected]>
^^^^^^^^^^
Hi Inderpal,
You need to change your e-mail address of author or sign. Basically they should be same. Which one do you want to use?
Then you should make sure your .gitconfig has same e-mail address......
Thanks.
Best regards,
Kgene.
--
Kukjin Kim <[email protected]>, Senior Engineer, SW Solution Development Team, Samsung Electronics Co., Ltd.
PATCH v2 1/1 ARM: EXYNOS4: Configure MAX8997 PMIC for Origen
Hi Kukjin,
Thanks for applying.
I would like to use inderpal.singh at linaro.org
Have updated my .gitconfig accordingly as well.
Thanks,
Inder
Quoted 28 lines · Kukjin Kim
Quoted 4 lines · Kukjin Kim
Quoted 2 lines · Inderpal Singh
From: Inderpal Singh <[email protected]>
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ^^^^^^^^^^^
Quoted 5 lines
Quoted 5 lines
Configure MAX8997 PMIC and provide platform specific data for origen.
Signed-off-by Inderpal Singh <[email protected]>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?^^^^^^^^^^
Hi Inderpal,
You need to change your e-mail address of author or sign. Basically they should be same. Which one do you want to use?
Then you should make sure your .gitconfig has same e-mail address......Thanks.
Best regards,
Kgene.
--
Kukjin Kim <[email protected]>, Senior Engineer, SW Solution Development Team, Samsung Electronics Co., Ltd.