From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Cc: Simon <horms@verge.net.au>, Chris Ball <cjb@laptop.org>,
Magnus <magnus.damm@gmail.com>,
Linux-SH <linux-sh@vger.kernel.org>,
Kuninori Morimoto <kuninori.morimoto.gx@gmail.com>,
linux-mmc@vger.kernel.org
Subject: Re: [PATCH 17/17] ARM: shmobile: lager: use gpio/fixed regulator for SDHI
Date: Thu, 14 Nov 2013 14:51:24 +0100 [thread overview]
Message-ID: <6658395.y4IG39SdVx@avalon> (raw)
In-Reply-To: <87r4ajxodj.wl%kuninori.morimoto.gx@renesas.com>
Hi Morimoto-san,
Thank you for the patch.
On Thursday 14 November 2013 02:35:08 Kuninori Morimoto wrote:
> SDHI0/2 Vcc/Vccq can use gpio/fixed regulator driver
>
> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> ---
> arch/arm/mach-shmobile/board-lager.c | 89 ++++++++++++++++++++++++++-----
> 1 file changed, 78 insertions(+), 11 deletions(-)
>
> diff --git a/arch/arm/mach-shmobile/board-lager.c
> b/arch/arm/mach-shmobile/board-lager.c index 2e529dc..7c77521 100644
> --- a/arch/arm/mach-shmobile/board-lager.c
> +++ b/arch/arm/mach-shmobile/board-lager.c
> @@ -33,7 +33,9 @@
> #include <linux/platform_data/rcar-du.h>
> #include <linux/platform_device.h>
> #include <linux/phy.h>
> +#include <linux/regulator/driver.h>
> #include <linux/regulator/fixed.h>
> +#include <linux/regulator/gpio-regulator.h>
> #include <linux/regulator/machine.h>
> #include <linux/sh_eth.h>
> #include <mach/common.h>
> @@ -154,10 +156,6 @@ static const struct gpio_keys_platform_data
> lager_keys_pdata __initconst = { static struct regulator_consumer_supply
> fixed3v3_power_consumers[] = {
> REGULATOR_SUPPLY("vmmc", "sh_mmcif.1"),
> - REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi.0"),
> - REGULATOR_SUPPLY("vqmmc", "sh_mobile_sdhi.0"),
> - REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi.2"),
> - REGULATOR_SUPPLY("vqmmc", "sh_mobile_sdhi.2"),
> };
>
> /* MMCIF */
> @@ -185,9 +183,67 @@ static const struct resource ether_resources[]
> __initconst = { DEFINE_RES_IRQ(gic_spi(162)),
> };
>
> +/* SDHI regulator macro */
> +#define SDHI_REGULATOR(idx, vdd_pin, vccq_pin) \
> +static struct regulator_consumer_supply vcc_sdhi##idx##_consumer = \
> + REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi." #idx); \
> + \
> +static struct regulator_init_data vcc_sdhi##idx##_init_data = { \
> + .constraints = { \
> + .valid_ops_mask = REGULATOR_CHANGE_STATUS, \
> + }, \
> + .consumer_supplies = &vcc_sdhi##idx##_consumer, \
> + .num_consumer_supplies = 1, \
> +}; \
> + \
> +static struct fixed_voltage_config vcc_sdhi##idx##_info = { \
> + .supply_name = "SDHI" #idx "Vcc", \
> + .microvolts = 3300000, \
> + .gpio = vdd_pin, \
> + .enable_high = 1, \
> + .init_data = &vcc_sdhi##idx##_init_data, \
> +}; \
> + \
> +static struct regulator_consumer_supply vccq_sdhi##idx##_consumer= \
> + REGULATOR_SUPPLY("vqmmc", "sh_mobile_sdhi." #idx); \
> + \
> +static struct regulator_init_data vccq_sdhi##idx##_init_data = { \
> + .constraints = { \
> + .input_uV = 3300000, \
> + .min_uV = 1800000, \
> + .max_uV = 3300000, \
> + .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE | \
> + REGULATOR_CHANGE_STATUS, \
> + }, \
> + .consumer_supplies = &vccq_sdhi##idx##_consumer, \
> + .num_consumer_supplies = 1, \
> +}; \
> + \
> +static struct gpio vccq_sdhi##idx##_gpio = \
> + { vccq_pin, GPIOF_OUT_INIT_HIGH, "vccq-sdhi" #idx }; \
> + \
> +static struct gpio_regulator_state vccq_sdhi##idx##_states[] = { \
> + { .value = 1800000, .gpios = 0 }, \
> + { .value = 3300000, .gpios = 1 }, \
> +}; \
> + \
> +static struct gpio_regulator_config vccq_sdhi##idx##_info = { \
> + .supply_name = "vqmmc", \
> + .gpios = &vccq_sdhi##idx##_gpio, \
> + .nr_gpios = 1, \
> + .states = vccq_sdhi##idx##_states, \
> + .nr_states = ARRAY_SIZE(vccq_sdhi##idx##_states), \
> + .type = REGULATOR_VOLTAGE, \
> + .init_data = &vccq_sdhi##idx##_init_data, \
> +};
The vmmc regulator looks fine to me at first sight, but I'm less sure about
the vqmmc regulator. The vqmmc supplies are provided by the PMIC, we should
ideally use the existing da9063 mfd driver. As this might require a
significant amount of work I'm fine with this approach as a quick fix, but I'd
like a comment in the source code stating that vqmmc should be handled by the
da9063 driver.
> +SDHI_REGULATOR(0, RCAR_GP_PIN(5, 24), RCAR_GP_PIN(5, 29));
> +SDHI_REGULATOR(2, RCAR_GP_PIN(5, 25), RCAR_GP_PIN(5, 30));
> +
> /* SDHI0 */
> static struct sh_mobile_sdhi_info sdhi0_info __initdata = {
> - .tmio_caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ,
> + .tmio_caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ |
> + MMC_CAP_POWER_OFF_CARD,
> .tmio_caps2 = MMC_CAP2_NO_MULTI_READ,
> .tmio_flags = TMIO_MMC_HAS_IDLE_WAIT |
> TMIO_MMC_WRPROTECT_DISABLE,
> @@ -200,7 +256,8 @@ static struct resource sdhi0_resources[] __initdata = {
>
> /* SDHI2 */
> static struct sh_mobile_sdhi_info sdhi2_info __initdata = {
> - .tmio_caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ,
> + .tmio_caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ |
> + MMC_CAP_POWER_OFF_CARD,
> .tmio_caps2 = MMC_CAP2_NO_MULTI_READ,
> .tmio_flags = TMIO_MMC_HAS_IDLE_WAIT |
> TMIO_MMC_WRPROTECT_DISABLE,
> @@ -259,6 +316,9 @@ static const struct pinctrl_map lager_pinctrl_map[] = {
>
> static void __init lager_add_standard_devices(void)
> {
> + int fixed_regulator_idx = 0;
> + int gpio_regulator_idx = 0;
> +
> r8a7790_clock_init();
>
> pinctrl_register_mappings(lager_pinctrl_map,
> @@ -272,7 +332,8 @@ static void __init lager_add_standard_devices(void)
> platform_device_register_data(&platform_bus, "gpio-keys", -1,
> &lager_keys_pdata,
> sizeof(lager_keys_pdata));
> - regulator_register_always_on(0, "fixed-3.3V", fixed3v3_power_consumers,
> + regulator_register_always_on(fixed_regulator_idx++,
> + "fixed-3.3V", fixed3v3_power_consumers,
> ARRAY_SIZE(fixed3v3_power_consumers), 3300000);
> platform_device_register_resndata(&platform_bus, "sh_mmcif", 1,
> mmcif1_resources, ARRAY_SIZE(mmcif1_resources),
> @@ -285,10 +346,16 @@ static void __init lager_add_standard_devices(void)
>
> lager_add_du_device();
>
> - gpio_request_one(RCAR_GP_PIN(5, 24), GPIOF_OUT_INIT_HIGH, NULL); /* SD0
> VDD 3.3V */ - gpio_request_one(RCAR_GP_PIN(5, 25), GPIOF_OUT_INIT_HIGH,
> NULL); /* SD2 VDD 3.3V */ - gpio_request_one(RCAR_GP_PIN(5, 29),
> GPIOF_OUT_INIT_HIGH, NULL); /* SD0 VccQ 3.3V */
> - gpio_request_one(RCAR_GP_PIN(5, 30), GPIOF_OUT_INIT_HIGH, NULL); /* SD2
> VccQ 3.3V */ + platform_device_register_data(&platform_bus,
> "reg-fixed-voltage", fixed_regulator_idx++, +
&vcc_sdhi0_info,
> sizeof(struct fixed_voltage_config));
> + platform_device_register_data(&platform_bus, "reg-fixed-voltage",
> fixed_regulator_idx++, + &vcc_sdhi2_info, sizeof(struct
> fixed_voltage_config));
> +
> + platform_device_register_data(&platform_bus, "gpio-regulator",
> gpio_regulator_idx++, + &vccq_sdhi0_info, sizeof(struct
> gpio_regulator_config)); + platform_device_register_data(&platform_bus,
> "gpio-regulator", gpio_regulator_idx++, +
&vccq_sdhi2_info,
> sizeof(struct gpio_regulator_config)); +
> platform_device_register_resndata(&platform_bus, "sh_mobile_sdhi", 0,
> sdhi0_resources, ARRAY_SIZE(sdhi0_resources),
> &sdhi0_info, sizeof(struct sh_mobile_sdhi_info));
--
Regards,
Laurent Pinchart
next prev parent reply other threads:[~2013-11-14 13:50 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-14 10:16 [PATCH 0/16] SDHI support for r8a7790 Kuninori Morimoto
2013-11-14 10:18 ` [PATCH 0/16]: gpio-rcar fixup Kuninori Morimoto
2013-11-14 10:19 ` [PATCH 01/16] gpio: rcar: use postcore_init() Kuninori Morimoto
2013-11-14 13:42 ` Laurent Pinchart
2013-11-15 0:26 ` Kuninori Morimoto
2013-11-18 14:00 ` Laurent Pinchart
2013-11-19 9:57 ` Linus Walleij
2013-11-19 12:36 ` Laurent Pinchart
2013-11-21 2:02 ` Kuninori Morimoto
2013-11-14 10:21 ` [PATCH 0/16] mmc: bug fix patches Kuninori Morimoto
2013-11-14 10:23 ` [PATCH 03/17] mmc: tmio: Fix odd size access Kuninori Morimoto
2013-11-14 13:32 ` Laurent Pinchart
2013-11-14 10:24 ` [PATCH 04/17] mmc: tmio: Add error IRQ status clear Kuninori Morimoto
2013-11-14 13:34 ` Laurent Pinchart
2013-11-14 10:24 ` [PATCH 05/17] mmc: tmio: don't overwrite caps2 Kuninori Morimoto
2013-11-14 13:36 ` Laurent Pinchart
2013-11-14 10:26 ` [PATCH 0/16] ARM: shmobile: bug fix Kuninori Morimoto
2013-11-14 10:27 ` [PATCH 06/17] ARM: shmobile: marzen: remove SDHI0 WP pin setting from DTS Kuninori Morimoto
2013-11-14 13:38 ` Laurent Pinchart
2013-11-14 10:27 ` [PATCH 07/17] ARM: shmobile: marzen: remove SDHI0 WP pin setting Kuninori Morimoto
2013-11-14 13:38 ` Laurent Pinchart
2013-11-14 10:27 ` [PATCH 08/17] ARM: shmobile: sh73a0: fixup sdhi compatible name Kuninori Morimoto
2013-11-14 13:39 ` Laurent Pinchart
2013-11-14 10:29 ` [PATCH 0/16] mmc: SDHI: add new feature Kuninori Morimoto
2013-11-14 10:30 ` [PATCH 09/17] mmc: tmio: bus_shift become tmio_mmc_data member Kuninori Morimoto
2013-11-14 10:31 ` [PATCH 10/17] mmc: tmio: add new TMIO_MMC_HAVE_HIGH_REG flags Kuninori Morimoto
2013-11-14 10:31 ` [PATCH 11/17] mmc: SDHI: add SoC specific workaround via HW version Kuninori Morimoto
2013-11-14 14:03 ` Sergei Shtylyov
2013-11-15 0:16 ` Kuninori Morimoto
2013-11-14 10:31 ` [PATCH 12/17] mmc: SDHI: tidyup sh_mobile_sdhi_of_match position Kuninori Morimoto
2013-11-14 10:32 ` [PATCH 13/17] mmc: SDHI: updata sh_mobile_sdhi_of_data for r8a7778 Kuninori Morimoto
2013-11-14 10:32 ` [PATCH 14/17] mmc: SDHI: updata sh_mobile_sdhi_of_data for r8a7779 Kuninori Morimoto
2013-11-14 10:32 ` [PATCH 15/17] mmc: SDHI: updata sh_mobile_sdhi_of_data for r8a7790 Kuninori Morimoto
2013-11-14 10:34 ` [PATCH 0/16] ARM: shmobile: SDHI support " Kuninori Morimoto
2013-11-14 10:34 ` [PATCH 16/17] ARM: shmobile: lager: add SDHI0/2 support Kuninori Morimoto
2013-11-14 10:35 ` [PATCH 17/17] ARM: shmobile: lager: use gpio/fixed regulator for SDHI Kuninori Morimoto
2013-11-14 13:51 ` Laurent Pinchart [this message]
2013-11-15 0:42 ` Kuninori Morimoto
2013-11-14 13:46 ` [PATCH 0/16] ARM: shmobile: SDHI support for r8a7790 Laurent Pinchart
2013-11-15 0:43 ` Kuninori Morimoto
2013-11-15 1:53 ` Kuninori Morimoto
2013-11-15 1:55 ` [PATCH 1/2 v2] ARM: shmobile: lager: add gpio/fixed regulator for SDHI Kuninori Morimoto
2013-11-18 11:35 ` Laurent Pinchart
2013-11-19 5:14 ` Kuninori Morimoto
2013-11-19 12:45 ` Laurent Pinchart
2013-11-20 7:37 ` Kuninori Morimoto
2013-11-20 10:57 ` Laurent Pinchart
2013-11-21 1:53 ` Kuninori Morimoto
2013-11-15 1:56 ` [PATCH 2/2 v2] ARM: shmobile: lager: add SDHI0/2 support Kuninori Morimoto
2013-11-18 7:21 ` [PATCH 0/16] ARM: shmobile: SDHI support for r8a7790 Simon Horman
2013-11-18 7:42 ` Kuninori Morimoto
2013-11-21 3:53 ` Simon Horman
2013-11-21 5:20 ` Kuninori Morimoto
2013-11-21 8:48 ` Simon Horman
2013-11-20 0:43 ` [PATCH 0/16] " Kuninori Morimoto
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=6658395.y4IG39SdVx@avalon \
--to=laurent.pinchart@ideasonboard.com \
--cc=cjb@laptop.org \
--cc=horms@verge.net.au \
--cc=kuninori.morimoto.gx@gmail.com \
--cc=kuninori.morimoto.gx@renesas.com \
--cc=linux-mmc@vger.kernel.org \
--cc=linux-sh@vger.kernel.org \
--cc=magnus.damm@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox