Message ID | 1375274416-23455-3-git-send-email-g.liakhovetski@gmx.de (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Hi Guennadi, Thank you for the patch. On Wednesday 31 July 2013 14:40:15 Guennadi Liakhovetski wrote: > Currently a dummy fixed always-on regulator is used for all 3 SD/MMC > interfaces on ape6evm. This patch updates the board to use correct supplies > for MMC0, SDHI0 and SDHI1 VDD. SDHI0 VccQ supply regulator should be > implemented in a separate patch. > > Signed-off-by: Guennadi Liakhovetski <g.liakhovetski+renesas@gmail.com> > --- > > v2: improve comments. > > arch/arm/mach-shmobile/board-ape6evm.c | 54 ++++++++++++++++++++++++----- > 1 files changed, 46 insertions(+), 8 deletions(-) > > diff --git a/arch/arm/mach-shmobile/board-ape6evm.c > b/arch/arm/mach-shmobile/board-ape6evm.c index c5e6cba..823de50 100644 > --- a/arch/arm/mach-shmobile/board-ape6evm.c > +++ b/arch/arm/mach-shmobile/board-ape6evm.c > @@ -59,16 +59,49 @@ static const struct smsc911x_platform_config > lan9220_data __initconst = { }; > > /* > - * On APE6EVM power is supplied to MMCIF by a tps80032 regulator. For now > - * we model a VDD supply to MMCIF, using a fixed 3.3V regulator. Also use > - * the static power supply for SDHI0 and SDHI1, whereas SDHI0's VccQ is > - * also supplied by the same tps80032 regulator and thus can also be > - * adjusted dynamically. > + * MMC0 power supplies: > + * Both Vcc and VccQ to eMMC on APE6EVM are supplied by a tps80032 voltage > + * regulator. Until support for it is added to this file we simulate the > + * Vcc supply by a fixed always-on regulator > */ > -static struct regulator_consumer_supply fixed3v3_power_consumers[] = > +static struct regulator_consumer_supply vcc_mmc0_consumers[] = > { > REGULATOR_SUPPLY("vmmc", "sh_mmcif.0"), > +}; > + > +/* > + * SDHI0 power supplies: > + * Vcc to SDHI0 on APE6EVM is supplied by a GPIO-switchable regulator. VccQ > is + * provided by the same tps80032 regulator as both MMC0 voltages - see > comment + * above > + */ > +static struct regulator_consumer_supply vcc_sdhi0_consumers[] = > +{ > REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi.0"), > +}; > + > +static struct regulator_init_data vcc_sdhi0_init_data = { > + .constraints = { > + .valid_ops_mask = REGULATOR_CHANGE_STATUS, > + }, > + .num_consumer_supplies = ARRAY_SIZE(vcc_sdhi0_consumers), > + .consumer_supplies = vcc_sdhi0_consumers, > +}; > + > +static const struct fixed_voltage_config vcc_sdhi0_info __initconst = { > + .supply_name = "SDHI0 Vcc", > + .microvolts = 3000000, Despite being called VSD_3V0 in the schematics, I think the voltage is 3.3V. > + .gpio = 76, > + .enable_high = 1, > + .init_data = &vcc_sdhi0_init_data, > +}; > + > +/* > + * SDHI1 power supplies: > + * Vcc and VccQ to SDHI1 on APE6EVM are both fixed at 3.3V > + */ > +static struct regulator_consumer_supply vcc_sdhi1_consumers[] = > +{ > REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi.1"), > }; > > @@ -161,14 +194,19 @@ static void __init ape6evm_add_standard_devices(void) > platform_device_register_resndata(&platform_bus, "smsc911x", -1, > lan9220_res, ARRAY_SIZE(lan9220_res), > &lan9220_data, sizeof(lan9220_data)); > - regulator_register_always_on(1, "fixed-3.3V", fixed3v3_power_consumers, > - ARRAY_SIZE(fixed3v3_power_consumers), 3300000); > + > + regulator_register_always_on(1, "MMC0 Vcc", vcc_mmc0_consumers, > + ARRAY_SIZE(vcc_mmc0_consumers), 2800000); > platform_device_register_resndata(&platform_bus, "sh_mmcif", 0, > mmcif0_resources, ARRAY_SIZE(mmcif0_resources), > &mmcif0_pdata, sizeof(mmcif0_pdata)); > + platform_device_register_data(&platform_bus, "reg-fixed-voltage", 2, > + &vcc_sdhi0_info, sizeof(vcc_sdhi0_info)); > platform_device_register_resndata(&platform_bus, "sh_mobile_sdhi", 0, > sdhi0_resources, ARRAY_SIZE(sdhi0_resources), > &sdhi0_pdata, sizeof(sdhi0_pdata)); > + regulator_register_always_on(3, "SDHI1 Vcc", vcc_sdhi1_consumers, > + ARRAY_SIZE(vcc_sdhi1_consumers), 3300000); > platform_device_register_resndata(&platform_bus, "sh_mobile_sdhi", 1, > sdhi1_resources, ARRAY_SIZE(sdhi1_resources), > &sdhi1_pdata, sizeof(sdhi1_pdata));
Hi Laurent On Wed, 31 Jul 2013, Laurent Pinchart wrote: > Hi Guennadi, > > Thank you for the patch. > > On Wednesday 31 July 2013 14:40:15 Guennadi Liakhovetski wrote: > > Currently a dummy fixed always-on regulator is used for all 3 SD/MMC > > interfaces on ape6evm. This patch updates the board to use correct supplies > > for MMC0, SDHI0 and SDHI1 VDD. SDHI0 VccQ supply regulator should be > > implemented in a separate patch. > > > > Signed-off-by: Guennadi Liakhovetski <g.liakhovetski+renesas@gmail.com> > > --- > > > > v2: improve comments. > > > > arch/arm/mach-shmobile/board-ape6evm.c | 54 ++++++++++++++++++++++++----- > > 1 files changed, 46 insertions(+), 8 deletions(-) > > > > diff --git a/arch/arm/mach-shmobile/board-ape6evm.c > > b/arch/arm/mach-shmobile/board-ape6evm.c index c5e6cba..823de50 100644 > > --- a/arch/arm/mach-shmobile/board-ape6evm.c > > +++ b/arch/arm/mach-shmobile/board-ape6evm.c > > @@ -59,16 +59,49 @@ static const struct smsc911x_platform_config > > lan9220_data __initconst = { }; > > > > /* > > - * On APE6EVM power is supplied to MMCIF by a tps80032 regulator. For now > > - * we model a VDD supply to MMCIF, using a fixed 3.3V regulator. Also use > > - * the static power supply for SDHI0 and SDHI1, whereas SDHI0's VccQ is > > - * also supplied by the same tps80032 regulator and thus can also be > > - * adjusted dynamically. > > + * MMC0 power supplies: > > + * Both Vcc and VccQ to eMMC on APE6EVM are supplied by a tps80032 voltage > > + * regulator. Until support for it is added to this file we simulate the > > + * Vcc supply by a fixed always-on regulator > > */ > > -static struct regulator_consumer_supply fixed3v3_power_consumers[] = > > +static struct regulator_consumer_supply vcc_mmc0_consumers[] = > > { > > REGULATOR_SUPPLY("vmmc", "sh_mmcif.0"), > > +}; > > + > > +/* > > + * SDHI0 power supplies: > > + * Vcc to SDHI0 on APE6EVM is supplied by a GPIO-switchable regulator. VccQ > > is + * provided by the same tps80032 regulator as both MMC0 voltages - see > > comment + * above > > + */ > > +static struct regulator_consumer_supply vcc_sdhi0_consumers[] = > > +{ > > REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi.0"), > > +}; > > + > > +static struct regulator_init_data vcc_sdhi0_init_data = { > > + .constraints = { > > + .valid_ops_mask = REGULATOR_CHANGE_STATUS, > > + }, > > + .num_consumer_supplies = ARRAY_SIZE(vcc_sdhi0_consumers), > > + .consumer_supplies = vcc_sdhi0_consumers, > > +}; > > + > > +static const struct fixed_voltage_config vcc_sdhi0_info __initconst = { > > + .supply_name = "SDHI0 Vcc", > > + .microvolts = 3000000, > > Despite being called VSD_3V0 in the schematics, I think the voltage is 3.3V. The documents are indeed contradictory. The voltage is called VSD_3V0, however, as you correctly point out, on another page the schematics show "LDO 300mA 3.3V." However, the board documentation specifies: "LDO14: 2.95V / 300 mA" for VSD_3V0... The microSD specification says operating voltage is between 2.7 and 3.6V, so, either should work. Obviously, I don't care either way, updating both affected patches would be a matter of minutes. Any votes? :) Thanks Guennadi > > + .gpio = 76, > > + .enable_high = 1, > > + .init_data = &vcc_sdhi0_init_data, > > +}; > > + > > +/* > > + * SDHI1 power supplies: > > + * Vcc and VccQ to SDHI1 on APE6EVM are both fixed at 3.3V > > + */ > > +static struct regulator_consumer_supply vcc_sdhi1_consumers[] = > > +{ > > REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi.1"), > > }; > > > > @@ -161,14 +194,19 @@ static void __init ape6evm_add_standard_devices(void) > > platform_device_register_resndata(&platform_bus, "smsc911x", -1, > > lan9220_res, ARRAY_SIZE(lan9220_res), > > &lan9220_data, sizeof(lan9220_data)); > > - regulator_register_always_on(1, "fixed-3.3V", fixed3v3_power_consumers, > > - ARRAY_SIZE(fixed3v3_power_consumers), 3300000); > > + > > + regulator_register_always_on(1, "MMC0 Vcc", vcc_mmc0_consumers, > > + ARRAY_SIZE(vcc_mmc0_consumers), 2800000); > > platform_device_register_resndata(&platform_bus, "sh_mmcif", 0, > > mmcif0_resources, ARRAY_SIZE(mmcif0_resources), > > &mmcif0_pdata, sizeof(mmcif0_pdata)); > > + platform_device_register_data(&platform_bus, "reg-fixed-voltage", 2, > > + &vcc_sdhi0_info, sizeof(vcc_sdhi0_info)); > > platform_device_register_resndata(&platform_bus, "sh_mobile_sdhi", 0, > > sdhi0_resources, ARRAY_SIZE(sdhi0_resources), > > &sdhi0_pdata, sizeof(sdhi0_pdata)); > > + regulator_register_always_on(3, "SDHI1 Vcc", vcc_sdhi1_consumers, > > + ARRAY_SIZE(vcc_sdhi1_consumers), 3300000); > > platform_device_register_resndata(&platform_bus, "sh_mobile_sdhi", 1, > > sdhi1_resources, ARRAY_SIZE(sdhi1_resources), > > &sdhi1_pdata, sizeof(sdhi1_pdata)); > -- > Regards, > > Laurent Pinchart > --- Guennadi Liakhovetski, Ph.D. Freelance Open-Source Software Developer http://www.open-technology.de/ -- To unsubscribe from this list: send the line "unsubscribe linux-sh" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi Guennadi, On Wednesday 31 July 2013 15:15:21 Guennadi Liakhovetski wrote: > On Wed, 31 Jul 2013, Laurent Pinchart wrote: > > On Wednesday 31 July 2013 14:40:15 Guennadi Liakhovetski wrote: > > > Currently a dummy fixed always-on regulator is used for all 3 SD/MMC > > > interfaces on ape6evm. This patch updates the board to use correct > > > supplies for MMC0, SDHI0 and SDHI1 VDD. SDHI0 VccQ supply regulator > > > should be implemented in a separate patch. > > > > > > Signed-off-by: Guennadi Liakhovetski <g.liakhovetski+renesas@gmail.com> > > > --- > > > > > > v2: improve comments. > > > > > > arch/arm/mach-shmobile/board-ape6evm.c | 54 ++++++++++++++++++++----- > > > 1 files changed, 46 insertions(+), 8 deletions(-) > > > > > > diff --git a/arch/arm/mach-shmobile/board-ape6evm.c > > > b/arch/arm/mach-shmobile/board-ape6evm.c index c5e6cba..823de50 100644 > > > --- a/arch/arm/mach-shmobile/board-ape6evm.c > > > +++ b/arch/arm/mach-shmobile/board-ape6evm.c > > > @@ -59,16 +59,49 @@ static const struct smsc911x_platform_config > > > lan9220_data __initconst = { }; > > > /* > > > - * On APE6EVM power is supplied to MMCIF by a tps80032 regulator. For > > > now > > > - * we model a VDD supply to MMCIF, using a fixed 3.3V regulator. Also > > > use > > > - * the static power supply for SDHI0 and SDHI1, whereas SDHI0's VccQ is > > > - * also supplied by the same tps80032 regulator and thus can also be > > > - * adjusted dynamically. > > > + * MMC0 power supplies: > > > + * Both Vcc and VccQ to eMMC on APE6EVM are supplied by a tps80032 > > > voltage > > > + * regulator. Until support for it is added to this file we simulate > > > the > > > + * Vcc supply by a fixed always-on regulator > > > */ > > > -static struct regulator_consumer_supply fixed3v3_power_consumers[] = > > > +static struct regulator_consumer_supply vcc_mmc0_consumers[] = > > > { > > > REGULATOR_SUPPLY("vmmc", "sh_mmcif.0"), > > > > > > +}; > > > + > > > +/* > > > + * SDHI0 power supplies: > > > + * Vcc to SDHI0 on APE6EVM is supplied by a GPIO-switchable regulator. > > > VccQ is + * provided by the same tps80032 regulator as both MMC0 > > > voltages - see comment + * above > > > + */ > > > +static struct regulator_consumer_supply vcc_sdhi0_consumers[] = > > > +{ > > > REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi.0"), > > > +}; > > > + > > > +static struct regulator_init_data vcc_sdhi0_init_data = { > > > + .constraints = { > > > + .valid_ops_mask = REGULATOR_CHANGE_STATUS, > > > + }, > > > + .num_consumer_supplies = ARRAY_SIZE(vcc_sdhi0_consumers), > > > + .consumer_supplies = vcc_sdhi0_consumers, > > > +}; > > > + > > > +static const struct fixed_voltage_config vcc_sdhi0_info __initconst = { > > > + .supply_name = "SDHI0 Vcc", > > > + .microvolts = 3000000, > > > > Despite being called VSD_3V0 in the schematics, I think the voltage is > > 3.3V. > > The documents are indeed contradictory. The voltage is called VSD_3V0, > however, as you correctly point out, on another page the schematics show > "LDO 300mA 3.3V." However, the board documentation specifies: "LDO14: > 2.95V / 300 mA" for VSD_3V0... The microSD specification says operating > voltage is between 2.7 and 3.6V, so, either should work. Obviously, I > don't care either way, updating both affected patches would be a matter of > minutes. Any votes? :) I've checked on the board and the regulator is marked "RBBON". According to http://www.ricoh.com/LSI/product_power/mark/ME-RP114N.pdf it's an RP114N331D, and thus outputs 3.3V. > > > + .gpio = 76, > > > + .enable_high = 1, > > > + .init_data = &vcc_sdhi0_init_data, > > > +};
diff --git a/arch/arm/mach-shmobile/board-ape6evm.c b/arch/arm/mach-shmobile/board-ape6evm.c index c5e6cba..823de50 100644 --- a/arch/arm/mach-shmobile/board-ape6evm.c +++ b/arch/arm/mach-shmobile/board-ape6evm.c @@ -59,16 +59,49 @@ static const struct smsc911x_platform_config lan9220_data __initconst = { }; /* - * On APE6EVM power is supplied to MMCIF by a tps80032 regulator. For now we - * model a VDD supply to MMCIF, using a fixed 3.3V regulator. Also use the - * static power supply for SDHI0 and SDHI1, whereas SDHI0's VccQ is also - * supplied by the same tps80032 regulator and thus can also be adjusted - * dynamically. + * MMC0 power supplies: + * Both Vcc and VccQ to eMMC on APE6EVM are supplied by a tps80032 voltage + * regulator. Until support for it is added to this file we simulate the + * Vcc supply by a fixed always-on regulator */ -static struct regulator_consumer_supply fixed3v3_power_consumers[] = +static struct regulator_consumer_supply vcc_mmc0_consumers[] = { REGULATOR_SUPPLY("vmmc", "sh_mmcif.0"), +}; + +/* + * SDHI0 power supplies: + * Vcc to SDHI0 on APE6EVM is supplied by a GPIO-switchable regulator. VccQ is + * provided by the same tps80032 regulator as both MMC0 voltages - see comment + * above + */ +static struct regulator_consumer_supply vcc_sdhi0_consumers[] = +{ REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi.0"), +}; + +static struct regulator_init_data vcc_sdhi0_init_data = { + .constraints = { + .valid_ops_mask = REGULATOR_CHANGE_STATUS, + }, + .num_consumer_supplies = ARRAY_SIZE(vcc_sdhi0_consumers), + .consumer_supplies = vcc_sdhi0_consumers, +}; + +static const struct fixed_voltage_config vcc_sdhi0_info __initconst = { + .supply_name = "SDHI0 Vcc", + .microvolts = 3000000, + .gpio = 76, + .enable_high = 1, + .init_data = &vcc_sdhi0_init_data, +}; + +/* + * SDHI1 power supplies: + * Vcc and VccQ to SDHI1 on APE6EVM are both fixed at 3.3V + */ +static struct regulator_consumer_supply vcc_sdhi1_consumers[] = +{ REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi.1"), }; @@ -161,14 +194,19 @@ static void __init ape6evm_add_standard_devices(void) platform_device_register_resndata(&platform_bus, "smsc911x", -1, lan9220_res, ARRAY_SIZE(lan9220_res), &lan9220_data, sizeof(lan9220_data)); - regulator_register_always_on(1, "fixed-3.3V", fixed3v3_power_consumers, - ARRAY_SIZE(fixed3v3_power_consumers), 3300000); + + regulator_register_always_on(1, "MMC0 Vcc", vcc_mmc0_consumers, + ARRAY_SIZE(vcc_mmc0_consumers), 2800000); platform_device_register_resndata(&platform_bus, "sh_mmcif", 0, mmcif0_resources, ARRAY_SIZE(mmcif0_resources), &mmcif0_pdata, sizeof(mmcif0_pdata)); + platform_device_register_data(&platform_bus, "reg-fixed-voltage", 2, + &vcc_sdhi0_info, sizeof(vcc_sdhi0_info)); platform_device_register_resndata(&platform_bus, "sh_mobile_sdhi", 0, sdhi0_resources, ARRAY_SIZE(sdhi0_resources), &sdhi0_pdata, sizeof(sdhi0_pdata)); + regulator_register_always_on(3, "SDHI1 Vcc", vcc_sdhi1_consumers, + ARRAY_SIZE(vcc_sdhi1_consumers), 3300000); platform_device_register_resndata(&platform_bus, "sh_mobile_sdhi", 1, sdhi1_resources, ARRAY_SIZE(sdhi1_resources), &sdhi1_pdata, sizeof(sdhi1_pdata));
Currently a dummy fixed always-on regulator is used for all 3 SD/MMC interfaces on ape6evm. This patch updates the board to use correct supplies for MMC0, SDHI0 and SDHI1 VDD. SDHI0 VccQ supply regulator should be implemented in a separate patch. Signed-off-by: Guennadi Liakhovetski <g.liakhovetski+renesas@gmail.com> --- v2: improve comments. arch/arm/mach-shmobile/board-ape6evm.c | 54 +++++++++++++++++++++++++++----- 1 files changed, 46 insertions(+), 8 deletions(-)