Discussion:
[PATCH] ARM: dts: fix MMC2 regulators for Exynos5420 Arndale Octa board
Bartlomiej Zolnierkiewicz
2014-10-02 16:10:06 UTC
Permalink
Regulators for MMC2 (SD card) are PVDD_TFLASH_2V8 (LDO19) for vmmc
and PVDD_APIO_MMCOFF_2V8 (LDO13) for vqmmc. Currently the device
tree entry for MMC2 uses PVDD_PRE_1V8 (LDO10) for vmmc and vqmmc is
not specified. Fix it.

Without this patch:
- "mmc: dw_mmc: use mmc_regulator_get_supply to handle regulators"
patch causes a SD card detection to fail
- "mmc: dw_mmc: Support voltage changes" patch causes a boot hang

This patch fixes both above problems.

Suggested-by: Doug Anderson <***@google.com>
Cc: Yuvaraj Kumar C D <***@samsung.com>
Cc: Ulf Hansson <***@linaro.org>
Signed-off-by: Bartlomiej Zolnierkiewicz <***@samsung.com>
Acked-by: Kyungmin Park <***@samsung.com>
---
arch/arm/boot/dts/exynos5420-arndale-octa.dts | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

Index: b/arch/arm/boot/dts/exynos5420-arndale-octa.dts
===================================================================
--- a/arch/arm/boot/dts/exynos5420-arndale-octa.dts 2014-10-02 15:44:53.014826886 +0200
+++ b/arch/arm/boot/dts/exynos5420-arndale-octa.dts 2014-10-02 17:35:24.110600398 +0200
@@ -74,7 +74,8 @@
samsung,dw-mshc-ddr-timing = <1 2>;
pinctrl-names = "default";
pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>;
- vmmc-supply = <&ldo10_reg>;
+ vmmc-supply = <&ldo19_reg>;
+ vqmmc-supply = <&ldo13_reg>;

***@0 {
reg = <0>;
Doug Anderson
2014-10-02 16:19:08 UTC
Permalink
Bartiomiej,

On Thu, Oct 2, 2014 at 9:10 AM, Bartlomiej Zolnierkiewicz
Post by Bartlomiej Zolnierkiewicz
Regulators for MMC2 (SD card) are PVDD_TFLASH_2V8 (LDO19) for vmmc
and PVDD_APIO_MMCOFF_2V8 (LDO13) for vqmmc. Currently the device
tree entry for MMC2 uses PVDD_PRE_1V8 (LDO10) for vmmc and vqmmc is
not specified. Fix it.
- "mmc: dw_mmc: use mmc_regulator_get_supply to handle regulators"
patch causes a SD card detection to fail
- "mmc: dw_mmc: Support voltage changes" patch causes a boot hang
This patch fixes both above problems.
---
arch/arm/boot/dts/exynos5420-arndale-octa.dts | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
Index: b/arch/arm/boot/dts/exynos5420-arndale-octa.dts
===================================================================
--- a/arch/arm/boot/dts/exynos5420-arndale-octa.dts 2014-10-02 15:44:53.014826886 +0200
+++ b/arch/arm/boot/dts/exynos5420-arndale-octa.dts 2014-10-02 17:35:24.110600398 +0200
@@ -74,7 +74,8 @@
samsung,dw-mshc-ddr-timing = <1 2>;
pinctrl-names = "default";
pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>;
- vmmc-supply = <&ldo10_reg>;
+ vmmc-supply = <&ldo19_reg>;
+ vqmmc-supply = <&ldo13_reg>;
This looks right to me. ...but I notice that ldo13 and ldo19 are not
"always-on" in the DTS. Are you sure card detect works for you if you
eject your card and try to put it back in?

...eventually the "always-on" won't be needed, but for now I think it is...

-Doug
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to ***@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Bartlomiej Zolnierkiewicz
2014-10-02 16:39:27 UTC
Permalink
Post by Doug Anderson
Bartiomiej,
On Thu, Oct 2, 2014 at 9:10 AM, Bartlomiej Zolnierkiewicz
Post by Bartlomiej Zolnierkiewicz
Regulators for MMC2 (SD card) are PVDD_TFLASH_2V8 (LDO19) for vmmc
and PVDD_APIO_MMCOFF_2V8 (LDO13) for vqmmc. Currently the device
tree entry for MMC2 uses PVDD_PRE_1V8 (LDO10) for vmmc and vqmmc is
not specified. Fix it.
- "mmc: dw_mmc: use mmc_regulator_get_supply to handle regulators"
patch causes a SD card detection to fail
- "mmc: dw_mmc: Support voltage changes" patch causes a boot hang
This patch fixes both above problems.
---
arch/arm/boot/dts/exynos5420-arndale-octa.dts | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
Index: b/arch/arm/boot/dts/exynos5420-arndale-octa.dts
===================================================================
--- a/arch/arm/boot/dts/exynos5420-arndale-octa.dts 2014-10-02 15:44:53.014826886 +0200
+++ b/arch/arm/boot/dts/exynos5420-arndale-octa.dts 2014-10-02 17:35:24.110600398 +0200
@@ -74,7 +74,8 @@
samsung,dw-mshc-ddr-timing = <1 2>;
pinctrl-names = "default";
pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>;
- vmmc-supply = <&ldo10_reg>;
+ vmmc-supply = <&ldo19_reg>;
+ vqmmc-supply = <&ldo13_reg>;
This looks right to me. ...but I notice that ldo13 and ldo19 are not
"always-on" in the DTS. Are you sure card detect works for you if you
eject your card and try to put it back in?
...eventually the "always-on" won't be needed, but for now I think it is...
Card detection works fine without "always-on".

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

--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to ***@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Doug Anderson
2014-10-02 16:45:41 UTC
Permalink
Bartiomiej

On Thu, Oct 2, 2014 at 9:39 AM, Bartlomiej Zolnierkiewicz
Post by Bartlomiej Zolnierkiewicz
Post by Doug Anderson
Bartiomiej,
On Thu, Oct 2, 2014 at 9:10 AM, Bartlomiej Zolnierkiewicz
Post by Bartlomiej Zolnierkiewicz
Regulators for MMC2 (SD card) are PVDD_TFLASH_2V8 (LDO19) for vmmc
and PVDD_APIO_MMCOFF_2V8 (LDO13) for vqmmc. Currently the device
tree entry for MMC2 uses PVDD_PRE_1V8 (LDO10) for vmmc and vqmmc is
not specified. Fix it.
- "mmc: dw_mmc: use mmc_regulator_get_supply to handle regulators"
patch causes a SD card detection to fail
- "mmc: dw_mmc: Support voltage changes" patch causes a boot hang
This patch fixes both above problems.
---
arch/arm/boot/dts/exynos5420-arndale-octa.dts | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
Index: b/arch/arm/boot/dts/exynos5420-arndale-octa.dts
===================================================================
--- a/arch/arm/boot/dts/exynos5420-arndale-octa.dts 2014-10-02 15:44:53.014826886 +0200
+++ b/arch/arm/boot/dts/exynos5420-arndale-octa.dts 2014-10-02 17:35:24.110600398 +0200
@@ -74,7 +74,8 @@
samsung,dw-mshc-ddr-timing = <1 2>;
pinctrl-names = "default";
pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>;
- vmmc-supply = <&ldo10_reg>;
+ vmmc-supply = <&ldo19_reg>;
+ vqmmc-supply = <&ldo13_reg>;
This looks right to me. ...but I notice that ldo13 and ldo19 are not
"always-on" in the DTS. Are you sure card detect works for you if you
eject your card and try to put it back in?
...eventually the "always-on" won't be needed, but for now I think it is...
Card detection works fine without "always-on".
That's weird.

1. In the schematics I see XMMC2CDN has an external pullup to PVDD_TFLASH_2V8.

2. The internal pullup should (I think) be to VDDQ_MMC2 which is
PVDD_APIO_MMCOFF_2V8.

3. In (51da224 mmc: dw_mmc: use mmc_regulator_get_supply to handle
regulators) we should be turning off both regulators in
"MMC_POWER_OFF".

4. If I understand correctly MMC_POWER_OFF is called when the card is
ejected, which means that both regulators should be off when the card
is ejected.

5. I don't think card detect can work if neither regulator is powered.


One of the above points must be wrong. Any idea which one? Can you
check to see if MMC_POWER_OFF is called for you when the card is
ejected? Can you check to see if these regulators are off?


-Doug
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to ***@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Bartlomiej Zolnierkiewicz
2014-10-02 17:24:39 UTC
Permalink
Hi,
Post by Doug Anderson
Bartiomiej
On Thu, Oct 2, 2014 at 9:39 AM, Bartlomiej Zolnierkiewicz
Post by Bartlomiej Zolnierkiewicz
Post by Doug Anderson
Bartiomiej,
On Thu, Oct 2, 2014 at 9:10 AM, Bartlomiej Zolnierkiewicz
Post by Bartlomiej Zolnierkiewicz
Regulators for MMC2 (SD card) are PVDD_TFLASH_2V8 (LDO19) for vmmc
and PVDD_APIO_MMCOFF_2V8 (LDO13) for vqmmc. Currently the device
tree entry for MMC2 uses PVDD_PRE_1V8 (LDO10) for vmmc and vqmmc is
not specified. Fix it.
- "mmc: dw_mmc: use mmc_regulator_get_supply to handle regulators"
patch causes a SD card detection to fail
- "mmc: dw_mmc: Support voltage changes" patch causes a boot hang
This patch fixes both above problems.
---
arch/arm/boot/dts/exynos5420-arndale-octa.dts | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
Index: b/arch/arm/boot/dts/exynos5420-arndale-octa.dts
===================================================================
--- a/arch/arm/boot/dts/exynos5420-arndale-octa.dts 2014-10-02 15:44:53.014826886 +0200
+++ b/arch/arm/boot/dts/exynos5420-arndale-octa.dts 2014-10-02 17:35:24.110600398 +0200
@@ -74,7 +74,8 @@
samsung,dw-mshc-ddr-timing = <1 2>;
pinctrl-names = "default";
pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>;
- vmmc-supply = <&ldo10_reg>;
+ vmmc-supply = <&ldo19_reg>;
+ vqmmc-supply = <&ldo13_reg>;
This looks right to me. ...but I notice that ldo13 and ldo19 are not
"always-on" in the DTS. Are you sure card detect works for you if you
eject your card and try to put it back in?
...eventually the "always-on" won't be needed, but for now I think it is...
Card detection works fine without "always-on".
That's weird.
1. In the schematics I see XMMC2CDN has an external pullup to PVDD_TFLASH_2V8.
2. The internal pullup should (I think) be to VDDQ_MMC2 which is
PVDD_APIO_MMCOFF_2V8.
3. In (51da224 mmc: dw_mmc: use mmc_regulator_get_supply to handle
regulators) we should be turning off both regulators in
"MMC_POWER_OFF".
4. If I understand correctly MMC_POWER_OFF is called when the card is
ejected, which means that both regulators should be off when the card
is ejected.
5. I don't think card detect can work if neither regulator is powered.
One of the above points must be wrong. Any idea which one? Can you
check to see if MMC_POWER_OFF is called for you when the card is
ejected? Can you check to see if these regulators are off?
MMC_POWER_OFF is called on card removal and both regulators get disabled
(I have verified that they are really off with regulator_is_enabled() which
returns 1 before and 0 after disabling regulator). It seems that 5. is
wrong?

Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics
Doug Anderson
2014-10-06 16:51:39 UTC
Permalink
Bartlomiej,

On Thu, Oct 2, 2014 at 10:24 AM, Bartlomiej Zolnierkiewicz
Post by Bartlomiej Zolnierkiewicz
Hi,
Post by Doug Anderson
Bartiomiej
On Thu, Oct 2, 2014 at 9:39 AM, Bartlomiej Zolnierkiewicz
Post by Bartlomiej Zolnierkiewicz
Post by Doug Anderson
Bartiomiej,
On Thu, Oct 2, 2014 at 9:10 AM, Bartlomiej Zolnierkiewicz
Post by Bartlomiej Zolnierkiewicz
Regulators for MMC2 (SD card) are PVDD_TFLASH_2V8 (LDO19) for vmmc
and PVDD_APIO_MMCOFF_2V8 (LDO13) for vqmmc. Currently the device
tree entry for MMC2 uses PVDD_PRE_1V8 (LDO10) for vmmc and vqmmc is
not specified. Fix it.
- "mmc: dw_mmc: use mmc_regulator_get_supply to handle regulators"
patch causes a SD card detection to fail
- "mmc: dw_mmc: Support voltage changes" patch causes a boot hang
This patch fixes both above problems.
---
arch/arm/boot/dts/exynos5420-arndale-octa.dts | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
Index: b/arch/arm/boot/dts/exynos5420-arndale-octa.dts
===================================================================
--- a/arch/arm/boot/dts/exynos5420-arndale-octa.dts 2014-10-02 15:44:53.014826886 +0200
+++ b/arch/arm/boot/dts/exynos5420-arndale-octa.dts 2014-10-02 17:35:24.110600398 +0200
@@ -74,7 +74,8 @@
samsung,dw-mshc-ddr-timing = <1 2>;
pinctrl-names = "default";
pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>;
- vmmc-supply = <&ldo10_reg>;
+ vmmc-supply = <&ldo19_reg>;
+ vqmmc-supply = <&ldo13_reg>;
This looks right to me. ...but I notice that ldo13 and ldo19 are not
"always-on" in the DTS. Are you sure card detect works for you if you
eject your card and try to put it back in?
...eventually the "always-on" won't be needed, but for now I think it is...
Card detection works fine without "always-on".
That's weird.
1. In the schematics I see XMMC2CDN has an external pullup to PVDD_TFLASH_2V8.
2. The internal pullup should (I think) be to VDDQ_MMC2 which is
PVDD_APIO_MMCOFF_2V8.
3. In (51da224 mmc: dw_mmc: use mmc_regulator_get_supply to handle
regulators) we should be turning off both regulators in
"MMC_POWER_OFF".
4. If I understand correctly MMC_POWER_OFF is called when the card is
ejected, which means that both regulators should be off when the card
is ejected.
5. I don't think card detect can work if neither regulator is powered.
One of the above points must be wrong. Any idea which one? Can you
check to see if MMC_POWER_OFF is called for you when the card is
ejected? Can you check to see if these regulators are off?
MMC_POWER_OFF is called on card removal and both regulators get disabled
(I have verified that they are really off with regulator_is_enabled() which
returns 1 before and 0 after disabling regulator). It seems that 5. is
wrong?
This really doesn't make a lot of sense to me, so I'm still kinda
confused. If you want to call it good then that's your (and Ulf's)
decision, but it's the kind of thing that would keep me up at night.
How can this pin be high if all the regulators pulling it up are off?
Is there a current leak somewhere and that's why it's working?

