* [PATCH] mmc: add include <linux/mmc/mmc.h> to au1xmmc.c @ 2007-05-11 3:59 Yoichi Yuasa 2007-05-11 4:47 ` Pierre Ossman 0 siblings, 1 reply; 8+ messages in thread From: Yoichi Yuasa @ 2007-05-11 3:59 UTC (permalink / raw) To: drzeus; +Cc: yoichi_yuasa, linux-mips Hi, This patch has fixed the following error about au1xmmc.c . drivers/mmc/host/au1xmmc.c: In function 'au1xmmc_send_command': drivers/mmc/host/au1xmmc.c:217: error: 'MMC_READ_SINGLE_BLOCK' undeclared (first use in this function) drivers/mmc/host/au1xmmc.c:217: error: (Each undeclared identifier is reported only once drivers/mmc/host/au1xmmc.c:217: error: for each function it appears in.) drivers/mmc/host/au1xmmc.c:218: error: 'SD_APP_SEND_SCR' undeclared (first use in this function) drivers/mmc/host/au1xmmc.c:221: error: 'MMC_READ_MULTIPLE_BLOCK' undeclared (first use in this function) drivers/mmc/host/au1xmmc.c:224: error: 'MMC_WRITE_BLOCK' undeclared (first use in this function) drivers/mmc/host/au1xmmc.c:228: error: 'MMC_WRITE_MULTIPLE_BLOCK' undeclared (first use in this function) drivers/mmc/host/au1xmmc.c:231: error: 'MMC_STOP_TRANSMISSION' undeclared (first use in this function) Yoichi Signed-off-by: Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp> diff -pruN -X mips/Documentation/dontdiff mips-orig/drivers/mmc/host/au1xmmc.c mips/drivers/mmc/host/au1xmmc.c --- mips-orig/drivers/mmc/host/au1xmmc.c 2007-05-10 15:14:44.705610250 +0900 +++ mips/drivers/mmc/host/au1xmmc.c 2007-05-10 18:12:02.785248000 +0900 @@ -42,6 +42,7 @@ #include <linux/dma-mapping.h> #include <linux/mmc/host.h> +#include <linux/mmc/mmc.h> #include <asm/io.h> #include <asm/mach-au1x00/au1000.h> #include <asm/mach-au1x00/au1xxx_dbdma.h> ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] mmc: add include <linux/mmc/mmc.h> to au1xmmc.c 2007-05-11 3:59 [PATCH] mmc: add include <linux/mmc/mmc.h> to au1xmmc.c Yoichi Yuasa @ 2007-05-11 4:47 ` Pierre Ossman 2007-05-11 5:16 ` Yoichi Yuasa 0 siblings, 1 reply; 8+ messages in thread From: Pierre Ossman @ 2007-05-11 4:47 UTC (permalink / raw) To: Yoichi Yuasa; +Cc: linux-mips [-- Attachment #1: Type: text/plain, Size: 1150 bytes --] Yoichi Yuasa wrote: > Hi, > > This patch has fixed the following error about au1xmmc.c . > > drivers/mmc/host/au1xmmc.c: In function 'au1xmmc_send_command': > drivers/mmc/host/au1xmmc.c:217: error: 'MMC_READ_SINGLE_BLOCK' undeclared (first use in this function) > drivers/mmc/host/au1xmmc.c:217: error: (Each undeclared identifier is reported only once > drivers/mmc/host/au1xmmc.c:217: error: for each function it appears in.) > drivers/mmc/host/au1xmmc.c:218: error: 'SD_APP_SEND_SCR' undeclared (first use in this function) > drivers/mmc/host/au1xmmc.c:221: error: 'MMC_READ_MULTIPLE_BLOCK' undeclared (first use in this function) > drivers/mmc/host/au1xmmc.c:224: error: 'MMC_WRITE_BLOCK' undeclared (first use in this function) > drivers/mmc/host/au1xmmc.c:228: error: 'MMC_WRITE_MULTIPLE_BLOCK' undeclared (first use in this function) > drivers/mmc/host/au1xmmc.c:231: error: 'MMC_STOP_TRANSMISSION' undeclared (first use in this function) > > Yoichi > > Signed-off-by: Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp> > NAK for now. I want an explanation what those opcodes are doing in a host driver. Rgds Pierre [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 251 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] mmc: add include <linux/mmc/mmc.h> to au1xmmc.c 2007-05-11 4:47 ` Pierre Ossman @ 2007-05-11 5:16 ` Yoichi Yuasa 2007-05-11 5:20 ` Pierre Ossman 0 siblings, 1 reply; 8+ messages in thread From: Yoichi Yuasa @ 2007-05-11 5:16 UTC (permalink / raw) To: Pierre Ossman; +Cc: yoichi_yuasa, linux-mips Hi, On Fri, 11 May 2007 06:47:56 +0200 Pierre Ossman <drzeus@drzeus.cx> wrote: > Yoichi Yuasa wrote: > > Hi, > > > > This patch has fixed the following error about au1xmmc.c . > > > > drivers/mmc/host/au1xmmc.c: In function 'au1xmmc_send_command': > > drivers/mmc/host/au1xmmc.c:217: error: 'MMC_READ_SINGLE_BLOCK' undeclared (first use in this function) > > drivers/mmc/host/au1xmmc.c:217: error: (Each undeclared identifier is reported only once > > drivers/mmc/host/au1xmmc.c:217: error: for each function it appears in.) > > drivers/mmc/host/au1xmmc.c:218: error: 'SD_APP_SEND_SCR' undeclared (first use in this function) > > drivers/mmc/host/au1xmmc.c:221: error: 'MMC_READ_MULTIPLE_BLOCK' undeclared (first use in this function) > > drivers/mmc/host/au1xmmc.c:224: error: 'MMC_WRITE_BLOCK' undeclared (first use in this function) > > drivers/mmc/host/au1xmmc.c:228: error: 'MMC_WRITE_MULTIPLE_BLOCK' undeclared (first use in this function) > > drivers/mmc/host/au1xmmc.c:231: error: 'MMC_STOP_TRANSMISSION' undeclared (first use in this function) > > > > Yoichi > > > > Signed-off-by: Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp> > > > > NAK for now. I want an explanation what those opcodes are doing in a host driver. The commands of au1xmmc controller are different from standard commands. au1xmmc_send_command() convert standard commands to local commands for au1xmmc host controller, and send local commands to controller. Yoichi ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] mmc: add include <linux/mmc/mmc.h> to au1xmmc.c 2007-05-11 5:16 ` Yoichi Yuasa @ 2007-05-11 5:20 ` Pierre Ossman 2007-05-11 10:29 ` [PATCH] mmc: au1xmmc command types check from data flags Yoichi Yuasa 0 siblings, 1 reply; 8+ messages in thread From: Pierre Ossman @ 2007-05-11 5:20 UTC (permalink / raw) To: Yoichi Yuasa; +Cc: linux-mips [-- Attachment #1: Type: text/plain, Size: 416 bytes --] Yoichi Yuasa wrote: > > The commands of au1xmmc controller are different from standard commands. > au1xmmc_send_command() convert standard commands to local commands for au1xmmc host controller, > and send local commands to controller. > A quick glance at the code seems to suggest it's specifying the type of command. And it should be able to figure that out in a more generic way. Rgds Pierre [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 251 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH] mmc: au1xmmc command types check from data flags 2007-05-11 5:20 ` Pierre Ossman @ 2007-05-11 10:29 ` Yoichi Yuasa 2007-05-11 11:07 ` Manuel Lauss 2007-05-11 15:48 ` Pierre Ossman 0 siblings, 2 replies; 8+ messages in thread From: Yoichi Yuasa @ 2007-05-11 10:29 UTC (permalink / raw) To: Pierre Ossman; +Cc: yoichi_yuasa, linux-mips On Fri, 11 May 2007 07:20:43 +0200 Pierre Ossman <drzeus@drzeus.cx> wrote: > Yoichi Yuasa wrote: > > > > The commands of au1xmmc controller are different from standard commands. > > au1xmmc_send_command() convert standard commands to local commands for au1xmmc host controller, > > and send local commands to controller. > > > > A quick glance at the code seems to suggest it's specifying the type of command. > And it should be able to figure that out in a more generic way. Ok, I updated the patch for au1xmmc.c . This patch has changed command types check from data flags. MMC_STOP_TRANSMISSION is never passed to au1xmmc_send_command(). SEND_STOP() is used for MMC_STOP_TRANSMISSION. Yoichi Signed-off-by: Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp> diff -pruN -X mips/Documentation/dontdiff mips-orig/drivers/mmc/host/au1xmmc.c mips/drivers/mmc/host/au1xmmc.c --- mips-orig/drivers/mmc/host/au1xmmc.c 2007-05-11 10:27:01.068483750 +0900 +++ mips/drivers/mmc/host/au1xmmc.c 2007-05-11 19:13:11.426283750 +0900 @@ -189,7 +189,7 @@ static void au1xmmc_tasklet_finish(unsig static int au1xmmc_send_command(struct au1xmmc_host *host, int wait, struct mmc_command *cmd) { - + unsigned int flags; u32 mmccmd = (cmd->opcode << SD_CMD_CI_SHIFT); switch (mmc_resp_type(cmd)) { @@ -213,24 +213,17 @@ static int au1xmmc_send_command(struct a return MMC_ERR_INVALID; } - switch(cmd->opcode) { - case MMC_READ_SINGLE_BLOCK: - case SD_APP_SEND_SCR: - mmccmd |= SD_CMD_CT_2; - break; - case MMC_READ_MULTIPLE_BLOCK: - mmccmd |= SD_CMD_CT_4; - break; - case MMC_WRITE_BLOCK: - mmccmd |= SD_CMD_CT_1; - break; - - case MMC_WRITE_MULTIPLE_BLOCK: - mmccmd |= SD_CMD_CT_3; - break; - case MMC_STOP_TRANSMISSION: - mmccmd |= SD_CMD_CT_7; - break; + flags = cmd->data->flags; + if (flags & MMC_DATA_READ) { + if (flags & MMC_DATA_MULTI) + mmccmd |= SD_CMD_CT_4; + else + mmccmd |= SD_CMD_CT_2; + } else if (flags & MMC_DATA_WRITE) { + if (flags & MMC_DATA_MULTI) + mmccmd |= SD_CMD_CT_3; + else + mmccmd |= SD_CMD_CT_1; } au_writel(cmd->arg, HOST_CMDARG(host)); ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] mmc: au1xmmc command types check from data flags 2007-05-11 10:29 ` [PATCH] mmc: au1xmmc command types check from data flags Yoichi Yuasa @ 2007-05-11 11:07 ` Manuel Lauss 2007-05-11 11:27 ` Yoichi Yuasa 2007-05-11 15:48 ` Pierre Ossman 1 sibling, 1 reply; 8+ messages in thread From: Manuel Lauss @ 2007-05-11 11:07 UTC (permalink / raw) To: Yoichi Yuasa; +Cc: Pierre Ossman, linux-mips Hi Yoichi, > --- mips-orig/drivers/mmc/host/au1xmmc.c 2007-05-11 10:27:01.068483750 +0900 > +++ mips/drivers/mmc/host/au1xmmc.c 2007-05-11 19:13:11.426283750 +0900 > @@ -189,7 +189,7 @@ static void au1xmmc_tasklet_finish(unsig > @@ -213,24 +213,17 @@ static int au1xmmc_send_command(struct a > return MMC_ERR_INVALID; > } > > - switch(cmd->opcode) { > - case MMC_READ_SINGLE_BLOCK: > - case SD_APP_SEND_SCR: > - mmccmd |= SD_CMD_CT_2; > - break; > - case MMC_READ_MULTIPLE_BLOCK: > - mmccmd |= SD_CMD_CT_4; > - break; > - case MMC_WRITE_BLOCK: > - mmccmd |= SD_CMD_CT_1; > - break; > - > - case MMC_WRITE_MULTIPLE_BLOCK: > - mmccmd |= SD_CMD_CT_3; > - break; > - case MMC_STOP_TRANSMISSION: > - mmccmd |= SD_CMD_CT_7; > - break; > + flags = cmd->data->flags; ^^^^^^^^ This line oopses the driver on my Au1200 ->data can be NULL > + if (flags & MMC_DATA_READ) { > + if (flags & MMC_DATA_MULTI) > + mmccmd |= SD_CMD_CT_4; > + else > + mmccmd |= SD_CMD_CT_2; > + } else if (flags & MMC_DATA_WRITE) { > + if (flags & MMC_DATA_MULTI) > + mmccmd |= SD_CMD_CT_3; > + else > + mmccmd |= SD_CMD_CT_1; > } what about SD_CMD_CT_7? Hows this: if (cmd->data) flags = cmd->data->flags; else if (cmd->opcode == 12) mmccmd |= CD_SMD_CT_7; else flags = 0; if (flags & MMC_DATA_READ) { [...] > au_writel(cmd->arg, HOST_CMDARG(host)); > Thanks, Manuel Lauss ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] mmc: au1xmmc command types check from data flags 2007-05-11 11:07 ` Manuel Lauss @ 2007-05-11 11:27 ` Yoichi Yuasa 0 siblings, 0 replies; 8+ messages in thread From: Yoichi Yuasa @ 2007-05-11 11:27 UTC (permalink / raw) To: Manuel Lauss; +Cc: yoichi_yuasa, drzeus, linux-mips Hi, On Fri, 11 May 2007 13:07:02 +0200 Manuel Lauss <mano@roarinelk.homelinux.net> wrote: > Hi Yoichi, > > > --- mips-orig/drivers/mmc/host/au1xmmc.c 2007-05-11 10:27:01.068483750 +0900 > > +++ mips/drivers/mmc/host/au1xmmc.c 2007-05-11 19:13:11.426283750 +0900 > > @@ -189,7 +189,7 @@ static void au1xmmc_tasklet_finish(unsig > > @@ -213,24 +213,17 @@ static int au1xmmc_send_command(struct a > > return MMC_ERR_INVALID; > > } > > > > - switch(cmd->opcode) { > > - case MMC_READ_SINGLE_BLOCK: > > - case SD_APP_SEND_SCR: > > - mmccmd |= SD_CMD_CT_2; > > - break; > > - case MMC_READ_MULTIPLE_BLOCK: > > - mmccmd |= SD_CMD_CT_4; > > - break; > > - case MMC_WRITE_BLOCK: > > - mmccmd |= SD_CMD_CT_1; > > - break; > > - > > - case MMC_WRITE_MULTIPLE_BLOCK: > > - mmccmd |= SD_CMD_CT_3; > > - break; > > - case MMC_STOP_TRANSMISSION: > > - mmccmd |= SD_CMD_CT_7; > > - break; > > + flags = cmd->data->flags; > ^^^^^^^^ > This line oopses the driver on my Au1200 > ->data can be NULL Thank you testing the patch. I don't have a db1200. Please test new one. > > > + if (flags & MMC_DATA_READ) { > > + if (flags & MMC_DATA_MULTI) > > + mmccmd |= SD_CMD_CT_4; > > + else > > + mmccmd |= SD_CMD_CT_2; > > + } else if (flags & MMC_DATA_WRITE) { > > + if (flags & MMC_DATA_MULTI) > > + mmccmd |= SD_CMD_CT_3; > > + else > > + mmccmd |= SD_CMD_CT_1; > > } > > what about SD_CMD_CT_7? MMC_STOP_TRANSMISSION is never passed to au1xmmc_send_command(). We don't need to care SD_CMD_CT_7 here. Yoichi Signed-off-by: Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp> diff -pruN -X mips/Documentation/dontdiff mips-orig/drivers/mmc/host/au1xmmc.c mips/drivers/mmc/host/au1xmmc.c --- mips-orig/drivers/mmc/host/au1xmmc.c 2007-05-11 20:15:50.358847000 +0900 +++ mips/drivers/mmc/host/au1xmmc.c 2007-05-11 20:20:36.804748750 +0900 @@ -187,9 +187,8 @@ static void au1xmmc_tasklet_finish(unsig } static int au1xmmc_send_command(struct au1xmmc_host *host, int wait, - struct mmc_command *cmd) + struct mmc_command *cmd, unsigned int flags) { - u32 mmccmd = (cmd->opcode << SD_CMD_CI_SHIFT); switch (mmc_resp_type(cmd)) { @@ -213,24 +212,16 @@ static int au1xmmc_send_command(struct a return MMC_ERR_INVALID; } - switch(cmd->opcode) { - case MMC_READ_SINGLE_BLOCK: - case SD_APP_SEND_SCR: - mmccmd |= SD_CMD_CT_2; - break; - case MMC_READ_MULTIPLE_BLOCK: - mmccmd |= SD_CMD_CT_4; - break; - case MMC_WRITE_BLOCK: - mmccmd |= SD_CMD_CT_1; - break; - - case MMC_WRITE_MULTIPLE_BLOCK: - mmccmd |= SD_CMD_CT_3; - break; - case MMC_STOP_TRANSMISSION: - mmccmd |= SD_CMD_CT_7; - break; + if (flags & MMC_DATA_READ) { + if (flags & MMC_DATA_MULTI) + mmccmd |= SD_CMD_CT_4; + else + mmccmd |= SD_CMD_CT_2; + } else if (flags & MMC_DATA_WRITE) { + if (flags & MMC_DATA_MULTI) + mmccmd |= SD_CMD_CT_3; + else + mmccmd |= SD_CMD_CT_1; } au_writel(cmd->arg, HOST_CMDARG(host)); @@ -665,6 +656,7 @@ static void au1xmmc_request(struct mmc_h { struct au1xmmc_host *host = mmc_priv(mmc); + unsigned int flags = 0; int ret = MMC_ERR_NONE; WARN_ON(irqs_disabled()); @@ -677,11 +669,12 @@ static void au1xmmc_request(struct mmc_h if (mrq->data) { FLUSH_FIFO(host); + flags = mrq->data->flags; ret = au1xmmc_prepare_data(host, mrq->data); } if (ret == MMC_ERR_NONE) - ret = au1xmmc_send_command(host, 0, mrq->cmd); + ret = au1xmmc_send_command(host, 0, mrq->cmd, flags); if (ret != MMC_ERR_NONE) { mrq->cmd->error = ret; ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] mmc: au1xmmc command types check from data flags 2007-05-11 10:29 ` [PATCH] mmc: au1xmmc command types check from data flags Yoichi Yuasa 2007-05-11 11:07 ` Manuel Lauss @ 2007-05-11 15:48 ` Pierre Ossman 1 sibling, 0 replies; 8+ messages in thread From: Pierre Ossman @ 2007-05-11 15:48 UTC (permalink / raw) To: Yoichi Yuasa; +Cc: linux-mips [-- Attachment #1: Type: text/plain, Size: 478 bytes --] Yoichi Yuasa wrote: > > Ok, I updated the patch for au1xmmc.c . > > This patch has changed command types check from data flags. > Perfect. That's just the way things should be. > MMC_STOP_TRANSMISSION is never passed to au1xmmc_send_command(). > SEND_STOP() is used for MMC_STOP_TRANSMISSION. > That SEND_STOP however is a long standing bug in this driver. Could I bother you with fixing the driver so that it respects mrq->data->stop? Rgds Pierre [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 251 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2007-05-11 15:49 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2007-05-11 3:59 [PATCH] mmc: add include <linux/mmc/mmc.h> to au1xmmc.c Yoichi Yuasa 2007-05-11 4:47 ` Pierre Ossman 2007-05-11 5:16 ` Yoichi Yuasa 2007-05-11 5:20 ` Pierre Ossman 2007-05-11 10:29 ` [PATCH] mmc: au1xmmc command types check from data flags Yoichi Yuasa 2007-05-11 11:07 ` Manuel Lauss 2007-05-11 11:27 ` Yoichi Yuasa 2007-05-11 15:48 ` Pierre Ossman
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox