LinuxQuestions.org
Welcome to the most active Linux Forum on the web.
Go Back   LinuxQuestions.org > Forums > Linux Forums > Linux - Hardware
User Name
Password
Linux - Hardware This forum is for Hardware issues.
Having trouble installing a piece of hardware? Want to know if that peripheral is compatible with Linux?

Notices

Reply
 
Search this Thread
Old 05-31-2007, 09:56 PM   #1
paulsiu
Member
 
Registered: Apr 2006
Posts: 143

Rep: Reputation: 15
Trying to get SD card working


I am trying to get my SD card working in Puppy Linux. The SD Card works under Ubuntu, so I figure that it must be because the default Puppy Kernel isn't compile with CONFIG_MMC=m.

I recompile the kernal with the right flag and install the modules. I then load the modules by

modprobe mmc_core
modprobe mmc_block
modprobe sdhci

I insert the SD card and do a dmesg, I get:

mmcblk0: mmc0:0002 SD 1971712KiB
mmcblk0: p1

When I do a find / -print | grep mmcblk0, I get

/sys/block/mmcblk0
/sys/block/mmcblk0/queue
/sys/block/mmcblk0/queue/iosched
/sys/block/mmcblk0/queue/iosched/slice_idle
/sys/block/mmcblk0/queue/iosched/slice_async_rq
/sys/block/mmcblk0/queue/iosched/slice_async
/sys/block/mmcblk0/queue/iosched/slice_sync
/sys/block/mmcblk0/queue/iosched/back_seek_penalty
/sys/block/mmcblk0/queue/iosched/back_seek_max
/sys/block/mmcblk0/queue/iosched/fifo_expire_async
/sys/block/mmcblk0/queue/iosched/fifo_expire_sync
/sys/block/mmcblk0/queue/iosched/queued
/sys/block/mmcblk0/queue/iosched/quantum
/sys/block/mmcblk0/queue/scheduler
/sys/block/mmcblk0/queue/max_sectors_kb
/sys/block/mmcblk0/queue/max_hw_sectors_kb
/sys/block/mmcblk0/queue/read_ahead_kb
/sys/block/mmcblk0/queue/nr_requests
/sys/block/mmcblk0/mmcblk0p1
/sys/block/mmcblk0/mmcblk0p1/holders
/sys/block/mmcblk0/mmcblk0p1/subsystem
/sys/block/mmcblk0/mmcblk0p1/stat
/sys/block/mmcblk0/mmcblk0p1/size
/sys/block/mmcblk0/mmcblk0p1/start
/sys/block/mmcblk0/mmcblk0p1/dev
/sys/block/mmcblk0/mmcblk0p1/uevent
/sys/block/mmcblk0/slaves
/sys/block/mmcblk0/holders
/sys/block/mmcblk0/subsystem
/sys/block/mmcblk0/device
/sys/block/mmcblk0/stat
/sys/block/mmcblk0/size
/sys/block/mmcblk0/removable
/sys/block/mmcblk0/range
/sys/block/mmcblk0/dev
/sys/block/mmcblk0/uevent
/sys/devices/pci0000:00/0000:00:10.0/0000:03:05.2/mmc0:0002/block:mmcblk0

The problem is that there are no mmcblk0 device in the /dev directory. I tried creating them manually using mknod

mknod /dev/mmcblk0 b 254 0
mknod /dev/mmcblk0p1 b 254 1

Unfortunately, mounting it did ot work:

mount /dev/mmcblk0p1 /mnt/flash
mount: Mounting /dev/mmcblk0p1 on /mnt/flash failed: No such device or address

What I am doing wrong here? I guess I can try compiling with the MMC debug flag, but I am not a device driver expert. What should I be looking for?

Paul
 
Old 06-01-2007, 02:30 AM   #2
ciotog
Member
 
Registered: Mar 2004
Location: Canada
Distribution: Slackware current
Posts: 728
Blog Entries: 2