How this is supposed to work (as I understand it):

1. When no card is inserted then this pin is supposed to be pulled up
to VDDQ_MMC2. That could be either an internal or an external pullup.
It should be pulled up to VDDQ_MMC2 (as opposed to any other voltage)
since the exynos manual documents that this pin lives in the VDDQ_MMC2
io domain. Note that it could be pulled up externally to a different
supply than the one going to VDDQ_MMC2, but for correctness it should
be the same voltage.

2. When a card is inserted, the pin will be grounded (AKA this is an
open drain pin).


With your patch, can you probe the pin and see if card detect is high
when all the regulators are off? Any idea how it gets high? If you
turn off the internal pullup is it still high?


-Doug
Jaehoon Chung
2014-10-08 00:19:56 UTC
Permalink
Hi,
Post by Doug Anderson
Bartlomiej,
On Thu, Oct 2, 2014 at 10:24 AM, Bartlomiej Zolnierkiewicz
Post by Bartlomiej Zolnierkiewicz
Hi,
Post by Doug Anderson
Bartiomiej
On Thu, Oct 2, 2014 at 9:39 AM, Bartlomiej Zolnierkiewicz
Post by Bartlomiej Zolnierkiewicz
Post by Doug Anderson
Bartiomiej,
On Thu, Oct 2, 2014 at 9:10 AM, Bartlomiej Zolnierkiewicz
Post by Bartlomiej Zolnierkiewicz
Regulators for MMC2 (SD card) are PVDD_TFLASH_2V8 (LDO19) for vmmc
and PVDD_APIO_MMCOFF_2V8 (LDO13) for vqmmc. Currently the device
tree entry for MMC2 uses PVDD_PRE_1V8 (LDO10) for vmmc and vqmmc is
not specified. Fix it.
- "mmc: dw_mmc: use mmc_regulator_get_supply to handle regulators"
patch causes a SD card detection to fail
- "mmc: dw_mmc: Support voltage changes" patch causes a boot hang
This patch fixes both above problems.
---
arch/arm/boot/dts/exynos5420-arndale-octa.dts | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
Index: b/arch/arm/boot/dts/exynos5420-arndale-octa.dts
===================================================================
--- a/arch/arm/boot/dts/exynos5420-arndale-octa.dts 2014-10-02 15:44:53.014826886 +0200
+++ b/arch/arm/boot/dts/exynos5420-arndale-octa.dts 2014-10-02 17:35:24.110600398 +0200
@@ -74,7 +74,8 @@
samsung,dw-mshc-ddr-timing = <1 2>;
pinctrl-names = "default";
pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>;
- vmmc-supply = <&ldo10_reg>;
+ vmmc-supply = <&ldo19_reg>;
+ vqmmc-supply = <&ldo13_reg>;
This looks right to me. ...but I notice that ldo13 and ldo19 are not
"always-on" in the DTS. Are you sure card detect works for you if you
eject your card and try to put it back in?
...eventually the "always-on" won't be needed, but for now I think it is...
Card detection works fine without "always-on".
That's weird.
1. In the schematics I see XMMC2CDN has an external pullup to PVDD_TFLASH_2V8.
2. The internal pullup should (I think) be to VDDQ_MMC2 which is
PVDD_APIO_MMCOFF_2V8.
3. In (51da224 mmc: dw_mmc: use mmc_regulator_get_supply to handle
regulators) we should be turning off both regulators in
"MMC_POWER_OFF".
4. If I understand correctly MMC_POWER_OFF is called when the card is
ejected, which means that both regulators should be off when the card
is ejected.
5. I don't think card detect can work if neither regulator is powered.
One of the above points must be wrong. Any idea which one? Can you
check to see if MMC_POWER_OFF is called for you when the card is
ejected? Can you check to see if these regulators are off?
MMC_POWER_OFF is called on card removal and both regulators get disabled
(I have verified that they are really off with regulator_is_enabled() which
returns 1 before and 0 after disabling regulator). It seems that 5. is
wrong?
This really doesn't make a lot of sense to me, so I'm still kinda
confused. If you want to call it good then that's your (and Ulf's)
decision, but it's the kind of thing that would keep me up at night.
How can this pin be high if all the regulators pulling it up are off?
Is there a current leak somewhere and that's why it's working?
1. When no card is inserted then this pin is supposed to be pulled up
to VDDQ_MMC2. That could be either an internal or an external pullup.
It should be pulled up to VDDQ_MMC2 (as opposed to any other voltage)
since the exynos manual documents that this pin lives in the VDDQ_MMC2
io domain. Note that it could be pulled up externally to a different
supply than the one going to VDDQ_MMC2, but for correctness it should
be the same voltage.
2. When a card is inserted, the pin will be grounded (AKA this is an
open drain pin).
With your patch, can you probe the pin and see if card detect is high
when all the regulators are off? Any idea how it gets high? If you
turn off the internal pullup is it still high?
I remembered that I and Doug were discussed for this problem with exynos5420-peach board(?), right?
Is arndale-octa board the same circuit with peach?
If it's same, I think Doug's comment is right.
But if card-detect pis is used with other power, we don't need to consider the VDDQ_MMC2 power domain.
It needs more information and checks its schematic.

