Atheros AR6001 Driver

Samuel Ortiz sameo at openedhand.com
Wed Mar 19 17:37:39 CET 2008


Hi Nick,

On Wed, Mar 19, 2008 at 11:18:20AM -0500, Nick Moszer wrote:
> Hello,
> 
> First I would like to thank you guys for your AR6001 patches, very 
> helpful.   I'm trying to get this chip to work over SDIO on a 
> at91sam9260 dev board and was wondering if I could talk you gentlemen 
> into a little assistance.  
> 
> I took a vanilla 2.6.24 kernel, applied the at91 patches and then 
> applied the patches (minus the gta02 patch) found at:
> http://svn.openmoko.org/developers/sameo/patches/ar6k-atheros-2.0/2.6.24/
I would use atheros_2_0_* the patches from:
http://svn.openmoko.org/branches/src/target/kernel/2.6.24.x/patches/

That is if your ar6k chip is running a 2.0.x firmware.

Then you would need a couple more things:
1) Add your Atheros compliant SDIO host controller driver, see:
http://svn.openmoko.org/branches/src/target/kernel/2.6.24.x/patches/atheros_2_0_hcd.patch
for the s3c24xx one
2) You need to enable PNP on your .config.

I have a somehow working patch set for the ar6k, working on top of the
kernel's SDIO stack. With that patchset you won't need either of those 2
items.
I'll upload those patches to my openmoko SVN repo this week (I've been
trying to do so for the past 3 weeks, didn't have time yet...)

Cheers,
Samuel.