Rep: Reputation: 43
What kind of SD interface do you have? You might need to enable another kernel driver like tifm_sd, mmc_wbsd or mmc_sdhci and load it too.
 
Old 06-01-2007, 04:28 AM   #3
TheOracle
Member
 
Registered: Nov 2004
Posts: 87

Rep: Reputation: 15
fdisk -l

Have you tried "fdisk -l"?
Perhaps puppy uses a different device???

Hope this helps
 
Old 06-01-2007, 10:08 AM   #4
paulsiu
Member
 
Registered: Apr 2006
Posts: 143

Original Poster
Rep: Reputation: 15
Well, it's an Averatec 2370 with a O2Micro controller, so it probably doesn't use TI or WinBond. I am just using the generic drivers. Judging from the various post, the TI drivers are broken any way so people generally use setpci to use the generic driver.

In my .config, I am compiling with the following flag:

CONFIG_MMC=m
CONFIG_MMC_DEBUG=y
CONFIG_MMC_BLOCK=m
CONFIG_MMC_SDHCI=m

I compile the kernel and modules using the above settings. Here's some of the debug output.

I load the 3 modules

modprobe mmc_core
modprobe mmc_block
modprobe sdhci

Here's what I get from dmesg (with the debug):

sdhci: Secure Digital Host Controller Interface driver, 0.12
sdhci: Copyright(c) Pierre Ossman
sdhci: SDHCI controller found at 0000:03:05.2 [1217:7120] (rev 1)
sdhci [sdhci_probe()]: found 1 slot(s)
ACPI: PCI Interrupt Link [LNKB] enabled at IRQ 10
ACPI: PCI Interrupt 0000:03:05.2[A] -> Link [LNKB] -> GSI 10 (level, low) -> IRQ 10
sdhci [sdhci_probe_slot()]: slot 0 at 0xfe3fec00, irq 10
sdhci:slot0: Unknown controller version (16). You may experience problems.
sdhci [sdhci_probe_slot()]: Controller doesn't have DMA interface
sdhci: ============== REGISTER DUMP ==============
sdhci: Sys addr: 0x00000000 | Version: 0x00001010
sdhci: Blk size: 0x00000000 | Blk cnt: 0x00000000
sdhci: Argument: 0x00000000 | Trn mode: 0x00000000
sdhci: Present: 0x01fa0000 | Host ctl: 0x00000000
sdhci: Power: 0x00000000 | Blk gap: 0x00000000
sdhci: Wake-up: 0x00000000 | Clock: 0x00000000
sdhci: Timeout: 0x00000000 | Int stat: 0x00000000
sdhci: Int enab: 0x00ff00fb | Sig enab: 0x00ff00fb
sdhci: AC12 err: 0x00000000 | Slot int: 0x00000000
sdhci: Caps: 0x038021a1 | Max curr: 0x00ffffff
sdhci: ===========================================
mmc0: clock 0Hz busmode 1 powermode 0 cs 0 Vdd 0 width 0
mmc0: SDHCI at 0xfe3fec00 irq 10 PIO
mmc0: clock 0Hz busmode 1 powermode 1 cs 0 Vdd 21 width 0
mmc0: clock 128906Hz busmode 1 powermode 2 cs 0 Vdd 21 width 0
mmc0: clock 128906Hz busmode 1 powermode 2 cs 1 Vdd 21 width 0
mmc0: starting CMD0 arg 00000000 flags 00000040
sdhci [sdhci_tasklet_finish()]: Ending request, cmd (0)
mmc0: req done (CMD0): 1/0/0: 00000000 00000000 00000000 00000000
mmc0: clock 128906Hz busmode 1 powermode 2 cs 0 Vdd 21 width 0
mmc0: starting CMD55 arg 00000000 flags 00000015
sdhci [sdhci_tasklet_finish()]: Ending request, cmd (37)
mmc0: req done (CMD55): 1/0/0: 00000000 00000000 00000000 00000000
mmc0: starting CMD55 arg 00000000 flags 00000015
sdhci [sdhci_tasklet_finish()]: Ending request, cmd (37)
mmc0: req done (CMD55): 1/0/0: 00000000 00000000 00000000 00000000
mmc0: starting CMD55 arg 00000000 flags 00000015
sdhci [sdhci_tasklet_finish()]: Ending request, cmd (37)
mmc0: req done (CMD55): 1/0/0: 00000000 00000000 00000000 00000000
mmc0: starting CMD55 arg 00000000 flags 00000015
sdhci [sdhci_tasklet_finish()]: Ending request, cmd (37)
mmc0: req done (CMD55): 1/0/0: 00000000 00000000 00000000 00000000
mmc0: starting CMD1 arg 00000000 flags 00000061
sdhci [sdhci_tasklet_finish()]: Ending request, cmd (1)
mmc0: req done (CMD1): 1/0/0: 00000000 00000000 00000000 00000000
mmc0: clock 0Hz busmode 1 powermode 0 cs 0 Vdd 0 width 0