Best Regards,
Jaehoon Chung
Post by Doug Anderson
-Doug
Ulf Hansson
2014-10-08 09:31:15 UTC
Permalink
Post by Jaehoon Chung
Hi,
Post by Doug Anderson
Bartlomiej,
On Thu, Oct 2, 2014 at 10:24 AM, Bartlomiej Zolnierkiewicz
Post by Bartlomiej Zolnierkiewicz
Hi,
Post by Doug Anderson
Bartiomiej
On Thu, Oct 2, 2014 at 9:39 AM, Bartlomiej Zolnierkiewicz
Post by Bartlomiej Zolnierkiewicz
Post by Doug Anderson
Bartiomiej,
On Thu, Oct 2, 2014 at 9:10 AM, Bartlomiej Zolnierkiewicz
Post by Bartlomiej Zolnierkiewicz
Regulators for MMC2 (SD card) are PVDD_TFLASH_2V8 (LDO19) for vmmc
and PVDD_APIO_MMCOFF_2V8 (LDO13) for vqmmc. Currently the device
tree entry for MMC2 uses PVDD_PRE_1V8 (LDO10) for vmmc and vqmmc is
not specified. Fix it.
- "mmc: dw_mmc: use mmc_regulator_get_supply to handle regulators"
patch causes a SD card detection to fail
- "mmc: dw_mmc: Support voltage changes" patch causes a boot hang
This patch fixes both above problems.
---
arch/arm/boot/dts/exynos5420-arndale-octa.dts | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
Index: b/arch/arm/boot/dts/exynos5420-arndale-octa.dts
===================================================================
--- a/arch/arm/boot/dts/exynos5420-arndale-octa.dts 2014-10-02 15:44:53.014826886 +0200
+++ b/arch/arm/boot/dts/exynos5420-arndale-octa.dts 2014-10-02 17:35:24.110600398 +0200
@@ -74,7 +74,8 @@
samsung,dw-mshc-ddr-timing = <1 2>;
pinctrl-names = "default";
pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>;
- vmmc-supply = <&ldo10_reg>;
+ vmmc-supply = <&ldo19_reg>;
+ vqmmc-supply = <&ldo13_reg>;
This looks right to me. ...but I notice that ldo13 and ldo19 are not
"always-on" in the DTS. Are you sure card detect works for you if you
eject your card and try to put it back in?
...eventually the "always-on" won't be needed, but for now I think it is...
Card detection works fine without "always-on".
That's weird.
1. In the schematics I see XMMC2CDN has an external pullup to PVDD_TFLASH_2V8.
2. The internal pullup should (I think) be to VDDQ_MMC2 which is
PVDD_APIO_MMCOFF_2V8.
3. In (51da224 mmc: dw_mmc: use mmc_regulator_get_supply to handle
regulators) we should be turning off both regulators in
"MMC_POWER_OFF".
4. If I understand correctly MMC_POWER_OFF is called when the card is
ejected, which means that both regulators should be off when the card
is ejected.
5. I don't think card detect can work if neither regulator is powered.
One of the above points must be wrong. Any idea which one? Can you
check to see if MMC_POWER_OFF is called for you when the card is
ejected? Can you check to see if these regulators are off?
MMC_POWER_OFF is called on card removal and both regulators get disabled
(I have verified that they are really off with regulator_is_enabled() which
returns 1 before and 0 after disabling regulator). It seems that 5. is
wrong?
This really doesn't make a lot of sense to me, so I'm still kinda
confused. If you want to call it good then that's your (and Ulf's)
decision, but it's the kind of thing that would keep me up at night.
How can this pin be high if all the regulators pulling it up are off?
Is there a current leak somewhere and that's why it's working?
1. When no card is inserted then this pin is supposed to be pulled up
to VDDQ_MMC2. That could be either an internal or an external pullup.
It should be pulled up to VDDQ_MMC2 (as opposed to any other voltage)
since the exynos manual documents that this pin lives in the VDDQ_MMC2
io domain. Note that it could be pulled up externally to a different
supply than the one going to VDDQ_MMC2, but for correctness it should
be the same voltage.
2. When a card is inserted, the pin will be grounded (AKA this is an
open drain pin).
With your patch, can you probe the pin and see if card detect is high
when all the regulators are off? Any idea how it gets high? If you
turn off the internal pullup is it still high?
I remembered that I and Doug were discussed for this problem with exynos5420-peach board(?), right?
Is arndale-octa board the same circuit with peach?
If it's same, I think Doug's comment is right.
But if card-detect pis is used with other power, we don't need to consider the VDDQ_MMC2 power domain.
It needs more information and checks its schematic.
May I suggest we go ahead and apply this patch to fix the problems for
Arndale Octa!? I am soon about to send the PR for 3.18.