> Here are some of the .config entries.  I tried to the match the relevant 
> parts to the defconfig at:
> http://svn.openmoko.org/branches/src/target/kernel/2.6.24.x/config/defconfig-gta02
> 
> #
> # Networking options
> #
> CONFIG_PACKET=y
> # CONFIG_PACKET_MMAP is not set
> CONFIG_UNIX=y
> # CONFIG_NET_KEY is not set
> CONFIG_INET=y
> # CONFIG_IP_MULTICAST is not set
> # CONFIG_IP_ADVANCED_ROUTER is not set
> CONFIG_IP_FIB_HASH=y
> CONFIG_IP_PNP=y
> CONFIG_IP_PNP_DHCP=y
> # CONFIG_IP_PNP_BOOTP is not set
> 
> 
> #
> # UBI - Unsorted block images
> #
> # CONFIG_MTD_UBI is not set
> # CONFIG_PARPORT is not set
> CONFIG_PNP=y
> CONFIG_PNP_DEBUG=y
> 
> 
> #
> # SDIO support
> #
> CONFIG_SDIO=y
> CONFIG_SDIO_AR6000_WLAN=y
> CONFIG_MMC=y
> CONFIG_MMC_DEBUG=y
> # CONFIG_MMC_UNSAFE_RESUME is not set
> 
> #
> # MMC/SD Card Drivers
> #
> CONFIG_MMC_BLOCK=y
> CONFIG_MMC_BLOCK_BOUNCE=y
> # CONFIG_SDIO_UART is not set
> 
> #
> # MMC/SD Host Controller Drivers
> #
> CONFIG_MMC_AT91=y
> # CONFIG_MMC_SPI is not set
> CONFIG_NEW_LEDS=y
> CONFIG_LEDS_CLASS=y
> 
> 
> The kernel compiles mostly cleanly (a few warnings).  When I boot a 
> open-embedded minimal image and take a look at dmesg, this is what I get 
> (having MMC debug enabled):
> 
> 
> mmc0: clock 0Hz busmode 1 powermode 0 cs 0 Vdd 0 width 0 timing 0
> MMC: Setting controller bus width to 1
> Added MCI driver
> mmc0: clock 0Hz busmode 1 powermode 1 cs 0 Vdd 21 width 0 timing 0
> MMC: Setting controller bus width to 1
> mmc0: clock 375000Hz busmode 1 powermode 2 cs 0 Vdd 21 width 0 timing 0
> clkdiv = 132. mcck = 373413
> MMC: Setting controller bus width to 1
> mmc0: clock 375000Hz busmode 1 powermode 2 cs 1 Vdd 21 width 0 timing 0
> clkdiv = 132. mcck = 373413
> MMC: Setting controller bus width to 1
> mmc0: starting CMD0 arg 00000000 flags 000000c0
> Sending command 0 as 00000800, arg = 00000000, blocks = 0, length = 0 
> (MR = 00009B84)
> MCI irq: status = 0000C3E5, C07F0001, 00000001
> Command ready
> Completed command
> Status = 0000C3E5 [00000000 00000000 00000000 00000000]
> mmc0: req done (CMD0): 0: 00000000 00000000 00000000 00000000
> mmc0: clock 375000Hz busmode 1 powermode 2 cs 0 Vdd 21 width 0 timing 0
> clkdiv = 132. mcck = 373413
> MMC: Setting controller bus width to 1
> mmc0: starting CMD8 arg 000001aa flags 000002f5
> Sending command 8 as 00001848, arg = 000001AA, blocks = 0, length = 0 
> (MR = 00009B84)
> pnp: the driver 'sdio_wlan' has been registered
> MCI irq: status = 0010C3E4, C07F0001, 00100000
> MMC: Response timeout
> Completed command
> Status = 0010C3E5 [00000000 00000000 00000000 00000000]
> Error detected and set to -110 (cmd = 8, retries = 0)
> mmc0: req done (CMD8): -110: 00000000 00000000 00000000 00000000
> mmc0: starting CMD5 arg 00000000 flags 000002e1
> Sending command 5 as 00001845, arg = 00000000, blocks = 0, length = 0 
> (MR = 00009B84)
> MCI irq: status = 0010C3E4, C07F0001, 00100000
> MMC: Response timeout
> Completed command
> Status = 0010C3E5 [00000000 00000000 00000000 00000000]
> Error detected and set to -110 (cmd = 5, retries = 3)
> mmc0: req failed (CMD5): -110, retrying...
> Sending command 5 as 00001845, arg = 00000000, blocks = 0, length = 0 
> (MR = 00009B84)
> MCI irq: status = 0010C3E4, C07F0001, 00100000
> MMC: Response timeout
> Completed command
> Status = 0010C3E5 [00000000 00000000 00000000 00000000]
> Error detected and set to -110 (cmd = 5, retries = 2)
> mmc0: req failed (CMD5): -110, retrying...
> Sending command 5 as 00001845, arg = 00000000, blocks = 0, length = 0 
> (MR = 00009B84)
> MCI irq: status = 0010C3E4, C07F0001, 00100000
> MMC: Response timeout
> Completed command
> Status = 0010C3E5 [00000000 00000000 00000000 00000000]
> Error detected and set to -110 (cmd = 5, retries = 1)
> mmc0: req failed (CMD5): -110, retrying...
> Sending command 5 as 00001845, arg = 00000000, blocks = 0, length = 0 
> (MR = 00009B84)
> MCI irq: status = 0010C3E4, C07F0001, 00100000
> MMC: Response timeout
> Completed command
> Status = 0010C3E5 [00000000 00000000 00000000 00000000]
> Error detected and set to -110 (cmd = 5, retries = 0)
> mmc0: req done (CMD5): -110: 00000000 00000000 00000000 00000000
> mmc0: starting CMD55 arg 00000000 flags 000000f5
> Sending command 55 as 00001877, arg = 00000000, blocks = 0, length = 0 
> (MR = 00009B84)
> MCI irq: status = 0010C3E4, C07F0001, 00100000
> MMC: Response timeout
> Completed command
> Status = 0010C3E5 [00000000 00000000 00000000 00000000]
> Error detected and set to -110 (cmd = 55, retries = 0)
> mmc0: req done (CMD55): -110: 00000000 00000000 00000000 00000000
> mmc0: starting CMD55 arg 00000000 flags 000000f5
> Sending command 55 as 00001877, arg = 00000000, blocks = 0, length = 0 
> (MR = 00009B84)
> Registered led device: ds5
> MCI irq: status = 0010C3E5, C07F0001, 00100001
> MMC: Response timeout
> Completed command
> Status = 0010C3E5 [00000000 00000000 00000000 00000000]
> Error detected and set to -110 (cmd = 55, retries = 0)
> mmc0: req done (CMD55): -110: 00000000 00000000 00000000 00000000
> mmc0: starting CMD55 arg 00000000 flags 000000f5
> Sending command 55 as 00001877, arg = 00000000, blocks = 0, length = 0 
> (MR = 00009B84)
> MCI irq: status = 0010C3E4, C07F0001, 00100000
> MMC: Response timeout
> Completed command
> Status = 0010C3E5 [00000000 00000000 00000000 00000000]
> Error detected and set to -110 (cmd = 55, retries = 0)
> mmc0: req done (CMD55): -110: 00000000 00000000 00000000 00000000
> mmc0: starting CMD55 arg 00000000 flags 000000f5
> Sending command 55 as 00001877, arg = 00000000, blocks = 0, length = 0 
> (MR = 00009B84)
> Registered led device: ds1
> MCI irq: status = 0010C3E5, C07F0001, 00100001
> MMC: Response timeout
> Completed command
> Status = 0010C3E5 [00000000 00000000 00000000 00000000]
> Error detected and set to -110 (cmd = 55, retries = 0)
> mmc0: req done (CMD55): -110: 00000000 00000000 00000000 00000000
> TCP cubic registered
> NET: Registered protocol family 1
> NET: Registered protocol family 17
> mmc0: starting CMD1 arg 00000000 flags 000000e1
> Clearing timeout
> Clearing: SR = 0000C3E4
> Clearing: SR = 0000C3E4
> Clearing: SR = 0000C3E4
> Clearing: SR = 0000C3E4
> Clearing: SR = 0000C3E4
> Clearing: SR = 0000C3E4
> Clearing: SR = 0000C3E4
> Sending command 1 as 00001841, arg = 00000000, blocks = 0, length = 0 
> (MR = 00009B84)
> MCI irq: status = 0010C3E4, C07F0001, 00100000
> MMC: Response timeout
> Completed command
> Status = 0010C3E5 [00000000 00000000 00000000 00000000]
> Error detected and set to -110 (cmd = 1, retries = 0)
> mmc0: req done (CMD1): -110: 00000000 00000000 00000000 00000000
> RPC: Registered udp transport module.
> RPC: Registered tcp transport module.
> mmc0: clock 0Hz busmode 1 powermode 0 cs 0 Vdd 0 width 0 timing 0
> MMC: Setting controller bus width to 1
> 
> 
> 
> doing a quick cat of /proc/devices shows
> 
> Character devices:
>  1 mem
>  2 pty
>  3 ttyp
>  4 /dev/vc/0
>  4 tty
>  4 ttyS
>  5 /dev/tty
>  5 /dev/console
>  5 /dev/ptmx
>  7 vcs
> 10 misc
> 13 input
> 89 i2c
> 90 mtd
> 128 ptm
> 136 pts
> 153 spi
> 
> Block devices:
>  1 ramdisk
>  7 loop
>  8 sd
> 31 mtdblock
> 65 sd
> 66 sd
> 67 sd
> 68 sd
> 69 sd
> 70 sd
> 71 sd
> 128 sd
> 129 sd
> 130 sd
> 131 sd
> 132 sd
> 133 sd
> 134 sd
> 135 sd
> 179 mmc
> 
> I don't think it's in there?? I do have an entry in sysfs 
> (sys/class/mmc_host/mmc0....)
> A regular SD flash card works just fine on the board, but AR6k wifi 
> cards obviously do not. 
> 
> Does anyone have an idea what is wrong with my current setup?
> 
> Thanks!
> 
> 
> 
> 
> 
> -- 
> 
> * 
> Nick Moszer
> Research Engineer
> Packet Digital, LLC
> 201 N 5th Street, Suite 1500
> Fargo, ND 58102
> 701.365.4392
> 
> 
> This message may contain confidential and privileged information.  It is
> intended only for the use of the addressee, or any authorized agent of
> the addressee. Any unauthorized use, distribution or copying of this
> information is strictly prohibited and may be unlawful. If you have
> received this communication in error, please notify the sender by
> replying immediately and destroy the original message and all
> attachments from your electronic files.*
> 





More information about the openmoko-kernel mailing list