When I insert the SD card, I get the following output

Sending cmd (29)
sdhci [sdhci_irq()]: *** sdhci:slot0 got interrupt: 0x00000001
sdhci [sdhci_finish_command()]: Ending cmd (29)
sdhci [sdhci_tasklet_finish()]: Ending request, cmd (29)
mmc0: req done (CMD41): 0/0/0: 00ff8000 00000000 00000000 00000000
mmc0: starting CMD55 arg 00000000 flags 00000015
sdhci [sdhci_send_command()]: Sending cmd (37)
sdhci [sdhci_irq()]: *** sdhci:slot0 got interrupt: 0x00000001
sdhci [sdhci_finish_command()]: Ending cmd (37)
sdhci [sdhci_tasklet_finish()]: Ending request, cmd (37)
mmc0: req done (CMD55): 0/0/0: 00000120 00000000 00000000 00000000
mmc0: starting CMD41 arg 00300000 flags 00000061
sdhci [sdhci_send_command()]: Sending cmd (29)
sdhci [sdhci_irq()]: *** sdhci:slot0 got interrupt: 0x00000001
sdhci [sdhci_finish_command()]: Ending cmd (29)
sdhci [sdhci_tasklet_finish()]: Ending request, cmd (29)
mmc0: req done (CMD41): 0/0/0: 80ff8000 00000000 00000000 00000000
mmc0: starting CMD2 arg 00000000 flags 00000067
sdhci [sdhci_send_command()]: Sending cmd (2)
sdhci [sdhci_irq()]: *** sdhci:slot0 got interrupt: 0x00000001
sdhci [sdhci_finish_command()]: Ending cmd (2)
sdhci [sdhci_tasklet_finish()]: Ending request, cmd (2)
mmc0: req done (CMD2): 0/0/0: 1a505153 44202020 0000c803 4d006500
mmc0: starting CMD3 arg 00000000 flags 00000065
sdhci [sdhci_send_command()]: Sending cmd (3)
sdhci [sdhci_irq()]: *** sdhci:slot0 got interrupt: 0x00000001
sdhci [sdhci_finish_command()]: Ending cmd (3)
sdhci [sdhci_tasklet_finish()]: Ending request, cmd (3)
mmc0: req done (CMD3): 0/0/0: 00020500 00000000 00000000 00000000
mmc0: starting CMD2 arg 00000000 flags 00000067
sdhci [sdhci_send_command()]: Sending cmd (2)
sdhci [sdhci_irq()]: *** sdhci:slot0 got interrupt: 0x00018000
sdhci [sdhci_tasklet_finish()]: Ending request, cmd (2)
mmc0: req done (CMD2): 1/0/0: 00000000 00000000 00000000 00000000
sdhci [sdhci_send_command()]: Sending cmd (2)
sdhci [sdhci_irq()]: *** sdhci:slot0 got interrupt: 0x00018000
sdhci [sdhci_tasklet_finish()]: Ending request, cmd (2)
mmc0: req done (CMD2): 1/0/0: 00000000 00000000 00000000 00000000
sdhci [sdhci_send_command()]: Sending cmd (2)
sdhci [sdhci_irq()]: *** sdhci:slot0 got interrupt: 0x00018000
sdhci [sdhci_tasklet_finish()]: Ending request, cmd (2)
mmc0: req done (CMD2): 1/0/0: 00000000 00000000 00000000 00000000
sdhci [sdhci_send_command()]: Sending cmd (2)
sdhci [sdhci_irq()]: *** sdhci:slot0 got interrupt: 0x00018000
sdhci [sdhci_tasklet_finish()]: Ending request, cmd (2)
mmc0: req done (CMD2): 1/0/0: 00000000 00000000 00000000 00000000
mmc0: clock 128906Hz busmode 2 powermode 2 cs 0 Vdd 20 width 0
mmc0: starting CMD9 arg 00020000 flags 00000007
sdhci [sdhci_send_command()]: Sending cmd (9)
sdhci [sdhci_irq()]: *** sdhci:slot0 got interrupt: 0x00000001
sdhci [sdhci_finish_command()]: Ending cmd (9)
sdhci [sdhci_tasklet_finish()]: Ending request, cmd (9)
mmc0: req done (CMD9): 0/0/0: 002f0132 5f5a83c2 b6dbdfff 9e800000
mmc0: starting CMD7 arg 00020000 flags 00000015
sdhci [sdhci_send_command()]: Sending cmd (7)
sdhci [sdhci_irq()]: *** sdhci:slot0 got interrupt: 0x00000001
sdhci [sdhci_finish_command()]: Ending cmd (7)
sdhci [sdhci_tasklet_finish()]: Ending request, cmd (7)
mmc0: req done (CMD7): 0/0/0: 00000700 00000000 00000000 00000000
mmc0: clock 128906Hz busmode 2 powermode 2 cs 0 Vdd 20 width 0
mmc0: starting CMD55 arg 00020000 flags 00000015
sdhci [sdhci_send_command()]: Sending cmd (37)
sdhci [sdhci_irq()]: *** sdhci:slot0 got interrupt: 0x00000001
sdhci [sdhci_finish_command()]: Ending cmd (37)
sdhci [sdhci_tasklet_finish()]: Ending request, cmd (37)
mmc0: req done (CMD55): 0/0/0: 00000920 00000000 00000000 00000000
mmc0: starting CMD51 arg 00000000 flags 00000035
sdhci [sdhci_send_command()]: Sending cmd (33)
sdhci [sdhci_prepare_data()]: blksz 0008 blks 0001 flags 00000200
sdhci [sdhci_prepare_data()]: tsac 100 ms nsac 0 clk
sdhci [sdhci_irq()]: *** sdhci:slot0 got interrupt: 0x00000001
sdhci [sdhci_finish_command()]: Ending cmd (33)
sdhci [sdhci_irq()]: *** sdhci:slot0 got interrupt: 0x00000020
sdhci [sdhci_read_block_pio()]: PIO reading
sdhci [sdhci_transfer_pio()]: PIO transfer complete.
sdhci [sdhci_irq()]: *** sdhci:slot0 got interrupt: 0x00000002
sdhci [sdhci_finish_data()]: Ending data transfer (8 bytes)
sdhci [sdhci_tasklet_finish()]: Ending request, cmd (33)
mmc0: req done (CMD51): 0/0/0: 00000920 00000000 00000000 00000000
mmc0: starting CMD7 arg 00000000 flags 00000000
sdhci [sdhci_send_command()]: Sending cmd (7)
sdhci [sdhci_irq()]: *** sdhci:slot0 got interrupt: 0x00000001
sdhci [sdhci_finish_command()]: Ending cmd (7)
sdhci [sdhci_tasklet_finish()]: Ending request, cmd (7)
mmc0: req done (CMD7): 0/0/0: 00000000 00000000 00000000 00000000
mmc0: selected 25.000MHz transfer rate
mmc0: clock 25000000Hz busmode 2 powermode 2 cs 0 Vdd 20 width 0
mmc0: starting CMD7 arg 00020000 flags 00000015
sdhci [sdhci_send_command()]: Sending cmd (7)
sdhci [sdhci_irq()]: *** sdhci:slot0 got interrupt: 0x00000001
sdhci [sdhci_finish_command()]: Ending cmd (7)
sdhci [sdhci_tasklet_finish()]: Ending request, cmd (7)
mmc0: req done (CMD7): 0/0/0: 00000700 00000000 00000000 00000000
mmc0: starting CMD55 arg 00020000 flags 00000015
sdhci [sdhci_send_command()]: Sending cmd (37)
sdhci [sdhci_irq()]: *** sdhci:slot0 got interrupt: 0x00000001
sdhci [sdhci_finish_command()]: Ending cmd (37)
sdhci [sdhci_tasklet_finish()]: Ending request, cmd (37)
mmc0: req done (CMD55): 0/0/0: 00000920 00000000 00000000 00000000
mmc0: starting CMD6 arg 00000002 flags 00000015
sdhci [sdhci_send_command()]: Sending cmd (6)
sdhci [sdhci_irq()]: *** sdhci:slot0 got interrupt: 0x00000001
sdhci [sdhci_finish_command()]: Ending cmd (6)
sdhci [sdhci_tasklet_finish()]: Ending request, cmd (6)
mmc0: req done (CMD6): 0/0/0: 00000920 00000000 00000000 00000000
mmc0: clock 25000000Hz busmode 2 powermode 2 cs 0 Vdd 20 width 2
mmc0: starting CMD16 arg 00000200 flags 00000015
sdhci [sdhci_send_command()]: Sending cmd (10)
sdhci [sdhci_irq()]: *** sdhci:slot0 got interrupt: 0x00000001
sdhci [sdhci_finish_command()]: Ending cmd (10)
sdhci [sdhci_tasklet_finish()]: Ending request, cmd (10)
mmc0: req done (CMD16): 0/0/0: 00000900 00000000 00000000 00000000
mmcblk0: mmc0:0002 SD 1971712KiB
mmcblk0:<7>mmc0: starting CMD18 arg 00000000 flags 00000035
sdhci [sdhci_send_command()]: Sending cmd (12)
sdhci [sdhci_prepare_data()]: blksz 0200 blks 0008 flags 00000a00
sdhci [sdhci_prepare_data()]: tsac 100 ms nsac 0 clk
sdhci [sdhci_irq()]: *** sdhci:slot0 got interrupt: 0x00000001
sdhci [sdhci_finish_command()]: Ending cmd (12)
sdhci [sdhci_irq()]: *** sdhci:slot0 got interrupt: 0x00000020
sdhci [sdhci_read_block_pio()]: PIO reading
sdhci [sdhci_read_block_pio()]: PIO reading
sdhci [sdhci_read_block_pio()]: PIO reading
sdhci [sdhci_read_block_pio()]: PIO reading
sdhci [sdhci_read_block_pio()]: PIO reading
sdhci [sdhci_read_block_pio()]: PIO reading
sdhci [sdhci_read_block_pio()]: PIO reading
sdhci [sdhci_read_block_pio()]: PIO reading
sdhci [sdhci_transfer_pio()]: PIO transfer complete.
sdhci [sdhci_irq()]: *** sdhci:slot0 got interrupt: 0x00000022
sdhci [sdhci_finish_data()]: Ending data transfer (4096 bytes)
sdhci [sdhci_send_command()]: Sending cmd (c)
sdhci [sdhci_irq()]: *** sdhci:slot0 got interrupt: 0x00000003
sdhci [sdhci_finish_command()]: Ending cmd (c)
sdhci [sdhci_tasklet_finish()]: Ending request, cmd (12)
mmc0: req done (CMD18): 0/0/0: 00000900 00000000 00000000 00000000
mmc0: starting CMD13 arg 00020000 flags 00000015
sdhci [sdhci_send_command()]: Sending cmd (d)
sdhci [sdhci_irq()]: *** sdhci:slot0 got interrupt: 0x00000001
sdhci [sdhci_finish_command()]: Ending cmd (d)
sdhci [sdhci_tasklet_finish()]: Ending request, cmd (d)
mmc0: req done (CMD13): 0/0/0: 00000900 00000000 00000000 00000000
p1