We should then follow up on this discussion and sort out why/how it
actually works.

So, I need an ack from some of the ARM SOC maintainers. I have looped
in Arnd Bergmann, if Kukjin is busy.

Kind regards
Uffe
Ulf Hansson
2014-10-02 18:16:44 UTC
Permalink
On 2 October 2014 18:10, Bartlomiej Zolnierkiewicz
Post by Bartlomiej Zolnierkiewicz
Regulators for MMC2 (SD card) are PVDD_TFLASH_2V8 (LDO19) for vmmc
and PVDD_APIO_MMCOFF_2V8 (LDO13) for vqmmc. Currently the device
tree entry for MMC2 uses PVDD_PRE_1V8 (LDO10) for vmmc and vqmmc is
not specified. Fix it.
- "mmc: dw_mmc: use mmc_regulator_get_supply to handle regulators"
patch causes a SD card detection to fail
- "mmc: dw_mmc: Support voltage changes" patch causes a boot hang
This patch fixes both above problems.
Unless it causes a bunch non-trivial conflicts, I suggest we take this
through my mmc tree to not break bisectability.

Kind regards
Uffe
Post by Bartlomiej Zolnierkiewicz
---
arch/arm/boot/dts/exynos5420-arndale-octa.dts | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
Index: b/arch/arm/boot/dts/exynos5420-arndale-octa.dts
===================================================================
--- a/arch/arm/boot/dts/exynos5420-arndale-octa.dts 2014-10-02 15:44:53.014826886 +0200
+++ b/arch/arm/boot/dts/exynos5420-arndale-octa.dts 2014-10-02 17:35:24.110600398 +0200
@@ -74,7 +74,8 @@
samsung,dw-mshc-ddr-timing = <1 2>;
pinctrl-names = "default";
pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>;
- vmmc-supply = <&ldo10_reg>;
+ vmmc-supply = <&ldo19_reg>;
+ vqmmc-supply = <&ldo13_reg>;
reg = <0>;
Arnd Bergmann
2014-10-08 12:07:48 UTC
Permalink
Post by Ulf Hansson
On 2 October 2014 18:10, Bartlomiej Zolnierkiewicz
Post by Bartlomiej Zolnierkiewicz
Regulators for MMC2 (SD card) are PVDD_TFLASH_2V8 (LDO19) for vmmc
and PVDD_APIO_MMCOFF_2V8 (LDO13) for vqmmc. Currently the device
tree entry for MMC2 uses PVDD_PRE_1V8 (LDO10) for vmmc and vqmmc is
not specified. Fix it.
- "mmc: dw_mmc: use mmc_regulator_get_supply to handle regulators"
patch causes a SD card detection to fail
- "mmc: dw_mmc: Support voltage changes" patch causes a boot hang
This patch fixes both above problems.
Unless it causes a bunch non-trivial conflicts, I suggest we take this
through my mmc tree to not break bisectability.
Have you tried if it conflicts with arm-soc? If not,

Acked-by: Arnd Bergmann <***@arndb.de>
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to ***@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Ulf Hansson
2014-10-08 12:50:46 UTC
Permalink
Post by Arnd Bergmann
Post by Ulf Hansson
On 2 October 2014 18:10, Bartlomiej Zolnierkiewicz
Post by Bartlomiej Zolnierkiewicz
Regulators for MMC2 (SD card) are PVDD_TFLASH_2V8 (LDO19) for vmmc
and PVDD_APIO_MMCOFF_2V8 (LDO13) for vqmmc. Currently the device
tree entry for MMC2 uses PVDD_PRE_1V8 (LDO10) for vmmc and vqmmc is
not specified. Fix it.
- "mmc: dw_mmc: use mmc_regulator_get_supply to handle regulators"
patch causes a SD card detection to fail
- "mmc: dw_mmc: Support voltage changes" patch causes a boot hang
This patch fixes both above problems.
Unless it causes a bunch non-trivial conflicts, I suggest we take this
through my mmc tree to not break bisectability.
Have you tried if it conflicts with arm-soc? If not,
In conflicts, but it's trivial to fix it.

Since it actually fixes a regression which is inserted from my mmc
tree, I thought it makes sense to take it through here. Anyway, the
decision is yours.

Br
Uffe
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to ***@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Arnd Bergmann
2014-10-08 15:20:42 UTC
Permalink
Post by Ulf Hansson
Post by Arnd Bergmann
Post by Ulf Hansson
On 2 October 2014 18:10, Bartlomiej Zolnierkiewicz
Post by Bartlomiej Zolnierkiewicz
Regulators for MMC2 (SD card) are PVDD_TFLASH_2V8 (LDO19) for vmmc
and PVDD_APIO_MMCOFF_2V8 (LDO13) for vqmmc. Currently the device
tree entry for MMC2 uses PVDD_PRE_1V8 (LDO10) for vmmc and vqmmc is
not specified. Fix it.
- "mmc: dw_mmc: use mmc_regulator_get_supply to handle regulators"
patch causes a SD card detection to fail
- "mmc: dw_mmc: Support voltage changes" patch causes a boot hang
This patch fixes both above problems.
Unless it causes a bunch non-trivial conflicts, I suggest we take this
through my mmc tree to not break bisectability.
Have you tried if it conflicts with arm-soc? If not,
In conflicts, but it's trivial to fix it.
Since it actually fixes a regression which is inserted from my mmc
tree, I thought it makes sense to take it through here. Anyway, the
decision is yours.
Why does it cause a regression though? Does this mean you are breaking
any boot with an old DT file and a new kernel? That would be very
bad, the driver is supposed to keep working with an existing dtb.

Arnd
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to ***@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Doug Anderson
2014-10-08 15:29:16 UTC
Permalink
Hi,
Post by Arnd Bergmann
Why does it cause a regression though? Does this mean you are breaking
any boot with an old DT file and a new kernel? That would be very
bad, the driver is supposed to keep working with an existing dtb.
The old dts file specified completely the wrong regulator. It
happened that the old code didn't really care, but when the code was
fixed to care then things broke. If we need to keep old dts files
working then the most sensible place to do it would be in a "fixup old
broken device trees" stage somewhere in kernel boot.

-Doug
Arnd Bergmann
2014-10-08 18:28:31 UTC
Permalink
Post by Doug Anderson
Post by Arnd Bergmann
Why does it cause a regression though? Does this mean you are breaking
any boot with an old DT file and a new kernel? That would be very
bad, the driver is supposed to keep working with an existing dtb.
The old dts file specified completely the wrong regulator. It
happened that the old code didn't really care, but when the code was
fixed to care then things broke. If we need to keep old dts files
working then the most sensible place to do it would be in a "fixup old
broken device trees" stage somewhere in kernel boot.
Ok, got it. I guess it's better to apply this one first then.

Arnd
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to ***@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Ulf Hansson
2014-10-09 08:46:59 UTC
Permalink
Post by Arnd Bergmann
Post by Doug Anderson
Post by Arnd Bergmann
Why does it cause a regression though? Does this mean you are breaking
any boot with an old DT file and a new kernel? That would be very
bad, the driver is supposed to keep working with an existing dtb.
The old dts file specified completely the wrong regulator. It
happened that the old code didn't really care, but when the code was
fixed to care then things broke. If we need to keep old dts files
working then the most sensible place to do it would be in a "fixup old
broken device trees" stage somewhere in kernel boot.
Ok, got it. I guess it's better to apply this one first then.
Arnd
Thanks for your comments Arnd! I have applied this once to my mmc tree
now. Please tell me soon if you want to carry this through arm-soc
instead, thus I can drop it.

Kind regards
Uffe
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to ***@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Arnd Bergmann
2014-10-09 11:41:07 UTC
Permalink
Post by Ulf Hansson
Post by Arnd Bergmann
Post by Doug Anderson
Post by Arnd Bergmann
Why does it cause a regression though? Does this mean you are breaking
any boot with an old DT file and a new kernel? That would be very
bad, the driver is supposed to keep working with an existing dtb.
The old dts file specified completely the wrong regulator. It
happened that the old code didn't really care, but when the code was
fixed to care then things broke. If we need to keep old dts files
working then the most sensible place to do it would be in a "fixup old
broken device trees" stage somewhere in kernel boot.
Ok, got it. I guess it's better to apply this one first then.
Arnd
Thanks for your comments Arnd! I have applied this once to my mmc tree
now. Please tell me soon if you want to carry this through arm-soc
instead, thus I can drop it.
No, please take it yourself, Linus has already taken the arm-soc pull
requests.

Arnd

Loading...