* SD/MMC with db1100
@ 2003-08-23 23:23 Yasushi SHOJI
2003-08-25 1:01 ` Dan Malek
0 siblings, 1 reply; 4+ messages in thread
From: Yasushi SHOJI @ 2003-08-23 23:23 UTC (permalink / raw)
To: linux-mips
Hello all,
I'm now tring SD subsystem on Au1100 with Syrah Rev 1.
Before porting handhelds.org's mmc driver, I just tried the attached
code, but it doesn't seems to work.
SD controler seems to emit right command to sd card, but there is no
response from sd card and timeouts.
Could someone enlighten me what's wrong with my code? or does anyone
successfully used sd/mmc on au1?
tia,
--
yashi (leaving to Canada in a few hours...)
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/delay.h>
#include <asm/au1000.h>
MODULE_LICENSE("GPL");
int sd_init(void)
{
u32 cpupll, sd;
au_writel(0xffffffff, 0xb0600018); /* clear all status */
/* just checking */
cpupll = au_readl(0xb1900060) & 0x3f;
sd = (au_readl(0xb190003c) & 0x3) + 2;
printk("CPU PLL %d => CPU freq %dMHz\n", cpupll, 12 * cpupll);
printk("System Bus clock Div %d => System Bus %dMHz\n",
sd, 12 * cpupll / sd);
printk("Peripheral clock is %dkHz\n",
(12 * 1000) * cpupll / sd / 2);
/* SD Enable Register */
au_writel(0x1, 0xb060000c); /* periperal rest: R */
au_writel(0x3, 0xb060000c); /* periperal reset and clock enable: R | CE */
mdelay(1);
/* SD Config Register */
au_writel(0x3ff, 0xb0600008); /* set slowest clock */
printk("SD Clock is %dHz\n", (12 * 1000 * 1000) * cpupll / sd / 2 / (2*((0x1ff)+1)));
/* SD Config Register 2*/
au_writel(0x2, 0xb0600010); /* FF(Force FIFO flush and reset) */
au_writel(0x0, 0xb0600010); /* clear FF */
au_writel(0x1, 0xb0600010); /* Enable serial interface state machine */
/* SD Timeout Register */
au_writel(0x1fffff, 0xb0600038); /* max timeout */
/* CMD0 */
au_writel(0x0, 0xb0600024);
au_writel(0x1, 0xb0600020);
while (!(au_readl(0xb0600018) & 0x10000))
;
printk("Status Register %#x\n", au_readl(0xb0600018));
au_writel(0x10000, 0xb0600018);
printk("Status Register %#x\n", au_readl(0xb0600018));
/* CMD1 */
au_writel(0x0, 0xb0600024);
au_writel(0x30101, 0xb0600020); /* R3 | CMD1 | CT 0 | GO */
// au_writel(0x0, 0xb0600024); /* ocr */
// au_writel(0x32901, 0xb0600020); /* R3 | CMD1 | CT 0 | GO */
while (!(au_readl(0xb0600018) & 0x10000) &&
!(au_readl(0xb0600018) & 0x20000))
;
printk("Status Register %#x\n", au_readl(0xb0600018));
printk("Response Register 0 %#x\n", au_readl(0xb0600034));
printk("Response Register 1 %#x\n", au_readl(0xb0600030));
printk("Response Register 2 %#x\n", au_readl(0xb060002c));
printk("Response Register 3 %#x\n", au_readl(0xb0600028));
mdelay(100);
printk("Status Register %#x\n", au_readl(0xb0600018));
return -1; /* too lazy to rmmod */
}
void sd_cleanup(void)
{
}
module_init(sd_init);
module_exit(sd_cleanup);
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: SD/MMC with db1100
2003-08-23 23:23 SD/MMC with db1100 Yasushi SHOJI
@ 2003-08-25 1:01 ` Dan Malek
2003-08-25 16:16 ` Pete Popov
0 siblings, 1 reply; 4+ messages in thread
From: Dan Malek @ 2003-08-25 1:01 UTC (permalink / raw)
To: Yasushi SHOJI; +Cc: linux-mips
Yasushi SHOJI wrote:
> Could someone enlighten me what's wrong with my code? or does anyone
> successfully used sd/mmc on au1?
There is a patch in Ralf's hands for the sd/mmc on this board. If
it doesn't show up soon, we'll find a way to get it to you.
-- Dan
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: SD/MMC with db1100
2003-08-25 1:01 ` Dan Malek
@ 2003-08-25 16:16 ` Pete Popov
2003-09-14 14:36 ` Yasushi SHOJI
0 siblings, 1 reply; 4+ messages in thread
From: Pete Popov @ 2003-08-25 16:16 UTC (permalink / raw)
To: Dan Malek; +Cc: Yasushi SHOJI, Linux MIPS mailing list
On Sun, 2003-08-24 at 18:01, Dan Malek wrote:
> Yasushi SHOJI wrote:
>
> > Could someone enlighten me what's wrong with my code? or does anyone
> > successfully used sd/mmc on au1?
>
> There is a patch in Ralf's hands for the sd/mmc on this board. If
> it doesn't show up soon, we'll find a way to get it to you.
It's been there for a little while now -- a couple of weeks or so I
think.
ftp.linux-mips.org:/pub/linux/mips/people/ppopov/au1x_mmc.patch
Pete
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: SD/MMC with db1100
2003-08-25 16:16 ` Pete Popov
@ 2003-09-14 14:36 ` Yasushi SHOJI
0 siblings, 0 replies; 4+ messages in thread
From: Yasushi SHOJI @ 2003-09-14 14:36 UTC (permalink / raw)
To: Pete Popov; +Cc: Dan Malek, Linux MIPS mailing list
At 25 Aug 2003 09:16:15 -0700,
Pete Popov wrote:
>
> On Sun, 2003-08-24 at 18:01, Dan Malek wrote:
> > Yasushi SHOJI wrote:
> >
> > > Could someone enlighten me what's wrong with my code? or does anyone
> > > successfully used sd/mmc on au1?
> >
> > There is a patch in Ralf's hands for the sd/mmc on this board. If
> > it doesn't show up soon, we'll find a way to get it to you.
>
> It's been there for a little while now -- a couple of weeks or so I
> think.
>
> ftp.linux-mips.org:/pub/linux/mips/people/ppopov/au1x_mmc.patch
Thanks for the patch, Dan and Pete.
I just got back from vacation and tried the patch. The result was same
as what I tested with my code. My card doesn't respond to Command 1,
MMC_SEND_OP_COND.
The controller _seems_ sending the command on the data line; I checked
with logic analyzer.
I've been using Panasonic's SD card, RP-SD064B; and Hagiwara syscom's
MMC card, HB28D032MM2.
is there anything that I need to do use SD other than the patch?
thanks in advance,
--
yashi
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2003-09-14 14:36 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-08-23 23:23 SD/MMC with db1100 Yasushi SHOJI
2003-08-25 1:01 ` Dan Malek
2003-08-25 16:16 ` Pete Popov
2003-09-14 14:36 ` Yasushi SHOJI
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.