When I attempt to mount the sd I don't get anything in dmesg. When I tied to use fdisk -l, I do not get the SD card.

Does anyone have any idea what's going on? Is there another forum with experts on MMC? Thanks.

Paul
 
Old 06-01-2007, 07:19 PM   #5
ciotog
Member
 
Registered: Mar 2004
Location: Canada
Distribution: Slackware current
Posts: 728
Blog Entries: 2

Rep: Reputation: 43
Are you using udev or devfs? If so, then the device nodes ought to be created automatically. You might need to add entries manually, so for example create a file in /etc/udev/rules.d called mmc-rules or something like so:
Code:
ACTION=="add" KERNEL=="mmcblk[0-9]p[0-9]", GROUP="floppy"
ACTION=="remove" KERNEL=="mmcblk[0-9]p[0-9]", GROUP="floppy"
Also try the following mount command:
Code:
mount -t auto -q sync /dev/mmcblk0p1 /mnt/flash
 
Old 06-01-2007, 10:22 PM   #6
paulsiu
Member
 
Registered: Apr 2006
Posts: 143

Original Poster
Rep: Reputation: 15
Hi Ciotog

I think it's udev since the kernel is 2.6.18. I did add the entries in udev but it did not cause the devices to show up in dev. The mount command you suggested return with the same error
 
