Reply
Thread Tools
mayhem's Avatar
Posts: 44 | Thanked: 30 times | Joined on Dec 2012
#1
I think it's some sort of sensor failure that it doesn't detect my SD (used to work and test it on my laptop so it's not SD fault) also when i wrote in terminal dmesg | grep mmc0 shows: cover is open ,card is now inaccessible but at the same time the camera cover works and also checked the magnet.it's not a big problem but just want it use as swap and i am not gonna fix it,it's 4 years old n900.so is there anyway to force detect or disable sensor so i can mount and umount manually from terminal or gconf? thanks.
__________________
N900 ROCKS!
 

The Following 3 Users Say Thank You to mayhem For This Useful Post:
Posts: 14 | Thanked: 69 times | Joined on Jan 2015 @ New Zealand
#2
Since noone else has answered, ..

Access to the SD card is blocked in that situation by the omap_hsmmc kernel module, which seems weird being non-configurable. Luckily it's a software limitation and not a hardware one, so it can be fixed by replacing that module ..

I've got it to work in a newer kernel by modifying a single line in mmc/host/omap_hsmmc.c:
Code:
        int ret;
 
        if (gpio_is_valid(pdata->slots[0].switch_pin)) {
-               if (pdata->slots[0].cover)
+               if (0 && pdata->slots[0].cover)
                        pdata->slots[0].get_cover_state =
                                        omap_hsmmc_get_cover_state;
                else
If you or someone else can just rebuild the module for your kernel with that modification it'll probably work. I might try it later, since removing access to the SD card while the cover is off is annoying for me anyway.
 

The Following 11 Users Say Thank You to Maxdamantus For This Useful Post:
Posts: 1,808 | Thanked: 4,272 times | Joined on Feb 2011 @ Germany
#3
@Maxdamantus: thanks a lot for that information.

@Pali: any chance of adding a kernel parameter kernel-power for this? This way one could, at his own risk, set-up an u-boot entry with this parameter to use as/when needed.

Oh, I just noted that omap_hsmmc is an actual module (not built-in the kernel), so this parameter could be set in /etc/init.d/ke-recv (and optionally in softupd.rcS).

So the module parameter could be set from the kernel command line or directly on the script loading the module (like "/etc/default/unmount_sd_when_cover_off" having "true" or "false").
 

The Following 8 Users Say Thank You to reinob For This Useful Post:
Posts: 14 | Thanked: 69 times | Joined on Jan 2015 @ New Zealand
#4
Originally Posted by reinob View Post
Oh, I just noted that omap_hsmmc is an actual module (not built-in the kernel), so this parameter could be set in /etc/init.d/ke-recv (and optionally in softupd.rcS).
I'm not sure how it being a module changes it. Personally, I see it as a misfeature, but it should otherwise be configurable through sysfs, which works whether the code providing it is a module or built-in.

Edit: it should probably also be noted that the card isn't actually unmounted when the cover is removed. It won't even be able to continue flushing the writeback cache. It looks like a "safely remove" feature, but it's not.

Anyway, the 2.6.28.10 version of omap_hsmmc is a bit different, but a similarly hacky modification seems to have worked:
Code:
 /* Protect the card while the cover is open */
 static void omap_hsmmc_protect_card(struct omap_hsmmc_host *host)
 {
-       if (!mmc_slot(host).get_cover_state)
+       if (1 || !mmc_slot(host).get_cover_state)
                return;

        host->reqs_blocked = 0;
I'm not sure about binary module sharing etiquette, but here's the one I'm using with 2.6.28.10-cssu1: https://gist.github.com/Maxdamantus/.../omap_hsmmc.ko

Edit: caveat: with this module as-is, if the SD card is removed, you'll have to reboot before using the slot again. It looks like it does state resetting and stuff when the cover is closed, so someone would need to spend some time doing more than a one-line modification to make it work neatly.

Last edited by Maxdamantus; 2015-01-20 at 13:03.
 

The Following 9 Users Say Thank You to Maxdamantus For This Useful Post:
Posts: 1,808 | Thanked: 4,272 times | Joined on Feb 2011 @ Germany
#5
Originally Posted by Maxdamantus View Post
I'm not sure how it being a module changes it. Personally, I see it as a misfeature, but it should otherwise be configurable through sysfs, which works whether the code providing it is a module or built-in.
If the module had been built-in in the kernel then you'd need to use U-boot to pass the kernel parameter (via the command line).

Being a module loaded from an init script makes it much easier to tweak, as long as the module supports tweaking, which would be my request to Pali (or to you, seeing that you've pulled this off actually .

I'm not sure about binary module sharing etiquette, but here's the one I'm using with 2.6.28.10-cssu1: https://gist.github.com/Maxdamantus/.../omap_hsmmc.ko

Edit: caveat: with this module as-is, if the SD card is removed, you'll have to reboot before using the slot again. It looks like it does state resetting and stuff when the cover is closed, so someone would need to spend some time doing more than a one-line modification to make it work neatly.
Kudos to you! Where have you been all this time? (I mean pre-2015).
 

The Following 6 Users Say Thank You to reinob For This Useful Post:
Posts: 65 | Thanked: 42 times | Joined on Jun 2014
#6
Originally Posted by Maxdamantus View Post
I'm not sure how it being a module changes it. Personally, I see it as a misfeature, but it should otherwise be configurable through sysfs, which works whether the code providing it is a module or built-in.

Edit: it should probably also be noted that the card isn't actually unmounted when the cover is removed. It won't even be able to continue flushing the writeback cache. It looks like a "safely remove" feature, but it's not.

Anyway, the 2.6.28.10 version of omap_hsmmc is a bit different, but a similarly hacky modification seems to have worked:
Code:
 /* Protect the card while the cover is open */
 static void omap_hsmmc_protect_card(struct omap_hsmmc_host *host)
 {
-       if (!mmc_slot(host).get_cover_state)
+       if (1 || !mmc_slot(host).get_cover_state)
                return;

        host->reqs_blocked = 0;
I'm not sure about binary module sharing etiquette, but here's the one I'm using with 2.6.28.10-cssu1: https://gist.github.com/Maxdamantus/.../omap_hsmmc.ko

Edit: caveat: with this module as-is, if the SD card is removed, you'll have to reboot before using the slot again. It looks like it does state resetting and stuff when the cover is closed, so someone would need to spend some time doing more than a one-line modification to make it work neatly.
please help me i don't know how to make these mod it is through the terminal? i really need the sd card to work plz
 

The Following User Says Thank You to abdel_95 For This Useful Post:
Posts: 1,417 | Thanked: 2,619 times | Joined on Jan 2011 @ Touring
#7
This would be a brilliant toggle for those of us who want to use SD swap but have had problems with dropping the phone and causing file system damage when swap is unmounted.
I would love flopswap to have this option available if/when KP with this add-on is detected.
 

The Following 3 Users Say Thank You to biketool For This Useful Post:
Posts: 65 | Thanked: 42 times | Joined on Jun 2014
#8
Hello dear gurus plz i have no programming knowledge but i am eager to have the sd card work on my phone. Plz can u give us who are dummy and are willing to have this a step-by-step tutorial on how to modify the config?.
Thanks in advance for your help
 
Posts: 14 | Thanked: 69 times | Joined on Jan 2015 @ New Zealand
#9
Originally Posted by abdel_95 View Post
Hello dear gurus plz i have no programming knowledge but i am eager to have the sd card work on my phone. Plz can u give us who are dummy and are willing to have this a step-by-step tutorial on how to modify the config?.
Thanks in advance for your help
You need to be using the 2.6.28.10-cssu1 kernel for the binary in my previous post:
Code:
$ uname -r
2.6.28.10-cssu1
If you're not using it already, I think installing the `kernel-cssu-flasher` package should do it .. though I don't think you're meant to do this if you're already using u-boot. Someone else might be able to help here, since my own boot setup is fairly unconventional.

I'd then suggest moving the original module, located at `/lib/modules/2.6.28.10-cssu1/omap_hsmmc.ko` somewhere before replacing it with the one in my earlier post.

I wouldn't really suggest this if you don't understand what's happening, unless the sensor actually doesn't work (so you see the "cover is open" message in dmesg, mentioned by the first poster).
 

The Following User Says Thank You to Maxdamantus For This Useful Post:
Posts: 65 | Thanked: 42 times | Joined on Jun 2014
#10
Originally Posted by Maxdamantus View Post
You need to be using the 2.6.28.10-cssu1 kernel for the binary in my previous post:
Code:
$ uname -r
2.6.28.10-cssu1
If you're not using it already, I think installing the `kernel-cssu-flasher` package should do it .. though I don't think you're meant to do this if you're already using u-boot. Someone else might be able to help here, since my own boot setup is fairly unconventional.

I'd then suggest moving the original module, located at `/lib/modules/2.6.28.10-cssu1/omap_hsmmc.ko` somewhere before replacing it with the one in my earlier post.

I wouldn't really suggest this if you don't understand what's happening, unless the sensor actually doesn't work (so you see the "cover is open" message in dmesg, mentioned by the first poster).
this is what i have
uname -r
2.6.28.10-power53
 
Reply

Tags
memory card, sd card


 
Forum Jump


All times are GMT. The time now is 20:33.