Skip to contentSkip to conversation

mmc: dw_mmc: use mmc_regulator_get_supply to handle regulators

PATCH New Bartlomiej Zolnierkiewicz 2 participants 3 messages Oct 1, 2014 – Oct 2, 2014 1 message not in the archive

Subsystems (2)
lore
Share & tools
lore

A message that is not in the archive (sent off-list or not yet received): [email protected]

#1 lore raw

PATCH v2 1/3 mmc: dw_mmc: use mmc_regulator_get_supply to handle regulators

Hi,

Quoted 4 lines · YUVARAJ CD

Since I am out of station, i dont have an access to my work set up.
Can you send me the dts entries of sd crad and their corresponding regulator entries?

From arch/arm/boot/dts/exynos5420-arndale-octa.dts:

...

        mmc at 12200000 {
                status = "okay";
                broken-cd;
                supports-highspeed;
                card-detect-delay = <200>;
                samsung,dw-mshc-ciu-div = <3>;
                samsung,dw-mshc-sdr-timing = <0 4>;
                samsung,dw-mshc-ddr-timing = <0 2>;
                pinctrl-names = "default";
                pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus4 &sd0_bus8>;
                vmmc-supply = <&ldo10_reg>;

                slot at 0 {
                        reg = <0>;
                        bus-width = <8>;
                };
        };

        mmc at 12220000 {
                status = "okay";
                supports-highspeed;
                card-detect-delay = <200>;
                samsung,dw-mshc-ciu-div = <3>;
                samsung,dw-mshc-sdr-timing = <2 3>;
                samsung,dw-mshc-ddr-timing = <1 2>;
                pinctrl-names = "default";
                pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>;
                vmmc-supply = <&ldo10_reg>;

                slot at 0 {
                        reg = <0>;
                        bus-width = <4>;
                };
        };
...
                                ldo10_reg: LDO10 {
                                        regulator-name = "PVDD_PRE_1V8";
                                        regulator-min-microvolt = <1800000>;
                                        regulator-max-microvolt = <1800000>;
                                        regulator-always-on;
                                };

...

Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics

#2 lore raw

PATCH v2 1/3 mmc: dw_mmc: use mmc_regulator_get_supply to handle regulators

Hi,

Quoted 44 lines · Bartlomiej Zolnierkiewicz

Hi,

Quoted 2 lines · YUVARAJ CD

Since I am out of station, i dont have an access to my work set up.
Can you send me the dts entries of sd crad and their corresponding regulator entries?

From arch/arm/boot/dts/exynos5420-arndale-octa.dts:

...

        mmc at 12200000 {
                status = "okay";
                broken-cd;
                supports-highspeed;
                card-detect-delay = <200>;
                samsung,dw-mshc-ciu-div = <3>;
                samsung,dw-mshc-sdr-timing = <0 4>;
                samsung,dw-mshc-ddr-timing = <0 2>;
                pinctrl-names = "default";
                pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus4 &sd0_bus8>;
                vmmc-supply = <&ldo10_reg>;

                slot at 0 {
                        reg = <0>;
                        bus-width = <8>;
                };
        };

        mmc at 12220000 {
                status = "okay";
                supports-highspeed;
                card-detect-delay = <200>;
                samsung,dw-mshc-ciu-div = <3>;
                samsung,dw-mshc-sdr-timing = <2 3>;
                samsung,dw-mshc-ddr-timing = <1 2>;
                pinctrl-names = "default";
                pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>;
                vmmc-supply = <&ldo10_reg>;

                slot at 0 {
                        reg = <0>;
                        bus-width = <4>;
                };
Quoted 8 lines
        };
...
                                ldo10_reg: LDO10 {
                                        regulator-name = "PVDD_PRE_1V8";
                                        regulator-min-microvolt = <1800000>;
                                        regulator-max-microvolt = <1800000>;
                                        regulator-always-on;
                                };

I don't have schematics for Arndale Octa, but the above is really fishy. "vmmc" shouldn't be 1.8V. That's the general power signal to MMC and should be 2.7V - 3.6V. "vqmmc" could be 1.8V in certain situations, but my understanding is that for maximum compatibility it should at least start out identical to "vmmc" (and later go down to 1.7V - 1.95V).

My first thought would be to just remove the "vmmc-supply" from your DTS. I think we could land that and pick it back easily. That will get you something working and won't introduce any regressions because:
1. MMC core will give you a dummy regulator
2. The code will default to assuming that vmmc is 3.3V, which is what it used to do anyway.
3. The only referenced regulator is always on anyway.

Separately you could specify a proper vmmc and maybe even a vqmmc.

On SMDK5420 I see this for the SD card (mmc2):
* vmmc should be "VDD_SD_2V8". From LDO19.
* vqmmc should be "VDDQ_MMC2_AP". From LDO13.