Old 06-04-2007, 07:34 AM   #7
paulsiu
Member
 
Registered: Apr 2006
Posts: 143

Original Poster
Rep: Reputation: 15
It appears that while there is a udev directly in Puppy. Puppy does not use udev.

I figure out the problem though, I was off the device number by 1 digit. From what I can tell, the card was being mounted. So I double check /proc/partitions again after I inserted the SD card and notice that the device number is actually 253, so it's:

1. Insert the SD card.
2. run the commmand cat /proc/partitions. You should see the device mmcblk0 and mmcblk0p1 and a list of the device number.
3. Use the numebers listed to create the device. In my case:

mknod mmcblk0 b 253 0
mknod mmcblk0p1 b 253 1

4. Mount the device by:

mount /dev/mmcblk0p1 /mnt/flash

Remember to mount the mmcblk0p1 (partition) and not mmcblk0

Paul
 
  


Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Fortemedia FM801 card not working under FC5 on Intel 845 but working with windows morningkiran Linux - Hardware 0 11-30-2006 08:57 AM
sound card working;now not working spx2 Linux - Newbie 4 01-17-2006 02:48 PM
TV card not working Riallin Linux - Hardware 1 04-06-2005 11:44 AM
Card, AP working- just cant get an IP sigep739 Linux - Wireless Networking 1 01-08-2005 08:17 AM
Channel 6 Not Working With TV Card kerbe6 Linux - Software 2 11-25-2004 04:01 AM


All times are GMT -5. The time now is 09:33 AM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
identi.ca: @linuxquestions
Facebook: linuxquestions Google+: linuxquestions
Open Source Consulting | Domain Registration