SD card mount issue in Linaro


#1

I’ve got a couple of DragonBoard 410c’s and only recently tried to use an SD card with them. They are both running Linaro-alip 4.2.4 (still as they shipped from Arrow). One of them recognizes the card and automatically mounts it and displays a window asking me if I’d like to view the files. The other DragonBoard does not do this. I can see activity on the LEDs when I insert the card so it seems to recognize that a card has been inserted, but no entries appear in /dev for mmcblk1 as they should. Looking in dmesg I can see the following message is being generated when the card is inserted:

mmc1: Reset 0x1 never completed

If I leave the card inserted and reboot the board then it is seen by Linaro upon reboot. It seems to be a hardware issue of some kind as I’ve tried upgrading to the latest Linaro release (didn’t solve the problem), tried going to Windows 10 IoT (install was successful per the install utility, but it basically just soft-bricked the board as it would not boot at all after that), finally I did a full rescue/recovery via the recovery SD/fastboot method and put it back to the release of Linaro that came on it. That got the board back up and running, but the SD card issue still exists and the ‘mmc1: Reset 0x1 never completed’ error persists. If I want to use an SD card with that particular board I simply have to reboot it. I’ve tried swapping power supplies between board as well and that didn’t amount to much.

At this point I think I just need to exchange the board for a new one.

I’ve seen one other person post the same issue back in late 2015, but he didn’t get an answer to is question then. I’m hoping someone knows something more about this issue and if it is something that can be fixed myself or Not.


#2

Hi @radu7,

I will try to reproduce the symptom and get back to you.
Probably it will be some time next week.


#3

Thank you Akira! If you need any further information from me when you get around to looking at the issue please let me know.


#4

As an update, I’ve tried the latest ‘Arrow’ build release from here:

http://builds.96boards.org/snapshots/dragonboard410c/arrow/debian/47/

and not only will the board not recognize when an SD card is inserted after the OS has booted to the desktop, it will also no longer recognize if a card is in the slot during power up (with SD Boot switch OFF). With the previous releases it would see and mount the SD card most of the time if the card was inserted prior to applying power to the board. The board will still, however, boot from an SD card with an install image or fastboot image on it if the SD Boot switch is ON.

Is this forum the ‘Official’ hardware support forum for the DragonBoard 410C? So far, when contacting Arrow customer service to ask to exchange this board for a properly functioning one, they have simply directed me here and said they would see about replacing the board if it was determined to be defective. Seems to me that if I have three of these boards that I purchased one week or so apart from each other and only this one has the SD card issue then I’m looking at a defect with this board. I don’t doubt that it would be nice to know why this board has this problem when the others don’t and I’m willing to give it a go to help the community as long as it doesn’t exceed the period I have to rightfully return this board for replacement, but I’m not sure that Arrow having a customer or anyone at Linaro/96Boards make a science project out of it is the way to handle it.


#5

Arrow got back to me today stating they will RMA the board. If anyone on the Linaro/96Boards team is interested in any logs/output/etc… from this board to determine why it was having this issue just let me know what release you want installed on it and what data you’d like me to pull or tests you’d like me to run and I’ll be glad to do that until the new board arrives and this one is shipped back. Otherwise I’ll just save off the dmesg info and other standard logs from the releases I’ve tested with so far in case anyone else runs into this issue in the future.


#6

Hi radu7, Akira,

I am also facing the same issue “mmc1 : Reset 0x1 never completed”. Can you please suggest me solution for this?

Thanks,
Best Regards,
Pradeep


#7

Hi radu7/Akira,

“l11” regulator is not turned on after sd card insertion. If we set “always-on” for regulator in device tree, then it is getting detected but it is not the correct fix.

Thanks,
Best Regards,
Pradeep


Can't boot draonboard410c of Debian 16.09 due to the voltage of L11=0
#8

Hi Pradeep,

Good work on finding the issue with the l11 regulator not switching on at card insertion. Unfortunately I’ve not got much to add to help solve the problem other than the following observation based on the fact that I had four of these DragonBoard 410c’s while trying to get this resolvd.

I saw a bit of a pattern between the four boards I had while trying to get a set of working boards from Arrow. The boards that have the SD card issue also persistently display an fsck error in the dmesg output that the mmcblk0 FAT partition was ‘not properly unmounted’ despite the fact that I perform a proper OS shutdown and poweroff (or a reboot via the OS). The other two boards that do not have the SD card issue do not display the fsck error on boot. Another observation is that both of the ‘good’ boards that do not have either the SD card issue or the fsck message have very low serial numbers (AE-0316-000027 and AE-0316-000061) while the two boards that have the issue have much higher serial numbers (AE-0316-000345 (the replacement) and AE-0316-000782 (the original board with the SD card issue). The two boards will only recognize and mount an SD Card if the card is already inserted in the board when the board is in a powered-off state and then powered on. If the board is rebooted for any reason and power is not also removed the SD card is no longer available.

Also, so far, the issue only happens in Linaro. Although my intent was to only use these boards with Linaro I have found that SD card insertion and removal on the boards with the issue actually works as designed under Android and Windows IoT BSP’s.

Perhaps it is a timing issue with the mmc driver that is causing it to not properly detect SD card insertion?

I have not tried any of the later Linaro builds to see if the issue has gone away on the one board I still have on hand that has this problem.

I’ll try and test it out this weekend and let you know what I observe.

Best regards


#9

Hi Radu7,

I have tried below work around but still have some problems.
I think, it is definitely timing issue.I have added dump_stack() in _regulator_do_enable function in drivers/regulator/core.c and found that ,if I keep “regulator-always-on” in device tree, the function that gets executed after lk passes execution to kernel is regulator always-on constraint. It means, it turns on very early. Once regulator is on, regulator_disable(vmmc- l11) will not work but regulator_force_disable(vmmc supply -l11) will work. If regulator is force disabled(I have disabled vmmc supply in add_host function (sdhci.c) I.e., after sdhci host controller is detected, I made a check mmc_hostname(mmc ) is equal to mmc1),i am not able to turn it on. I am stuck here, how to turn it on? . Actually, mmc worker thread , mmc rescan will try to turn on the vmmc supply 4 times but as the software reset fails, regulator is failing to switch on but if it is not force disabled,software reset passes.

I don’t know how regulator_force_disable is implemented, regulator_enable won’t work if regulator is force disabled. This is the issue I am facing currently and I wonder if there is any alternative way.

In android case , I observed that , after card insertion SD mounts properly.

Regards,
Pradeep


#10

Hi all,

I have the same problem of Debian 16.09.
Is there any method to let L11 = on when it force to disable?

Thanks.


#11

hi,

u can use the patches attached to resolve the issue.


#12

Hi @pradeep,

Thanks for the information.
I also meet this issue.
Could you kindly help to point out what patches you mean?
Because I didn’t find the attached file it the thread.

Thanks.

Best regards,
Johnny


#13

oh sry, u can find it below.
https://drive.google.com/open?id=0B7MILglADbwiWWN6QUU2Q2d5Slk


#14

Hi @pradeep,

Thank you for helping to resolve the issue.
By the way, the file “arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi”, you modify the L11 voltage range of 1800000 ~ 3000000
Could you explain that why did you change the value? Is it necessary?
May I following the previous voltage of 1750000 ~ 3337000? Is there any risk if I change the voltage range or not?

				l11 {
		-			regulator-min-microvolt = <1750000>;
		-			regulator-max-microvolt = <3337000>;
		-			
		-		};
		+			regulator-min-microvolt = <1800000>;
		+			regulator-max-microvolt = <3000000>;
		+		    regulator-initial-mode = <1>;
        +
        +       };

Thanks.


#15

Hi,

I didn’t debug further. The changes are just ported from android kernel. you can try changing the voltage range and debug further.


#16

Hi @pradeep,

I tried to check the Android 6.0.1 Kernel for DB410c, but I didn’t find the same setting in it.
Could I know which Android Kernel version that you refer?
Also, do you know why set regulator initial mode to 1 then L11 will not turn off?
I tried to check the document, but I still didn’t understand why set it to HPM mode can solve it…

  • regulator-initial-mode:
    Usage: optional
    Value type:
    Description: 2 = Set initial mode to auto mode (automatically select
    between HPM and LPM); not available on boost type
    regulators.

          1 = Set initial mode to high power mode (HPM), also referred
          to as NPM. HPM consumes more ground current than LPM, but
          it can source significantly higher load current. HPM is not
          available on boost type regulators. For voltage switch type
          regulators, HPM implies that over current protection and
          soft start are active all the time.
    
          0 = Set initial mode to low power mode (LPM).
    

Thanks.

Best regards,
Johnny


#17

I was wondering if the issue could be resolved by adding the below property to l11 regulator node in dtsi file:

regulator-system-load = <400000>;

Can someone try it? And I am curious if this issue is reproducible with older/slower sd cards.

Thanks!