OK, I dug up the Arndale schematics. For mmc2:
* vmmc should be PVDD_TFLASH_2V8. That's LDO19.
* vqmmc (hooked up to VDDQ_MMC2): PVDD_APIO_MMCOFF_2V8. LDO13 just like SMDK.

...sadly it looks like Anrdale has a schematics problem that prevents you from doing UHS. I see that the data lines are pulled up to PVDD_TFLASH_2V8 (vmmc), not pulled up to PVDD_APIO_MMCOFF_2V8 (vqmmc). I think that means that if you ever lower vqmmc to 1.8V (as needed for UHS) then you'll still be pulling up to 2.8V. That's not good. You should probably make sure that both LDO13 and LDO19 are listed as being exactly 2.8V.

Anyway, the above has (obviously) not been tested and is just based on a casual browsing of schematics. Please let me know how it goes.

-Doug

#3 lore raw

PATCH v2 1/3 mmc: dw_mmc: use mmc_regulator_get_supply to handle regulators

Hi,

Quoted 91 lines · Doug Anderson

Hi,

Quoted 44 lines · Bartlomiej Zolnierkiewicz

Hi,

Quoted 2 lines · YUVARAJ CD

Since I am out of station, i dont have an access to my work set up.
Can you send me the dts entries of sd crad and their corresponding regulator entries?

From arch/arm/boot/dts/exynos5420-arndale-octa.dts:

...

        mmc at 12200000 {
                status = "okay";
                broken-cd;
                supports-highspeed;
                card-detect-delay = <200>;
                samsung,dw-mshc-ciu-div = <3>;
                samsung,dw-mshc-sdr-timing = <0 4>;
                samsung,dw-mshc-ddr-timing = <0 2>;
                pinctrl-names = "default";
                pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus4 &sd0_bus8>;
                vmmc-supply = <&ldo10_reg>;

                slot at 0 {
                        reg = <0>;
                        bus-width = <8>;
                };
        };

        mmc at 12220000 {
                status = "okay";
                supports-highspeed;
                card-detect-delay = <200>;
                samsung,dw-mshc-ciu-div = <3>;
                samsung,dw-mshc-sdr-timing = <2 3>;
                samsung,dw-mshc-ddr-timing = <1 2>;
                pinctrl-names = "default";
                pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>;
                vmmc-supply = <&ldo10_reg>;

                slot at 0 {
                        reg = <0>;
                        bus-width = <4>;
                };
Quoted 8 lines
        };
...
                                ldo10_reg: LDO10 {
                                        regulator-name = "PVDD_PRE_1V8";
                                        regulator-min-microvolt = <1800000>;
                                        regulator-max-microvolt = <1800000>;
                                        regulator-always-on;
                                };

I don't have schematics for Arndale Octa, but the above is really fishy. "vmmc" shouldn't be 1.8V. That's the general power signal to MMC and should be 2.7V - 3.6V. "vqmmc" could be 1.8V in certain situations, but my understanding is that for maximum compatibility it should at least start out identical to "vmmc" (and later go down to 1.7V - 1.95V).

My first thought would be to just remove the "vmmc-supply" from your DTS. I think we could land that and pick it back easily. That will get you something working and won't introduce any regressions because:
1. MMC core will give you a dummy regulator
2. The code will default to assuming that vmmc is 3.3V, which is what it used to do anyway.
3. The only referenced regulator is always on anyway.

Separately you could specify a proper vmmc and maybe even a vqmmc.

On SMDK5420 I see this for the SD card (mmc2):
* vmmc should be "VDD_SD_2V8". From LDO19.
* vqmmc should be "VDDQ_MMC2_AP". From LDO13.

OK, I dug up the Arndale schematics. For mmc2:
* vmmc should be PVDD_TFLASH_2V8. That's LDO19.
* vqmmc (hooked up to VDDQ_MMC2): PVDD_APIO_MMCOFF_2V8. LDO13 just like SMDK.

...sadly it looks like Anrdale has a schematics problem that prevents you from doing UHS. I see that the data lines are pulled up to PVDD_TFLASH_2V8 (vmmc), not pulled up to PVDD_APIO_MMCOFF_2V8 (vqmmc). I think that means that if you ever lower vqmmc to 1.8V (as needed for UHS) then you'll still be pulling up to 2.8V. That's not good. You should probably make sure that both LDO13 and LDO19 are listed as being exactly 2.8V.

Quoted 2 lines

Anyway, the above has (obviously) not been tested and is just based on a casual browsing of schematics. Please let me know how it goes.

Removing the "vmmc-supply" entry fixes the problem. Using LDO13 for vmmc and LDO19 for vqmmc also works fine. I'll post a patch fixing the mmc2 DT entry to Kukjin in a few minutes. Thank you for your help.

Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics