Commit 63a97a70 authored by Christian Lütke-Stetzkamp's avatar Christian Lütke-Stetzkamp Committed by Greg Kroah-Hartman

staging: mt7621-mmc: Fix spacing

Fixes checkpatch errors, warnings, checks:
SPACING, LEADING_SPACE, LINE_SPACING
Signed-off-by: default avatarChristian Lütke-Stetzkamp <christian@lkamp.de>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent b21f5195
...@@ -57,7 +57,6 @@ typedef void (*pm_callback_t)(pm_message_t state, void *data); ...@@ -57,7 +57,6 @@ typedef void (*pm_callback_t)(pm_message_t state, void *data);
#define MSDC_UHS1 (1 << 8) /* uhs-1 mode support */ #define MSDC_UHS1 (1 << 8) /* uhs-1 mode support */
#define MSDC_DDR (1 << 9) /* ddr mode support */ #define MSDC_DDR (1 << 9) /* ddr mode support */
#define MSDC_SMPL_RISING (0) #define MSDC_SMPL_RISING (0)
#define MSDC_SMPL_FALLING (1) #define MSDC_SMPL_FALLING (1)
...@@ -118,6 +117,7 @@ struct mt3326_gps_hardware { ...@@ -118,6 +117,7 @@ struct mt3326_gps_hardware {
int (*ext_power_on)(int); int (*ext_power_on)(int);
int (*ext_power_off)(int); int (*ext_power_off)(int);
}; };
extern struct mt3326_gps_hardware mt3326_gps_hw; extern struct mt3326_gps_hardware mt3326_gps_hw;
/* NAND driver */ /* NAND driver */
...@@ -131,6 +131,7 @@ struct mt6575_nand_host_hw { ...@@ -131,6 +131,7 @@ struct mt6575_nand_host_hw {
unsigned int nand_ecc_bytes; unsigned int nand_ecc_bytes;
unsigned int nand_ecc_mode; unsigned int nand_ecc_mode;
}; };
extern struct mt6575_nand_host_hw mt6575_nand_hw; extern struct mt6575_nand_host_hw mt6575_nand_hw;
#endif /* __ARCH_ARM_MACH_BOARD_H */ #endif /* __ARCH_ARM_MACH_BOARD_H */
...@@ -51,7 +51,7 @@ ...@@ -51,7 +51,7 @@
static char cmd_buf[256]; static char cmd_buf[256];
/* for debug zone */ /* for debug zone */
unsigned int sd_debug_zone[4]={ unsigned int sd_debug_zone[4] = {
0, 0,
0, 0,
0, 0,
...@@ -59,20 +59,21 @@ unsigned int sd_debug_zone[4]={ ...@@ -59,20 +59,21 @@ unsigned int sd_debug_zone[4]={
}; };
/* mode select */ /* mode select */
u32 dma_size[4]={ u32 dma_size[4] = {
512, 512,
512, 512,
512, 512,
512 512
}; };
msdc_mode drv_mode[4]={
msdc_mode drv_mode[4] = {
MODE_SIZE_DEP, /* using DMA or not depend on the size */ MODE_SIZE_DEP, /* using DMA or not depend on the size */
MODE_SIZE_DEP, MODE_SIZE_DEP,
MODE_SIZE_DEP, MODE_SIZE_DEP,
MODE_SIZE_DEP MODE_SIZE_DEP
}; };
#if defined (MT6575_SD_DEBUG) #if defined(MT6575_SD_DEBUG)
/* for driver profile */ /* for driver profile */
#define TICKS_ONE_MS (13000) #define TICKS_ONE_MS (13000)
u32 gpt_enable = 0; u32 gpt_enable = 0;
...@@ -90,7 +91,7 @@ void msdc_init_gpt(void) ...@@ -90,7 +91,7 @@ void msdc_init_gpt(void)
config.clkSrc = GPT_CLK_SRC_SYS; config.clkSrc = GPT_CLK_SRC_SYS;
config.clkDiv = GPT_CLK_DIV_1; /* 13MHz GPT6 */ config.clkDiv = GPT_CLK_DIV_1; /* 13MHz GPT6 */
if (GPT_Config(config) == FALSE ) if (GPT_Config(config) == FALSE)
return; return;
GPT_Start(GPT6); GPT_Start(GPT6);
...@@ -103,7 +104,7 @@ u32 msdc_time_calc(u32 old_L32, u32 old_H32, u32 new_L32, u32 new_H32) ...@@ -103,7 +104,7 @@ u32 msdc_time_calc(u32 old_L32, u32 old_H32, u32 new_L32, u32 new_H32)
if (new_H32 == old_H32) { if (new_H32 == old_H32) {
ret = new_L32 - old_L32; ret = new_L32 - old_L32;
} else if(new_H32 == (old_H32 + 1)) { } else if (new_H32 == (old_H32 + 1)) {
if (new_L32 > old_L32) { if (new_L32 > old_L32) {
printk("msdc old_L<0x%x> new_L<0x%x>\n", old_L32, new_L32); printk("msdc old_L<0x%x> new_L<0x%x>\n", old_L32, new_L32);
} }
...@@ -129,44 +130,44 @@ void msdc_sdio_profile(struct sdio_profile* result) ...@@ -129,44 +130,44 @@ void msdc_sdio_profile(struct sdio_profile* result)
/* CMD52 Dump */ /* CMD52 Dump */
cmd = &result->cmd52_rx; cmd = &result->cmd52_rx;
printk("sdio === CMD52 Rx <%d>times tick<%d> Max<%d> Min<%d> Aver<%d>\n", cmd->count, cmd->tot_tc, printk("sdio === CMD52 Rx <%d>times tick<%d> Max<%d> Min<%d> Aver<%d>\n", cmd->count, cmd->tot_tc,
cmd->max_tc, cmd->min_tc, cmd->tot_tc/cmd->count); cmd->max_tc, cmd->min_tc, cmd->tot_tc / cmd->count);
cmd = &result->cmd52_tx; cmd = &result->cmd52_tx;
printk("sdio === CMD52 Tx <%d>times tick<%d> Max<%d> Min<%d> Aver<%d>\n", cmd->count, cmd->tot_tc, printk("sdio === CMD52 Tx <%d>times tick<%d> Max<%d> Min<%d> Aver<%d>\n", cmd->count, cmd->tot_tc,
cmd->max_tc, cmd->min_tc, cmd->tot_tc/cmd->count); cmd->max_tc, cmd->min_tc, cmd->tot_tc / cmd->count);
/* CMD53 Rx bytes + block mode */ /* CMD53 Rx bytes + block mode */
for (i=0; i<512; i++) { for (i = 0; i < 512; i++) {
cmd = &result->cmd53_rx_byte[i]; cmd = &result->cmd53_rx_byte[i];
if (cmd->count) { if (cmd->count) {
printk("sdio<%6d><%3dB>_Rx_<%9d><%9d><%6d><%6d>_<%9dB><%2dM>\n", cmd->count, i, cmd->tot_tc, printk("sdio<%6d><%3dB>_Rx_<%9d><%9d><%6d><%6d>_<%9dB><%2dM>\n", cmd->count, i, cmd->tot_tc,
cmd->max_tc, cmd->min_tc, cmd->tot_tc/cmd->count, cmd->max_tc, cmd->min_tc, cmd->tot_tc / cmd->count,
cmd->tot_bytes, (cmd->tot_bytes/10)*13 / (cmd->tot_tc/10)); cmd->tot_bytes, (cmd->tot_bytes / 10) * 13 / (cmd->tot_tc / 10));
} }
} }
for (i=0; i<100; i++) { for (i = 0; i < 100; i++) {
cmd = &result->cmd53_rx_blk[i]; cmd = &result->cmd53_rx_blk[i];
if (cmd->count) { if (cmd->count) {
printk("sdio<%6d><%3d>B_Rx_<%9d><%9d><%6d><%6d>_<%9dB><%2dM>\n", cmd->count, i, cmd->tot_tc, printk("sdio<%6d><%3d>B_Rx_<%9d><%9d><%6d><%6d>_<%9dB><%2dM>\n", cmd->count, i, cmd->tot_tc,
cmd->max_tc, cmd->min_tc, cmd->tot_tc/cmd->count, cmd->max_tc, cmd->min_tc, cmd->tot_tc / cmd->count,
cmd->tot_bytes, (cmd->tot_bytes/10)*13 / (cmd->tot_tc/10)); cmd->tot_bytes, (cmd->tot_bytes / 10) * 13 / (cmd->tot_tc / 10));
} }
} }
/* CMD53 Tx bytes + block mode */ /* CMD53 Tx bytes + block mode */
for (i=0; i<512; i++) { for (i = 0; i < 512; i++) {
cmd = &result->cmd53_tx_byte[i]; cmd = &result->cmd53_tx_byte[i];
if (cmd->count) { if (cmd->count) {
printk("sdio<%6d><%3dB>_Tx_<%9d><%9d><%6d><%6d>_<%9dB><%2dM>\n", cmd->count, i, cmd->tot_tc, printk("sdio<%6d><%3dB>_Tx_<%9d><%9d><%6d><%6d>_<%9dB><%2dM>\n", cmd->count, i, cmd->tot_tc,
cmd->max_tc, cmd->min_tc, cmd->tot_tc/cmd->count, cmd->max_tc, cmd->min_tc, cmd->tot_tc / cmd->count,
cmd->tot_bytes, (cmd->tot_bytes/10)*13 / (cmd->tot_tc/10)); cmd->tot_bytes, (cmd->tot_bytes / 10) * 13 / (cmd->tot_tc / 10));
} }
} }
for (i=0; i<100; i++) { for (i = 0; i < 100; i++) {
cmd = &result->cmd53_tx_blk[i]; cmd = &result->cmd53_tx_blk[i];
if (cmd->count) { if (cmd->count) {
printk("sdio<%6d><%3d>B_Tx_<%9d><%9d><%6d><%6d>_<%9dB><%2dM>\n", cmd->count, i, cmd->tot_tc, printk("sdio<%6d><%3d>B_Tx_<%9d><%9d><%6d><%6d>_<%9dB><%2dM>\n", cmd->count, i, cmd->tot_tc,
cmd->max_tc, cmd->min_tc, cmd->tot_tc/cmd->count, cmd->max_tc, cmd->min_tc, cmd->tot_tc / cmd->count,
cmd->tot_bytes, (cmd->tot_bytes/10)*13 / (cmd->tot_tc/10)); cmd->tot_bytes, (cmd->tot_bytes / 10) * 13 / (cmd->tot_tc / 10));
} }
} }
...@@ -193,7 +194,7 @@ void msdc_performance(u32 opcode, u32 sizes, u32 bRx, u32 ticks) ...@@ -193,7 +194,7 @@ void msdc_performance(u32 opcode, u32 sizes, u32 bRx, u32 ticks)
block = sizes / 512; block = sizes / 512;
if (block >= 99) { if (block >= 99) {
printk("cmd53 error blocks\n"); printk("cmd53 error blocks\n");
while(1); while (1);
} }
cmd = bRx ? &result->cmd53_rx_blk[block] : &result->cmd53_tx_blk[block]; cmd = bRx ? &result->cmd53_rx_blk[block] : &result->cmd53_tx_blk[block];
} }
...@@ -202,7 +203,7 @@ void msdc_performance(u32 opcode, u32 sizes, u32 bRx, u32 ticks) ...@@ -202,7 +203,7 @@ void msdc_performance(u32 opcode, u32 sizes, u32 bRx, u32 ticks)
} }
/* update the members */ /* update the members */
if (ticks > cmd->max_tc){ if (ticks > cmd->max_tc) {
cmd->max_tc = ticks; cmd->max_tc = ticks;
} }
if (cmd->min_tc == 0 || ticks < cmd->min_tc) { if (cmd->min_tc == 0 || ticks < cmd->min_tc) {
...@@ -210,7 +211,7 @@ void msdc_performance(u32 opcode, u32 sizes, u32 bRx, u32 ticks) ...@@ -210,7 +211,7 @@ void msdc_performance(u32 opcode, u32 sizes, u32 bRx, u32 ticks)
} }
cmd->tot_tc += ticks; cmd->tot_tc += ticks;
cmd->tot_bytes += sizes; cmd->tot_bytes += sizes;
cmd->count ++; cmd->count++;
if (bRx) { if (bRx) {
result->total_rx_bytes += sizes; result->total_rx_bytes += sizes;
...@@ -222,7 +223,7 @@ void msdc_performance(u32 opcode, u32 sizes, u32 bRx, u32 ticks) ...@@ -222,7 +223,7 @@ void msdc_performance(u32 opcode, u32 sizes, u32 bRx, u32 ticks)
/* dump when total_tc > 30s */ /* dump when total_tc > 30s */
if (result->total_tc >= sdio_pro_time * TICKS_ONE_MS * 1000) { if (result->total_tc >= sdio_pro_time * TICKS_ONE_MS * 1000) {
msdc_sdio_profile(result); msdc_sdio_profile(result);
memset(result, 0 , sizeof(struct sdio_profile)); memset(result, 0, sizeof(struct sdio_profile));
} }
} }
...@@ -264,7 +265,7 @@ static ssize_t msdc_debug_proc_write(struct file *file, ...@@ -264,7 +265,7 @@ static ssize_t msdc_debug_proc_write(struct file *file,
int mode, size; int mode, size;
if (count == 0)return -1; if (count == 0)return -1;
if(count > 255)count = 255; if (count > 255)count = 255;
ret = copy_from_user(cmd_buf, buf, count); ret = copy_from_user(cmd_buf, buf, count);
if (ret < 0)return -1; if (ret < 0)return -1;
...@@ -274,13 +275,13 @@ static ssize_t msdc_debug_proc_write(struct file *file, ...@@ -274,13 +275,13 @@ static ssize_t msdc_debug_proc_write(struct file *file,
sscanf(cmd_buf, "%x %x %x", &cmd, &p1, &p2); sscanf(cmd_buf, "%x %x %x", &cmd, &p1, &p2);
if(cmd == SD_TOOL_ZONE) { if (cmd == SD_TOOL_ZONE) {
id = p1; zone = p2; zone &= 0x3ff; id = p1; zone = p2; zone &= 0x3ff;
printk("msdc host_id<%d> zone<0x%.8x>\n", id, zone); printk("msdc host_id<%d> zone<0x%.8x>\n", id, zone);
if(id >=0 && id<=3){ if (id >= 0 && id <= 3) {
sd_debug_zone[id] = zone; sd_debug_zone[id] = zone;
} }
else if(id == 4){ else if (id == 4) {
sd_debug_zone[0] = sd_debug_zone[1] = zone; sd_debug_zone[0] = sd_debug_zone[1] = zone;
sd_debug_zone[2] = sd_debug_zone[3] = zone; sd_debug_zone[2] = sd_debug_zone[3] = zone;
} }
...@@ -288,12 +289,12 @@ static ssize_t msdc_debug_proc_write(struct file *file, ...@@ -288,12 +289,12 @@ static ssize_t msdc_debug_proc_write(struct file *file,
printk("msdc host_id error when set debug zone\n"); printk("msdc host_id error when set debug zone\n");
} }
} else if (cmd == SD_TOOL_DMA_SIZE) { } else if (cmd == SD_TOOL_DMA_SIZE) {
id = p1>>4; mode = (p1&0xf); size = p2; id = p1 >> 4; mode = (p1 & 0xf); size = p2;
if(id >=0 && id<=3){ if (id >= 0 && id <= 3) {
drv_mode[id] = mode; drv_mode[id] = mode;
dma_size[id] = p2; dma_size[id] = p2;
} }
else if(id == 4){ else if (id == 4) {
drv_mode[0] = drv_mode[1] = mode; drv_mode[0] = drv_mode[1] = mode;
drv_mode[2] = drv_mode[3] = mode; drv_mode[2] = drv_mode[3] = mode;
dma_size[0] = dma_size[1] = p2; dma_size[0] = dma_size[1] = p2;
...@@ -310,7 +311,7 @@ static ssize_t msdc_debug_proc_write(struct file *file, ...@@ -310,7 +311,7 @@ static ssize_t msdc_debug_proc_write(struct file *file,
} }
sdio_pro_enable = 1; sdio_pro_enable = 1;
if (p2 == 0) p2 = 1; if (p2 >= 30) p2 = 30; if (p2 == 0) p2 = 1; if (p2 >= 30) p2 = 30;
sdio_pro_time = p2 ; sdio_pro_time = p2;
} else if (p1 == 0) { } else if (p1 == 0) {
/* todo */ /* todo */
sdio_pro_enable = 0; sdio_pro_enable = 0;
...@@ -341,7 +342,7 @@ int msdc_debug_proc_init(void) ...@@ -341,7 +342,7 @@ int msdc_debug_proc_init(void)
if (!de || IS_ERR(de)) if (!de || IS_ERR(de))
printk("!! Create MSDC debug PROC fail !!\n"); printk("!! Create MSDC debug PROC fail !!\n");
return 0 ; return 0;
} }
EXPORT_SYMBOL_GPL(msdc_debug_proc_init); EXPORT_SYMBOL_GPL(msdc_debug_proc_init);
#endif #endif
...@@ -104,9 +104,9 @@ extern unsigned int sd_debug_zone[4]; ...@@ -104,9 +104,9 @@ extern unsigned int sd_debug_zone[4];
do { \ do { \
if (x) { \ if (x) { \
printk("[BUG] %s LINE:%d FILE:%s\n", #x, __LINE__, __FILE__); \ printk("[BUG] %s LINE:%d FILE:%s\n", #x, __LINE__, __FILE__); \
while(1); \ while (1); \
} \ } \
}while(0) } while (0)
#endif /* end of +++ */ #endif /* end of +++ */
#define N_MSG(evt, fmt, args...) #define N_MSG(evt, fmt, args...)
...@@ -122,8 +122,8 @@ do { \ ...@@ -122,8 +122,8 @@ do { \
#define ERR_MSG(fmt, args...) \ #define ERR_MSG(fmt, args...) \
do { \ do { \
printk(KERN_ERR TAG"%d -> "fmt" <- %s() : L<%d> PID<%s><0x%x>\n", \ printk(KERN_ERR TAG"%d -> "fmt" <- %s() : L<%d> PID<%s><0x%x>\n", \
host->id, ##args , __FUNCTION__, __LINE__, current->comm, current->pid); \ host->id, ##args, __FUNCTION__, __LINE__, current->comm, current->pid); \
} while(0); } while (0);
#if 1 #if 1
//defined CONFIG_MTK_MMC_CD_POLL //defined CONFIG_MTK_MMC_CD_POLL
...@@ -133,15 +133,15 @@ do { \ ...@@ -133,15 +133,15 @@ do { \
#define INIT_MSG(fmt, args...) \ #define INIT_MSG(fmt, args...) \
do { \ do { \
printk(KERN_ERR TAG"%d -> "fmt" <- %s() : L<%d> PID<%s><0x%x>\n", \ printk(KERN_ERR TAG"%d -> "fmt" <- %s() : L<%d> PID<%s><0x%x>\n", \
host->id, ##args , __FUNCTION__, __LINE__, current->comm, current->pid); \ host->id, ##args, __FUNCTION__, __LINE__, current->comm, current->pid); \
} while(0); } while (0);
/* PID in ISR in not corrent */ /* PID in ISR in not corrent */
#define IRQ_MSG(fmt, args...) \ #define IRQ_MSG(fmt, args...) \
do { \ do { \
printk(KERN_ERR TAG"%d -> "fmt" <- %s() : L<%d>\n", \ printk(KERN_ERR TAG"%d -> "fmt" <- %s() : L<%d>\n", \
host->id, ##args , __FUNCTION__, __LINE__); \ host->id, ##args, __FUNCTION__, __LINE__); \
} while(0); } while (0);
#endif #endif
int msdc_debug_proc_init(void); int msdc_debug_proc_init(void);
......
...@@ -88,15 +88,15 @@ ...@@ -88,15 +88,15 @@
#define MSDC_EMMC_BOOTMODE1 (1) /* Reset CMD mode */ #define MSDC_EMMC_BOOTMODE1 (1) /* Reset CMD mode */
enum { enum {
RESP_NONE = 0, RESP_NONE = 0,
RESP_R1, RESP_R1,
RESP_R2, RESP_R2,
RESP_R3, RESP_R3,
RESP_R4, RESP_R4,
RESP_R5, RESP_R5,
RESP_R6, RESP_R6,
RESP_R7, RESP_R7,
RESP_R1B RESP_R1B
}; };
/*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/
...@@ -253,7 +253,7 @@ enum { ...@@ -253,7 +253,7 @@ enum {
#define MSDC_PS_CDDEBOUNCE (0xf << 12) /* RW */ #define MSDC_PS_CDDEBOUNCE (0xf << 12) /* RW */
#define MSDC_PS_DAT (0xff << 16) /* R */ #define MSDC_PS_DAT (0xff << 16) /* R */
#define MSDC_PS_CMD (0x1 << 24) /* R */ #define MSDC_PS_CMD (0x1 << 24) /* R */
#define MSDC_PS_WP (0x1UL<< 31) /* R */ #define MSDC_PS_WP (0x1UL << 31) /* R */
/* MSDC_INT mask */ /* MSDC_INT mask */
#define MSDC_INT_MMCIRQ (0x1 << 0) /* W1C */ #define MSDC_INT_MMCIRQ (0x1 << 0) /* W1C */
...@@ -294,7 +294,7 @@ enum { ...@@ -294,7 +294,7 @@ enum {
/* MSDC_FIFOCS mask */ /* MSDC_FIFOCS mask */
#define MSDC_FIFOCS_RXCNT (0xff << 0) /* R */ #define MSDC_FIFOCS_RXCNT (0xff << 0) /* R */
#define MSDC_FIFOCS_TXCNT (0xff << 16) /* R */ #define MSDC_FIFOCS_TXCNT (0xff << 16) /* R */
#define MSDC_FIFOCS_CLR (0x1UL<< 31) /* RW */ #define MSDC_FIFOCS_CLR (0x1UL << 31) /* RW */
/* SDC_CFG mask */ /* SDC_CFG mask */
#define SDC_CFG_SDIOINTWKUP (0x1 << 0) /* RW */ #define SDC_CFG_SDIOINTWKUP (0x1 << 0) /* RW */
...@@ -314,7 +314,7 @@ enum { ...@@ -314,7 +314,7 @@ enum {
#define SDC_CMD_RW (0x1 << 13) /* RW */ #define SDC_CMD_RW (0x1 << 13) /* RW */
#define SDC_CMD_STOP (0x1 << 14) /* RW */ #define SDC_CMD_STOP (0x1 << 14) /* RW */
#define SDC_CMD_GOIRQ (0x1 << 15) /* RW */ #define SDC_CMD_GOIRQ (0x1 << 15) /* RW */
#define SDC_CMD_BLKLEN (0xfff<< 16) /* RW */ #define SDC_CMD_BLKLEN (0xfff << 16) /* RW */
#define SDC_CMD_AUTOCMD (0x3 << 28) /* RW */ #define SDC_CMD_AUTOCMD (0x3 << 28) /* RW */
#define SDC_CMD_VOLSWTH (0x1 << 30) /* RW */ #define SDC_CMD_VOLSWTH (0x1 << 30) /* RW */
...@@ -396,7 +396,7 @@ enum { ...@@ -396,7 +396,7 @@ enum {
#define MSDC_PAD_CTL0_CLKSMT (0x1 << 18) /* RW */ #define MSDC_PAD_CTL0_CLKSMT (0x1 << 18) /* RW */
#define MSDC_PAD_CTL0_CLKIES (0x1 << 19) /* RW */ #define MSDC_PAD_CTL0_CLKIES (0x1 << 19) /* RW */
#define MSDC_PAD_CTL0_CLKTDSEL (0xf << 20) /* RW */ #define MSDC_PAD_CTL0_CLKTDSEL (0xf << 20) /* RW */
#define MSDC_PAD_CTL0_CLKRDSEL (0xffUL<< 24) /* RW */ #define MSDC_PAD_CTL0_CLKRDSEL (0xffUL << 24) /* RW */
/* MSDC_PAD_CTL1 mask */ /* MSDC_PAD_CTL1 mask */
#define MSDC_PAD_CTL1_CMDDRVN (0x7 << 0) /* RW */ #define MSDC_PAD_CTL1_CMDDRVN (0x7 << 0) /* RW */
...@@ -407,7 +407,7 @@ enum { ...@@ -407,7 +407,7 @@ enum {
#define MSDC_PAD_CTL1_CMDSMT (0x1 << 18) /* RW */ #define MSDC_PAD_CTL1_CMDSMT (0x1 << 18) /* RW */
#define MSDC_PAD_CTL1_CMDIES (0x1 << 19) /* RW */ #define MSDC_PAD_CTL1_CMDIES (0x1 << 19) /* RW */
#define MSDC_PAD_CTL1_CMDTDSEL (0xf << 20) /* RW */ #define MSDC_PAD_CTL1_CMDTDSEL (0xf << 20) /* RW */
#define MSDC_PAD_CTL1_CMDRDSEL (0xffUL<< 24) /* RW */ #define MSDC_PAD_CTL1_CMDRDSEL (0xffUL << 24) /* RW */
/* MSDC_PAD_CTL2 mask */ /* MSDC_PAD_CTL2 mask */
#define MSDC_PAD_CTL2_DATDRVN (0x7 << 0) /* RW */ #define MSDC_PAD_CTL2_DATDRVN (0x7 << 0) /* RW */
...@@ -418,7 +418,7 @@ enum { ...@@ -418,7 +418,7 @@ enum {
#define MSDC_PAD_CTL2_DATIES (0x1 << 19) /* RW */ #define MSDC_PAD_CTL2_DATIES (0x1 << 19) /* RW */
#define MSDC_PAD_CTL2_DATSMT (0x1 << 18) /* RW */ #define MSDC_PAD_CTL2_DATSMT (0x1 << 18) /* RW */
#define MSDC_PAD_CTL2_DATTDSEL (0xf << 20) /* RW */ #define MSDC_PAD_CTL2_DATTDSEL (0xf << 20) /* RW */
#define MSDC_PAD_CTL2_DATRDSEL (0xffUL<< 24) /* RW */ #define MSDC_PAD_CTL2_DATRDSEL (0xffUL << 24) /* RW */
/* MSDC_PAD_TUNE mask */ /* MSDC_PAD_TUNE mask */
#define MSDC_PAD_TUNE_DATWRDLY (0x1F << 0) /* RW */ #define MSDC_PAD_TUNE_DATWRDLY (0x1F << 0) /* RW */
...@@ -438,11 +438,11 @@ enum { ...@@ -438,11 +438,11 @@ enum {
#define MSDC_DAT_RDDLY1_D6 (0x1F << 16) /* RW */ #define MSDC_DAT_RDDLY1_D6 (0x1F << 16) /* RW */
#define MSDC_DAT_RDDLY1_D7 (0x1F << 24) /* RW */ #define MSDC_DAT_RDDLY1_D7 (0x1F << 24) /* RW */
#define MSDC_CKGEN_MSDC_DLY_SEL (0x1F<<10) #define MSDC_CKGEN_MSDC_DLY_SEL (0x1F << 10)
#define MSDC_INT_DAT_LATCH_CK_SEL (0x7<<7) #define MSDC_INT_DAT_LATCH_CK_SEL (0x7 << 7)
#define MSDC_CKGEN_MSDC_CK_SEL (0x1<<6) #define MSDC_CKGEN_MSDC_CK_SEL (0x1 << 6)
#define CARD_READY_FOR_DATA (1<<8) #define CARD_READY_FOR_DATA (1 << 8)
#define CARD_CURRENT_STATE(x) ((x&0x00001E00)>>9) #define CARD_CURRENT_STATE(x) ((x & 0x00001E00) >> 9)
/*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/
/* Descriptor Structure */ /* Descriptor Structure */
...@@ -974,27 +974,28 @@ static inline unsigned int uffs(unsigned int x) ...@@ -974,27 +974,28 @@ static inline unsigned int uffs(unsigned int x)
} }
return r; return r;
} }
#define sdr_read8(reg) __raw_readb(reg) #define sdr_read8(reg) __raw_readb(reg)
#define sdr_read16(reg) __raw_readw(reg) #define sdr_read16(reg) __raw_readw(reg)
#define sdr_read32(reg) __raw_readl(reg) #define sdr_read32(reg) __raw_readl(reg)
#define sdr_write8(reg,val) __raw_writeb(val,reg) #define sdr_write8(reg, val) __raw_writeb(val, reg)
#define sdr_write16(reg,val) __raw_writew(val,reg) #define sdr_write16(reg, val) __raw_writew(val, reg)
#define sdr_write32(reg,val) __raw_writel(val,reg) #define sdr_write32(reg, val) __raw_writel(val, reg)
#define sdr_set_bits(reg,bs) ((*(volatile u32*)(reg)) |= (u32)(bs)) #define sdr_set_bits(reg, bs) ((*(volatile u32*)(reg)) |= (u32)(bs))
#define sdr_clr_bits(reg,bs) ((*(volatile u32*)(reg)) &= ~((u32)(bs))) #define sdr_clr_bits(reg, bs) ((*(volatile u32*)(reg)) &= ~((u32)(bs)))
#define sdr_set_field(reg,field,val) \ #define sdr_set_field(reg, field, val) \
do { \ do { \
volatile unsigned int tv = sdr_read32(reg); \ volatile unsigned int tv = sdr_read32(reg); \
tv &= ~(field); \ tv &= ~(field); \
tv |= ((val) << (uffs((unsigned int)field) - 1)); \ tv |= ((val) << (uffs((unsigned int)field) - 1)); \
sdr_write32(reg,tv); \ sdr_write32(reg, tv); \
} while(0) } while (0)
#define sdr_get_field(reg,field,val) \ #define sdr_get_field(reg, field, val) \
do { \ do { \
volatile unsigned int tv = sdr_read32(reg); \ volatile unsigned int tv = sdr_read32(reg); \
val = ((tv & (field)) >> (uffs((unsigned int)field) - 1)); \ val = ((tv & (field)) >> (uffs((unsigned int)field) - 1)); \
} while(0) } while (0)
#endif #endif
...@@ -80,7 +80,6 @@ ...@@ -80,7 +80,6 @@
#include <asm/dma.h> #include <asm/dma.h>
/* end of +++ */ /* end of +++ */
#include <asm/mach-ralink/ralink_regs.h> #include <asm/mach-ralink/ralink_regs.h>
#if 0 /* --- by chhung */ #if 0 /* --- by chhung */
...@@ -114,9 +113,9 @@ ...@@ -114,9 +113,9 @@
#define HOST_MAX_NUM (1) /* +/- by chhung */ #define HOST_MAX_NUM (1) /* +/- by chhung */
#if defined (CONFIG_SOC_MT7620) #if defined(CONFIG_SOC_MT7620)
#define HOST_MAX_MCLK (48000000) /* +/- by chhung */ #define HOST_MAX_MCLK (48000000) /* +/- by chhung */
#elif defined (CONFIG_SOC_MT7621) #elif defined(CONFIG_SOC_MT7621)
#define HOST_MAX_MCLK (50000000) /* +/- by chhung */ #define HOST_MAX_MCLK (50000000) /* +/- by chhung */
#endif #endif
#define HOST_MIN_MCLK (260000) #define HOST_MIN_MCLK (260000)
...@@ -136,8 +135,8 @@ ...@@ -136,8 +135,8 @@
#define DEFAULT_DEBOUNCE (8) /* 8 cycles */ #define DEFAULT_DEBOUNCE (8) /* 8 cycles */
#define DEFAULT_DTOC (40) /* data timeout counter. 65536x40 sclk. */ #define DEFAULT_DTOC (40) /* data timeout counter. 65536x40 sclk. */
#define CMD_TIMEOUT (HZ/10) /* 100ms */ #define CMD_TIMEOUT (HZ / 10) /* 100ms */
#define DAT_TIMEOUT (HZ/2 * 5) /* 500ms x5 */ #define DAT_TIMEOUT (HZ / 2 * 5) /* 500ms x5 */
#define MAX_DMA_CNT (64 * 1024 - 512) /* a single transaction for WIFI may be 50K*/ #define MAX_DMA_CNT (64 * 1024 - 512) /* a single transaction for WIFI may be 50K*/
...@@ -164,19 +163,19 @@ static int cd_active_low = 1; ...@@ -164,19 +163,19 @@ static int cd_active_low = 1;
//#define PERI_MSDC2_PDN (17) //#define PERI_MSDC2_PDN (17)
//#define PERI_MSDC3_PDN (18) //#define PERI_MSDC3_PDN (18)
struct msdc_host *msdc_6575_host[] = {NULL,NULL,NULL,NULL}; struct msdc_host *msdc_6575_host[] = {NULL, NULL, NULL, NULL};
#if 0 /* --- by chhung */ #if 0 /* --- by chhung */
/* gate means clock power down */ /* gate means clock power down */
static int g_clk_gate = 0; static int g_clk_gate = 0;
#define msdc_gate_clock(id) \ #define msdc_gate_clock(id) \
do { \ do { \
g_clk_gate &= ~(1 << ((id) + PERI_MSDC0_PDN)); \ g_clk_gate &= ~(1 << ((id) + PERI_MSDC0_PDN)); \
} while(0) } while (0)
/* not like power down register. 1 means clock on. */ /* not like power down register. 1 means clock on. */
#define msdc_ungate_clock(id) \ #define msdc_ungate_clock(id) \
do { \ do { \
g_clk_gate |= 1 << ((id) + PERI_MSDC0_PDN); \ g_clk_gate |= 1 << ((id) + PERI_MSDC0_PDN); \
} while(0) } while (0)
// do we need sync object or not // do we need sync object or not
void msdc_clk_status(int * status) void msdc_clk_status(int * status)
...@@ -202,7 +201,7 @@ struct msdc_hw msdc0_hw = { ...@@ -202,7 +201,7 @@ struct msdc_hw msdc0_hw = {
static struct resource mtk_sd_resources[] = { static struct resource mtk_sd_resources[] = {
[0] = { [0] = {
.start = RALINK_MSDC_BASE, .start = RALINK_MSDC_BASE,
.end = RALINK_MSDC_BASE+0x3fff, .end = RALINK_MSDC_BASE + 0x3fff,
.flags = IORESOURCE_MEM, .flags = IORESOURCE_MEM,
}, },
[1] = { [1] = {
...@@ -233,13 +232,13 @@ static int msdc_rsp[] = { ...@@ -233,13 +232,13 @@ static int msdc_rsp[] = {
}; };
/* For Inhanced DMA */ /* For Inhanced DMA */
#define msdc_init_gpd_ex(gpd,extlen,cmd,arg,blknum) \ #define msdc_init_gpd_ex(gpd, extlen, cmd, arg, blknum) \
do { \ do { \
((gpd_t*)gpd)->extlen = extlen; \ ((gpd_t*)gpd)->extlen = extlen; \
((gpd_t*)gpd)->cmd = cmd; \ ((gpd_t*)gpd)->cmd = cmd; \
((gpd_t*)gpd)->arg = arg; \ ((gpd_t*)gpd)->arg = arg; \
((gpd_t*)gpd)->blknum = blknum; \ ((gpd_t*)gpd)->blknum = blknum; \
}while(0) } while (0)
#define msdc_init_bd(bd, blkpad, dwpad, dptr, dlen) \ #define msdc_init_bd(bd, blkpad, dwpad, dptr, dlen) \
do { \ do { \
...@@ -248,7 +247,7 @@ static int msdc_rsp[] = { ...@@ -248,7 +247,7 @@ static int msdc_rsp[] = {
((bd_t*)bd)->dwpad = dwpad; \ ((bd_t*)bd)->dwpad = dwpad; \
((bd_t*)bd)->ptr = (void*)dptr; \ ((bd_t*)bd)->ptr = (void*)dptr; \
((bd_t*)bd)->buflen = dlen; \ ((bd_t*)bd)->buflen = dlen; \
}while(0) } while (0)
#define msdc_txfifocnt() ((sdr_read32(MSDC_FIFOCS) & MSDC_FIFOCS_TXCNT) >> 16) #define msdc_txfifocnt() ((sdr_read32(MSDC_FIFOCS) & MSDC_FIFOCS_TXCNT) >> 16)
#define msdc_rxfifocnt() ((sdr_read32(MSDC_FIFOCS) & MSDC_FIFOCS_RXCNT) >> 0) #define msdc_rxfifocnt() ((sdr_read32(MSDC_FIFOCS) & MSDC_FIFOCS_RXCNT) >> 0)
...@@ -257,11 +256,10 @@ static int msdc_rsp[] = { ...@@ -257,11 +256,10 @@ static int msdc_rsp[] = {
#define msdc_fifo_read32() sdr_read32(MSDC_RXDATA) #define msdc_fifo_read32() sdr_read32(MSDC_RXDATA)
#define msdc_fifo_read8() sdr_read8(MSDC_RXDATA) #define msdc_fifo_read8() sdr_read8(MSDC_RXDATA)
#define msdc_dma_on() sdr_clr_bits(MSDC_CFG, MSDC_CFG_PIO) #define msdc_dma_on() sdr_clr_bits(MSDC_CFG, MSDC_CFG_PIO)
#define msdc_dma_off() sdr_set_bits(MSDC_CFG, MSDC_CFG_PIO) #define msdc_dma_off() sdr_set_bits(MSDC_CFG, MSDC_CFG_PIO)
#define msdc_retry(expr,retry,cnt) \ #define msdc_retry(expr, retry, cnt) \
do { \ do { \
int backup = cnt; \ int backup = cnt; \
while (retry) { \ while (retry) { \
...@@ -271,7 +269,7 @@ static int msdc_rsp[] = { ...@@ -271,7 +269,7 @@ static int msdc_rsp[] = {
} \ } \
} \ } \
WARN_ON(retry == 0); \ WARN_ON(retry == 0); \
} while(0) } while (0)
#if 0 /* --- by chhung */ #if 0 /* --- by chhung */
#define msdc_reset() \ #define msdc_reset() \
...@@ -280,44 +278,44 @@ static int msdc_rsp[] = { ...@@ -280,44 +278,44 @@ static int msdc_rsp[] = {
sdr_set_bits(MSDC_CFG, MSDC_CFG_RST); \ sdr_set_bits(MSDC_CFG, MSDC_CFG_RST); \
dsb(); \ dsb(); \
msdc_retry(sdr_read32(MSDC_CFG) & MSDC_CFG_RST, retry, cnt); \ msdc_retry(sdr_read32(MSDC_CFG) & MSDC_CFG_RST, retry, cnt); \
} while(0) } while (0)
#else #else
#define msdc_reset() \ #define msdc_reset() \
do { \ do { \
int retry = 3, cnt = 1000; \ int retry = 3, cnt = 1000; \
sdr_set_bits(MSDC_CFG, MSDC_CFG_RST); \ sdr_set_bits(MSDC_CFG, MSDC_CFG_RST); \
msdc_retry(sdr_read32(MSDC_CFG) & MSDC_CFG_RST, retry, cnt); \ msdc_retry(sdr_read32(MSDC_CFG) & MSDC_CFG_RST, retry, cnt); \
} while(0) } while (0)
#endif /* end of +/- */ #endif /* end of +/- */
#define msdc_clr_int() \ #define msdc_clr_int() \
do { \ do { \
volatile u32 val = sdr_read32(MSDC_INT); \ volatile u32 val = sdr_read32(MSDC_INT); \
sdr_write32(MSDC_INT, val); \ sdr_write32(MSDC_INT, val); \
} while(0) } while (0)
#define msdc_clr_fifo() \ #define msdc_clr_fifo() \
do { \ do { \
int retry = 3, cnt = 1000; \ int retry = 3, cnt = 1000; \
sdr_set_bits(MSDC_FIFOCS, MSDC_FIFOCS_CLR); \ sdr_set_bits(MSDC_FIFOCS, MSDC_FIFOCS_CLR); \
msdc_retry(sdr_read32(MSDC_FIFOCS) & MSDC_FIFOCS_CLR, retry, cnt); \ msdc_retry(sdr_read32(MSDC_FIFOCS) & MSDC_FIFOCS_CLR, retry, cnt); \
} while(0) } while (0)
#define msdc_irq_save(val) \ #define msdc_irq_save(val) \
do { \ do { \
val = sdr_read32(MSDC_INTEN); \ val = sdr_read32(MSDC_INTEN); \
sdr_clr_bits(MSDC_INTEN, val); \ sdr_clr_bits(MSDC_INTEN, val); \
} while(0) } while (0)
#define msdc_irq_restore(val) \ #define msdc_irq_restore(val) \
do { \ do { \
sdr_set_bits(MSDC_INTEN, val); \ sdr_set_bits(MSDC_INTEN, val); \
} while(0) } while (0)
/* clock source for host: global */ /* clock source for host: global */
#if defined (CONFIG_SOC_MT7620) #if defined(CONFIG_SOC_MT7620)
static u32 hclks[] = {48000000}; /* +/- by chhung */ static u32 hclks[] = {48000000}; /* +/- by chhung */
#elif defined (CONFIG_SOC_MT7621) #elif defined(CONFIG_SOC_MT7621)
static u32 hclks[] = {50000000}; /* +/- by chhung */ static u32 hclks[] = {50000000}; /* +/- by chhung */
#endif #endif
...@@ -352,11 +350,11 @@ static u32 hclks[] = {50000000}; /* +/- by chhung */ ...@@ -352,11 +350,11 @@ static u32 hclks[] = {50000000}; /* +/- by chhung */
#define sdc_is_busy() (sdr_read32(SDC_STS) & SDC_STS_SDCBUSY) #define sdc_is_busy() (sdr_read32(SDC_STS) & SDC_STS_SDCBUSY)
#define sdc_is_cmd_busy() (sdr_read32(SDC_STS) & SDC_STS_CMDBUSY) #define sdc_is_cmd_busy() (sdr_read32(SDC_STS) & SDC_STS_CMDBUSY)
#define sdc_send_cmd(cmd,arg) \ #define sdc_send_cmd(cmd, arg) \
do { \ do { \
sdr_write32(SDC_ARG, (arg)); \ sdr_write32(SDC_ARG, (arg)); \
sdr_write32(SDC_CMD, (cmd)); \ sdr_write32(SDC_CMD, (cmd)); \
} while(0) } while (0)
// can modify to read h/w register. // can modify to read h/w register.
//#define is_card_present(h) ((sdr_read32(MSDC_PS) & MSDC_PS_CDSTS) ? 0 : 1); //#define is_card_present(h) ((sdr_read32(MSDC_PS) & MSDC_PS_CDSTS) ? 0 : 1);
...@@ -374,7 +372,7 @@ static unsigned int msdc_do_command(struct msdc_host *host, ...@@ -374,7 +372,7 @@ static unsigned int msdc_do_command(struct msdc_host *host,
int tune, int tune,
unsigned long timeout); unsigned long timeout);
static int msdc_tune_cmdrsp(struct msdc_host*host,struct mmc_command *cmd); static int msdc_tune_cmdrsp(struct msdc_host*host, struct mmc_command *cmd);
#ifdef MT6575_SD_DEBUG #ifdef MT6575_SD_DEBUG
static void msdc_dump_card_status(struct msdc_host *host, u32 status) static void msdc_dump_card_status(struct msdc_host *host, u32 status)
...@@ -561,7 +559,7 @@ static void msdc_eirq_cd(void *data) ...@@ -561,7 +559,7 @@ static void msdc_eirq_cd(void *data)
#if 0 #if 0
static void msdc_tasklet_card(unsigned long arg) static void msdc_tasklet_card(unsigned long arg)
{ {
struct msdc_host *host = (struct msdc_host *)arg; struct msdc_host *host = (struct msdc_host *)arg;
#else #else
static void msdc_tasklet_card(struct work_struct *work) static void msdc_tasklet_card(struct work_struct *work)
{ {
...@@ -657,7 +655,7 @@ static void msdc_set_mclk(struct msdc_host *host, int ddr, unsigned int hz) ...@@ -657,7 +655,7 @@ static void msdc_set_mclk(struct msdc_host *host, int ddr, unsigned int hz)
msdc_irq_save(flags); msdc_irq_save(flags);
#if defined (CONFIG_MT7621_FPGA) || defined (CONFIG_MT7628_FPGA) #if defined(CONFIG_MT7621_FPGA) || defined(CONFIG_MT7628_FPGA)
mode = 0x0; /* use divisor */ mode = 0x0; /* use divisor */
if (hz >= (hclk >> 1)) { if (hz >= (hclk >> 1)) {
div = 0; /* mean div = 1/2 */ div = 0; /* mean div = 1/2 */
...@@ -703,7 +701,7 @@ static void msdc_set_mclk(struct msdc_host *host, int ddr, unsigned int hz) ...@@ -703,7 +701,7 @@ static void msdc_set_mclk(struct msdc_host *host, int ddr, unsigned int hz)
msdc_set_timeout(host, host->timeout_ns, host->timeout_clks); // need? msdc_set_timeout(host, host->timeout_ns, host->timeout_clks); // need?
INIT_MSG("================"); INIT_MSG("================");
INIT_MSG("!!! Set<%dKHz> Source<%dKHz> -> sclk<%dKHz>", hz/1000, hclk/1000, sclk/1000); INIT_MSG("!!! Set<%dKHz> Source<%dKHz> -> sclk<%dKHz>", hz / 1000, hclk / 1000, sclk / 1000);
INIT_MSG("================"); INIT_MSG("================");
msdc_irq_restore(flags); msdc_irq_restore(flags);
...@@ -892,14 +890,14 @@ static void msdc_pm(pm_message_t state, void *data) ...@@ -892,14 +890,14 @@ static void msdc_pm(pm_message_t state, void *data)
host->pm_state = state; /* default PMSG_RESUME */ host->pm_state = state; /* default PMSG_RESUME */
INIT_MSG("%s Suspend", evt == PM_EVENT_SUSPEND ? "PM" : "USR"); INIT_MSG("%s Suspend", evt == PM_EVENT_SUSPEND ? "PM" : "USR");
if(host->hw->flags & MSDC_SYS_SUSPEND) /* set for card */ if (host->hw->flags & MSDC_SYS_SUSPEND) /* set for card */
(void)mmc_suspend_host(host->mmc); (void)mmc_suspend_host(host->mmc);
else { else {
// host->mmc->pm_flags |= MMC_PM_IGNORE_PM_NOTIFY; /* just for double confirm */ /* --- by chhung */ // host->mmc->pm_flags |= MMC_PM_IGNORE_PM_NOTIFY; /* just for double confirm */ /* --- by chhung */
mmc_remove_host(host->mmc); mmc_remove_host(host->mmc);
} }
} else if (evt == PM_EVENT_RESUME || evt == PM_EVENT_USER_RESUME) { } else if (evt == PM_EVENT_RESUME || evt == PM_EVENT_USER_RESUME) {
if (!host->suspend){ if (!host->suspend) {
//ERR_MSG("warning: already resume"); //ERR_MSG("warning: already resume");
return; return;
} }
...@@ -914,7 +912,7 @@ static void msdc_pm(pm_message_t state, void *data) ...@@ -914,7 +912,7 @@ static void msdc_pm(pm_message_t state, void *data)
host->pm_state = state; host->pm_state = state;
INIT_MSG("%s Resume", evt == PM_EVENT_RESUME ? "PM" : "USR"); INIT_MSG("%s Resume", evt == PM_EVENT_RESUME ? "PM" : "USR");
if(host->hw->flags & MSDC_SYS_SUSPEND) { /* will not set for WIFI */ if (host->hw->flags & MSDC_SYS_SUSPEND) { /* will not set for WIFI */
(void)mmc_resume_host(host->mmc); (void)mmc_resume_host(host->mmc);
} }
else { else {
...@@ -1016,7 +1014,7 @@ static unsigned int msdc_command_start(struct msdc_host *host, ...@@ -1016,7 +1014,7 @@ static unsigned int msdc_command_start(struct msdc_host *host,
rawcmd &= ~(0x0FFF << 16); rawcmd &= ~(0x0FFF << 16);
} }
N_MSG(CMD, "CMD<%d><0x%.8x> Arg<0x%.8x>", opcode , rawcmd, cmd->arg); N_MSG(CMD, "CMD<%d><0x%.8x> Arg<0x%.8x>", opcode, rawcmd, cmd->arg);
tmo = jiffies + timeout; tmo = jiffies + timeout;
...@@ -1032,7 +1030,7 @@ static unsigned int msdc_command_start(struct msdc_host *host, ...@@ -1032,7 +1030,7 @@ static unsigned int msdc_command_start(struct msdc_host *host,
goto end; goto end;
} }
} }
}else { } else {
for (;;) { for (;;) {
if (!sdc_is_busy()) if (!sdc_is_busy())
break; break;
...@@ -1078,7 +1076,7 @@ static unsigned int msdc_command_resp(struct msdc_host *host, ...@@ -1078,7 +1076,7 @@ static unsigned int msdc_command_resp(struct msdc_host *host,
//sdr_set_bits(MSDC_INTEN, wints); //sdr_set_bits(MSDC_INTEN, wints);
spin_unlock(&host->lock); spin_unlock(&host->lock);
if(!wait_for_completion_timeout(&host->cmd_done, 10*timeout)){ if (!wait_for_completion_timeout(&host->cmd_done, 10 * timeout)) {
ERR_MSG("XXX CMD<%d> wait_for_completion timeout ARG<0x%.8x>", opcode, cmd->arg); ERR_MSG("XXX CMD<%d> wait_for_completion timeout ARG<0x%.8x>", opcode, cmd->arg);
cmd->error = (unsigned int)-ETIMEDOUT; cmd->error = (unsigned int)-ETIMEDOUT;
msdc_reset(); msdc_reset();
...@@ -1130,7 +1128,7 @@ static unsigned int msdc_command_resp(struct msdc_host *host, ...@@ -1130,7 +1128,7 @@ static unsigned int msdc_command_resp(struct msdc_host *host,
} }
/* memory card CRC */ /* memory card CRC */
if(host->hw->flags & MSDC_REMOVABLE && cmd->error == (unsigned int)(-EIO) ) { if (host->hw->flags & MSDC_REMOVABLE && cmd->error == (unsigned int)(-EIO)) {
if (sdr_read32(SDC_CMD) & 0x1800) { /* check if has data phase */ if (sdr_read32(SDC_CMD) & 0x1800) { /* check if has data phase */
msdc_abort_data(host); msdc_abort_data(host);
} else { } else {
...@@ -1139,7 +1137,7 @@ static unsigned int msdc_command_resp(struct msdc_host *host, ...@@ -1139,7 +1137,7 @@ static unsigned int msdc_command_resp(struct msdc_host *host,
msdc_clr_fifo(); msdc_clr_fifo();
msdc_clr_int(); msdc_clr_int();
} }
cmd->error = msdc_tune_cmdrsp(host,cmd); cmd->error = msdc_tune_cmdrsp(host, cmd);
} }
// check DAT0 // check DAT0
...@@ -1186,7 +1184,7 @@ static int msdc_pio_abort(struct msdc_host *host, struct mmc_data *data, unsigne ...@@ -1186,7 +1184,7 @@ static int msdc_pio_abort(struct msdc_host *host, struct mmc_data *data, unsigne
ret = 1; ret = 1;
} }
if(ret) { if (ret) {
msdc_reset(); msdc_reset();
msdc_clr_fifo(); msdc_clr_fifo();
msdc_clr_int(); msdc_clr_int();
...@@ -1208,7 +1206,7 @@ static int msdc_pio_read(struct msdc_host *host, struct mmc_data *data) ...@@ -1208,7 +1206,7 @@ static int msdc_pio_read(struct msdc_host *host, struct mmc_data *data)
u8 *u8ptr; u8 *u8ptr;
u32 left = 0; u32 left = 0;
u32 count, size = 0; u32 count, size = 0;
u32 wints = MSDC_INTEN_DATTMO | MSDC_INTEN_DATCRCERR ; u32 wints = MSDC_INTEN_DATTMO | MSDC_INTEN_DATCRCERR;
unsigned long tmo = jiffies + DAT_TIMEOUT; unsigned long tmo = jiffies + DAT_TIMEOUT;
sdr_set_bits(MSDC_INTEN, wints); sdr_set_bits(MSDC_INTEN, wints);
...@@ -1229,8 +1227,8 @@ static int msdc_pio_read(struct msdc_host *host, struct mmc_data *data) ...@@ -1229,8 +1227,8 @@ static int msdc_pio_read(struct msdc_host *host, struct mmc_data *data)
} }
u8ptr = (u8 *)ptr; u8ptr = (u8 *)ptr;
while(left) { while (left) {
* u8ptr++ = msdc_fifo_read8(); *u8ptr++ = msdc_fifo_read8();
left--; left--;
} }
} }
...@@ -1247,7 +1245,7 @@ static int msdc_pio_read(struct msdc_host *host, struct mmc_data *data) ...@@ -1247,7 +1245,7 @@ static int msdc_pio_read(struct msdc_host *host, struct mmc_data *data)
N_MSG(FIO, " PIO Read<%d>bytes", size); N_MSG(FIO, " PIO Read<%d>bytes", size);
sdr_clr_bits(MSDC_INTEN, wints); sdr_clr_bits(MSDC_INTEN, wints);
if(data->error) ERR_MSG("read pio data->error<%d> left<%d> size<%d>", data->error, left, size); if (data->error) ERR_MSG("read pio data->error<%d> left<%d> size<%d>", data->error, left, size);
return data->error; return data->error;
} }
...@@ -1264,7 +1262,7 @@ static int msdc_pio_write(struct msdc_host* host, struct mmc_data *data) ...@@ -1264,7 +1262,7 @@ static int msdc_pio_write(struct msdc_host* host, struct mmc_data *data)
u8 *u8ptr; u8 *u8ptr;
u32 left; u32 left;
u32 count, size = 0; u32 count, size = 0;
u32 wints = MSDC_INTEN_DATTMO | MSDC_INTEN_DATCRCERR ; u32 wints = MSDC_INTEN_DATTMO | MSDC_INTEN_DATCRCERR;
unsigned long tmo = jiffies + DAT_TIMEOUT; unsigned long tmo = jiffies + DAT_TIMEOUT;
sdr_set_bits(MSDC_INTEN, wints); sdr_set_bits(MSDC_INTEN, wints);
...@@ -1286,7 +1284,7 @@ static int msdc_pio_write(struct msdc_host* host, struct mmc_data *data) ...@@ -1286,7 +1284,7 @@ static int msdc_pio_write(struct msdc_host* host, struct mmc_data *data)
} }
u8ptr = (u8*)ptr; u8ptr = (u8*)ptr;
while(left){ while (left) {
msdc_fifo_write8(*u8ptr); u8ptr++; msdc_fifo_write8(*u8ptr); u8ptr++;
left--; left--;
} }
...@@ -1302,7 +1300,7 @@ static int msdc_pio_write(struct msdc_host* host, struct mmc_data *data) ...@@ -1302,7 +1300,7 @@ static int msdc_pio_write(struct msdc_host* host, struct mmc_data *data)
end: end:
data->bytes_xfered += size; data->bytes_xfered += size;
N_MSG(FIO, " PIO Write<%d>bytes", size); N_MSG(FIO, " PIO Write<%d>bytes", size);
if(data->error) ERR_MSG("write pio data->error<%d>", data->error); if (data->error) ERR_MSG("write pio data->error<%d>", data->error);
sdr_clr_bits(MSDC_INTEN, wints); sdr_clr_bits(MSDC_INTEN, wints);
return data->error; return data->error;
...@@ -1323,7 +1321,7 @@ static void msdc_dma_resume(struct msdc_host *host) ...@@ -1323,7 +1321,7 @@ static void msdc_dma_resume(struct msdc_host *host)
static void msdc_dma_start(struct msdc_host *host) static void msdc_dma_start(struct msdc_host *host)
{ {
u32 base = host->base; u32 base = host->base;
u32 wints = MSDC_INTEN_XFER_COMPL | MSDC_INTEN_DATTMO | MSDC_INTEN_DATCRCERR ; u32 wints = MSDC_INTEN_XFER_COMPL | MSDC_INTEN_DATTMO | MSDC_INTEN_DATCRCERR;
sdr_set_bits(MSDC_INTEN, wints); sdr_set_bits(MSDC_INTEN, wints);
//dsb(); /* --- by chhung */ //dsb(); /* --- by chhung */
...@@ -1336,9 +1334,9 @@ static void msdc_dma_stop(struct msdc_host *host) ...@@ -1336,9 +1334,9 @@ static void msdc_dma_stop(struct msdc_host *host)
{ {
u32 base = host->base; u32 base = host->base;
//u32 retries=500; //u32 retries=500;
u32 wints = MSDC_INTEN_XFER_COMPL | MSDC_INTEN_DATTMO | MSDC_INTEN_DATCRCERR ; u32 wints = MSDC_INTEN_XFER_COMPL | MSDC_INTEN_DATTMO | MSDC_INTEN_DATCRCERR;
N_MSG(DMA, "DMA status: 0x%.8x",sdr_read32(MSDC_DMA_CFG)); N_MSG(DMA, "DMA status: 0x%.8x", sdr_read32(MSDC_DMA_CFG));
//while (sdr_read32(MSDC_DMA_CFG) & MSDC_DMA_CFG_STS); //while (sdr_read32(MSDC_DMA_CFG) & MSDC_DMA_CFG_STS);
sdr_set_field(MSDC_DMA_CTRL, MSDC_DMA_CTRL_STOP, 1); sdr_set_field(MSDC_DMA_CTRL, MSDC_DMA_CTRL_STOP, 1);
...@@ -1368,13 +1366,13 @@ static void msdc_dma_dump(struct msdc_host *host, struct msdc_dma *dma) ...@@ -1368,13 +1366,13 @@ static void msdc_dma_dump(struct msdc_host *host, struct msdc_dma *dma)
/* dump gpd */ /* dump gpd */
ERR_MSG(".gpd<0x%.8x> gpd_phy<0x%.8x>", (int)gpd, (int)dma->gpd_addr); ERR_MSG(".gpd<0x%.8x> gpd_phy<0x%.8x>", (int)gpd, (int)dma->gpd_addr);
ERR_MSG("...hwo <%d>", gpd->hwo ); ERR_MSG("...hwo <%d>", gpd->hwo);
ERR_MSG("...bdp <%d>", gpd->bdp ); ERR_MSG("...bdp <%d>", gpd->bdp);
ERR_MSG("...chksum<0x%.8x>", gpd->chksum ); ERR_MSG("...chksum<0x%.8x>", gpd->chksum);
//ERR_MSG("...intr <0x%.8x>", gpd->intr ); //ERR_MSG("...intr <0x%.8x>", gpd->intr );
ERR_MSG("...next <0x%.8x>", (int)gpd->next ); ERR_MSG("...next <0x%.8x>", (int)gpd->next);
ERR_MSG("...ptr <0x%.8x>", (int)gpd->ptr ); ERR_MSG("...ptr <0x%.8x>", (int)gpd->ptr);
ERR_MSG("...buflen<0x%.8x>", gpd->buflen ); ERR_MSG("...buflen<0x%.8x>", gpd->buflen);
//ERR_MSG("...extlen<0x%.8x>", gpd->extlen ); //ERR_MSG("...extlen<0x%.8x>", gpd->extlen );
//ERR_MSG("...arg <0x%.8x>", gpd->arg ); //ERR_MSG("...arg <0x%.8x>", gpd->arg );
//ERR_MSG("...blknum<0x%.8x>", gpd->blknum ); //ERR_MSG("...blknum<0x%.8x>", gpd->blknum );
...@@ -1386,13 +1384,13 @@ static void msdc_dma_dump(struct msdc_host *host, struct msdc_dma *dma) ...@@ -1386,13 +1384,13 @@ static void msdc_dma_dump(struct msdc_host *host, struct msdc_dma *dma)
p_to_v = ((u32)bd - (u32)dma->bd_addr); p_to_v = ((u32)bd - (u32)dma->bd_addr);
while (1) { while (1) {
ERR_MSG(".bd[%d]", i); i++; ERR_MSG(".bd[%d]", i); i++;
ERR_MSG("...eol <%d>", ptr->eol ); ERR_MSG("...eol <%d>", ptr->eol);
ERR_MSG("...chksum<0x%.8x>", ptr->chksum ); ERR_MSG("...chksum<0x%.8x>", ptr->chksum);
//ERR_MSG("...blkpad<0x%.8x>", ptr->blkpad ); //ERR_MSG("...blkpad<0x%.8x>", ptr->blkpad );
//ERR_MSG("...dwpad <0x%.8x>", ptr->dwpad ); //ERR_MSG("...dwpad <0x%.8x>", ptr->dwpad );
ERR_MSG("...next <0x%.8x>", (int)ptr->next ); ERR_MSG("...next <0x%.8x>", (int)ptr->next);
ERR_MSG("...ptr <0x%.8x>", (int)ptr->ptr ); ERR_MSG("...ptr <0x%.8x>", (int)ptr->ptr);
ERR_MSG("...buflen<0x%.8x>", (int)ptr->buflen ); ERR_MSG("...buflen<0x%.8x>", (int)ptr->buflen);
if (ptr->eol == 1) { if (ptr->eol == 1) {
break; break;
...@@ -1413,6 +1411,7 @@ static void msdc_dma_dump(struct msdc_host *host, struct msdc_dma *dma) ...@@ -1413,6 +1411,7 @@ static void msdc_dma_dump(struct msdc_host *host, struct msdc_dma *dma)
static u8 msdc_dma_calcs(u8 *buf, u32 len) static u8 msdc_dma_calcs(u8 *buf, u32 len)
{ {
u32 i, sum = 0; u32 i, sum = 0;
for (i = 0; i < len; i++) { for (i = 0; i < len; i++) {
sum += buf[i]; sum += buf[i];
} }
...@@ -1442,7 +1441,7 @@ static int msdc_dma_config(struct msdc_host *host, struct msdc_dma *dma) ...@@ -1442,7 +1441,7 @@ static int msdc_dma_config(struct msdc_host *host, struct msdc_dma *dma)
sdr_set_field(MSDC_DMA_CTRL, MSDC_DMA_CTRL_XFERSZ, sg_dma_len(sg)); sdr_set_field(MSDC_DMA_CTRL, MSDC_DMA_CTRL_XFERSZ, sg_dma_len(sg));
//#elif defined (CONFIG_RALINK_MT7621) || defined (CONFIG_RALINK_MT7628) //#elif defined (CONFIG_RALINK_MT7621) || defined (CONFIG_RALINK_MT7628)
else else
sdr_write32((volatile u32*)(RALINK_MSDC_BASE+0xa8), sg_dma_len(sg)); sdr_write32((volatile u32*)(RALINK_MSDC_BASE + 0xa8), sg_dma_len(sg));
//#endif //#endif
sdr_set_field(MSDC_DMA_CTRL, MSDC_DMA_CTRL_BRUSTSZ, dma->burstsz); sdr_set_field(MSDC_DMA_CTRL, MSDC_DMA_CTRL_BRUSTSZ, dma->burstsz);
sdr_set_field(MSDC_DMA_CTRL, MSDC_DMA_CTRL_MODE, 0); sdr_set_field(MSDC_DMA_CTRL, MSDC_DMA_CTRL_MODE, 0);
...@@ -1454,7 +1453,7 @@ static int msdc_dma_config(struct msdc_host *host, struct msdc_dma *dma) ...@@ -1454,7 +1453,7 @@ static int msdc_dma_config(struct msdc_host *host, struct msdc_dma *dma)
/* calculate the required number of gpd */ /* calculate the required number of gpd */
num = (sglen + MAX_BD_PER_GPD - 1) / MAX_BD_PER_GPD; num = (sglen + MAX_BD_PER_GPD - 1) / MAX_BD_PER_GPD;
BUG_ON(num !=1 ); BUG_ON(num != 1);
gpd = dma->gpd; gpd = dma->gpd;
bd = dma->bd; bd = dma->bd;
...@@ -1470,7 +1469,7 @@ static int msdc_dma_config(struct msdc_host *host, struct msdc_dma *dma) ...@@ -1470,7 +1469,7 @@ static int msdc_dma_config(struct msdc_host *host, struct msdc_dma *dma)
/* modify bd*/ /* modify bd*/
for (j = 0; j < bdlen; j++) { for (j = 0; j < bdlen; j++) {
msdc_init_bd(&bd[j], blkpad, dwpad, sg_dma_address(sg), sg_dma_len(sg)); msdc_init_bd(&bd[j], blkpad, dwpad, sg_dma_address(sg), sg_dma_len(sg));
if(j == bdlen - 1) { if (j == bdlen - 1) {
bd[j].eol = 1; /* the last bd */ bd[j].eol = 1; /* the last bd */
} else { } else {
bd[j].eol = 0; bd[j].eol = 0;
...@@ -1542,8 +1541,8 @@ static int msdc_do_request(struct mmc_host*mmc, struct mmc_request*mrq) ...@@ -1542,8 +1541,8 @@ static int msdc_do_request(struct mmc_host*mmc, struct mmc_request*mrq)
struct mmc_data *data; struct mmc_data *data;
u32 base = host->base; u32 base = host->base;
//u32 intsts = 0; //u32 intsts = 0;
unsigned int left=0; unsigned int left = 0;
int dma = 0, read = 1, dir = DMA_FROM_DEVICE, send_type=0; int dma = 0, read = 1, dir = DMA_FROM_DEVICE, send_type = 0;
#define SND_DAT 0 #define SND_DAT 0
#define SND_CMD 1 #define SND_CMD 1
...@@ -1565,13 +1564,13 @@ static int msdc_do_request(struct mmc_host*mmc, struct mmc_request*mrq) ...@@ -1565,13 +1564,13 @@ static int msdc_do_request(struct mmc_host*mmc, struct mmc_request*mrq)
#endif /* end of --- */ #endif /* end of --- */
if (!data) { if (!data) {
send_type=SND_CMD; send_type = SND_CMD;
if (msdc_do_command(host, cmd, 1, CMD_TIMEOUT) != 0) { if (msdc_do_command(host, cmd, 1, CMD_TIMEOUT) != 0) {
goto done; goto done;
} }
} else { } else {
BUG_ON(data->blksz > HOST_MAX_BLKSZ); BUG_ON(data->blksz > HOST_MAX_BLKSZ);
send_type=SND_DAT; send_type = SND_DAT;
data->error = 0; data->error = 0;
read = data->flags & MMC_DATA_READ ? 1 : 0; read = data->flags & MMC_DATA_READ ? 1 : 0;
...@@ -1620,7 +1619,7 @@ static int msdc_do_request(struct mmc_host*mmc, struct mmc_request*mrq) ...@@ -1620,7 +1619,7 @@ static int msdc_do_request(struct mmc_host*mmc, struct mmc_request*mrq)
msdc_dma_start(host); msdc_dma_start(host);
spin_unlock(&host->lock); spin_unlock(&host->lock);
if(!wait_for_completion_timeout(&host->xfer_done, DAT_TIMEOUT)){ if (!wait_for_completion_timeout(&host->xfer_done, DAT_TIMEOUT)) {
ERR_MSG("XXX CMD<%d> wait xfer_done<%d> timeout!!", cmd->opcode, data->blocks * data->blksz); ERR_MSG("XXX CMD<%d> wait xfer_done<%d> timeout!!", cmd->opcode, data->blocks * data->blksz);
ERR_MSG(" DMA_SA = 0x%x", sdr_read32(MSDC_DMA_SA)); ERR_MSG(" DMA_SA = 0x%x", sdr_read32(MSDC_DMA_SA));
ERR_MSG(" DMA_CA = 0x%x", sdr_read32(MSDC_DMA_CA)); ERR_MSG(" DMA_CA = 0x%x", sdr_read32(MSDC_DMA_CA));
...@@ -1642,7 +1641,7 @@ static int msdc_do_request(struct mmc_host*mmc, struct mmc_request*mrq) ...@@ -1642,7 +1641,7 @@ static int msdc_do_request(struct mmc_host*mmc, struct mmc_request*mrq)
/* Secondly: pio data phase */ /* Secondly: pio data phase */
if (read) { if (read) {
if (msdc_pio_read(host, data)){ if (msdc_pio_read(host, data)) {
goto done; goto done;
} }
} else { } else {
...@@ -1654,7 +1653,7 @@ static int msdc_do_request(struct mmc_host*mmc, struct mmc_request*mrq) ...@@ -1654,7 +1653,7 @@ static int msdc_do_request(struct mmc_host*mmc, struct mmc_request*mrq)
/* For write case: make sure contents in fifo flushed to device */ /* For write case: make sure contents in fifo flushed to device */
if (!read) { if (!read) {
while (1) { while (1) {
left=msdc_txfifocnt(); left = msdc_txfifocnt();
if (left == 0) { if (left == 0) {
break; break;
} }
...@@ -1679,7 +1678,7 @@ static int msdc_do_request(struct mmc_host*mmc, struct mmc_request*mrq) ...@@ -1679,7 +1678,7 @@ static int msdc_do_request(struct mmc_host*mmc, struct mmc_request*mrq)
} // PIO mode } // PIO mode
/* Last: stop transfer */ /* Last: stop transfer */
if (data->stop){ if (data->stop) {
if (msdc_do_command(host, data->stop, 0, CMD_TIMEOUT) != 0) { if (msdc_do_command(host, data->stop, 0, CMD_TIMEOUT) != 0) {
goto done; goto done;
} }
...@@ -1699,32 +1698,32 @@ static int msdc_do_request(struct mmc_host*mmc, struct mmc_request*mrq) ...@@ -1699,32 +1698,32 @@ static int msdc_do_request(struct mmc_host*mmc, struct mmc_request*mrq)
host->blksz = 0; host->blksz = 0;
#if 0 // don't stop twice! #if 0 // don't stop twice!
if(host->hw->flags & MSDC_REMOVABLE && data->error) { if (host->hw->flags & MSDC_REMOVABLE && data->error) {
msdc_abort_data(host); msdc_abort_data(host);
/* reset in IRQ, stop command has issued. -> No need */ /* reset in IRQ, stop command has issued. -> No need */
} }
#endif #endif
N_MSG(OPS, "CMD<%d> data<%s %s> blksz<%d> block<%d> error<%d>",cmd->opcode, (dma? "dma":"pio"), N_MSG(OPS, "CMD<%d> data<%s %s> blksz<%d> block<%d> error<%d>", cmd->opcode, (dma ? "dma" : "pio"),
(read ? "read ":"write") ,data->blksz, data->blocks, data->error); (read ? "read " : "write"), data->blksz, data->blocks, data->error);
} }
#if 0 /* --- by chhung */ #if 0 /* --- by chhung */
#if 1 #if 1
//if(host->id==1) { //if(host->id==1) {
if(send_type==SND_CMD) { if (send_type == SND_CMD) {
if(cmd->opcode == MMC_SEND_STATUS) { if (cmd->opcode == MMC_SEND_STATUS) {
if((cmd->resp[0] & CARD_READY_FOR_DATA) ||(CARD_CURRENT_STATE(cmd->resp[0]) != 7)){ if ((cmd->resp[0] & CARD_READY_FOR_DATA) || (CARD_CURRENT_STATE(cmd->resp[0]) != 7)) {
N_MSG(OPS,"disable clock, CMD13 IDLE"); N_MSG(OPS, "disable clock, CMD13 IDLE");
msdc_gate_clock(host->id); msdc_gate_clock(host->id);
} }
} else { } else {
N_MSG(OPS,"disable clock, CMD<%d>", cmd->opcode); N_MSG(OPS, "disable clock, CMD<%d>", cmd->opcode);
msdc_gate_clock(host->id); msdc_gate_clock(host->id);
} }
} else { } else {
if(read) { if (read) {
N_MSG(OPS,"disable clock!!! Read CMD<%d>",cmd->opcode); N_MSG(OPS, "disable clock!!! Read CMD<%d>", cmd->opcode);
msdc_gate_clock(host->id); msdc_gate_clock(host->id);
} }
} }
...@@ -1823,7 +1822,7 @@ static int msdc_tune_cmdrsp(struct msdc_host*host, struct mmc_command *cmd) ...@@ -1823,7 +1822,7 @@ static int msdc_tune_cmdrsp(struct msdc_host*host, struct mmc_command *cmd)
/* Lv2: PAD_CMD_RESP_RXDLY[26:22] */ /* Lv2: PAD_CMD_RESP_RXDLY[26:22] */
cur_rrdly = (orig_rrdly + rrdly + 1) % 32; cur_rrdly = (orig_rrdly + rrdly + 1) % 32;
sdr_set_field(MSDC_PAD_TUNE, MSDC_PAD_TUNE_CMDRRDLY, cur_rrdly); sdr_set_field(MSDC_PAD_TUNE, MSDC_PAD_TUNE_CMDRRDLY, cur_rrdly);
}while (++rrdly < 32); } while (++rrdly < 32);
return result; return result;
} }
...@@ -1833,8 +1832,8 @@ static int msdc_tune_bread(struct mmc_host *mmc, struct mmc_request *mrq) ...@@ -1833,8 +1832,8 @@ static int msdc_tune_bread(struct mmc_host *mmc, struct mmc_request *mrq)
{ {
struct msdc_host *host = mmc_priv(mmc); struct msdc_host *host = mmc_priv(mmc);
u32 base = host->base; u32 base = host->base;
u32 ddr=0; u32 ddr = 0;
u32 dcrc=0; u32 dcrc = 0;
u32 rxdly, cur_rxdly0, cur_rxdly1; u32 rxdly, cur_rxdly0, cur_rxdly1;
u32 dsmpl, cur_dsmpl, orig_dsmpl; u32 dsmpl, cur_dsmpl, orig_dsmpl;
u32 cur_dat0, cur_dat1, cur_dat2, cur_dat3; u32 cur_dat0, cur_dat1, cur_dat2, cur_dat3;
...@@ -1866,9 +1865,9 @@ static int msdc_tune_bread(struct mmc_host *mmc, struct mmc_request *mrq) ...@@ -1866,9 +1865,9 @@ static int msdc_tune_bread(struct mmc_host *mmc, struct mmc_request *mrq)
continue; continue;
} }
} }
result = msdc_do_request(mmc,mrq); result = msdc_do_request(mmc, mrq);
sdr_get_field(SDC_DCRC_STS, SDC_DCRC_STS_POS|SDC_DCRC_STS_NEG, dcrc); /* RO */ sdr_get_field(SDC_DCRC_STS, SDC_DCRC_STS_POS | SDC_DCRC_STS_NEG, dcrc); /* RO */
if (!ddr) dcrc &= ~SDC_DCRC_STS_NEG; if (!ddr) dcrc &= ~SDC_DCRC_STS_NEG;
ERR_MSG("TUNE_BREAD<%s> dcrc<0x%x> DATRDDLY0/1<0x%x><0x%x> dsmpl<0x%x>", ERR_MSG("TUNE_BREAD<%s> dcrc<0x%x> DATRDDLY0/1<0x%x><0x%x> dsmpl<0x%x>",
(result == 0 && dcrc == 0) ? "PASS" : "FAIL", dcrc, (result == 0 && dcrc == 0) ? "PASS" : "FAIL", dcrc,
...@@ -1939,7 +1938,7 @@ static int msdc_tune_bread(struct mmc_host *mmc, struct mmc_request *mrq) ...@@ -1939,7 +1938,7 @@ static int msdc_tune_bread(struct mmc_host *mmc, struct mmc_request *mrq)
return result; return result;
} }
static int msdc_tune_bwrite(struct mmc_host *mmc,struct mmc_request *mrq) static int msdc_tune_bwrite(struct mmc_host *mmc, struct mmc_request *mrq)
{ {
struct msdc_host *host = mmc_priv(mmc); struct msdc_host *host = mmc_priv(mmc);
u32 base = host->base; u32 base = host->base;
...@@ -1955,7 +1954,7 @@ static int msdc_tune_bwrite(struct mmc_host *mmc,struct mmc_request *mrq) ...@@ -1955,7 +1954,7 @@ static int msdc_tune_bwrite(struct mmc_host *mmc,struct mmc_request *mrq)
// MSDC_IOCON_DDR50CKD need to check. [Fix me] // MSDC_IOCON_DDR50CKD need to check. [Fix me]
sdr_get_field(MSDC_PAD_TUNE, MSDC_PAD_TUNE_DATWRDLY, orig_wrrdly); sdr_get_field(MSDC_PAD_TUNE, MSDC_PAD_TUNE_DATWRDLY, orig_wrrdly);
sdr_get_field(MSDC_IOCON, MSDC_IOCON_DSPL, orig_dsmpl ); sdr_get_field(MSDC_IOCON, MSDC_IOCON_DSPL, orig_dsmpl);
/* Tune Method 2. just DAT0 */ /* Tune Method 2. just DAT0 */
sdr_set_field(MSDC_IOCON, MSDC_IOCON_DDLSEL, 1); sdr_set_field(MSDC_IOCON, MSDC_IOCON_DDLSEL, 1);
...@@ -1993,7 +1992,7 @@ static int msdc_tune_bwrite(struct mmc_host *mmc,struct mmc_request *mrq) ...@@ -1993,7 +1992,7 @@ static int msdc_tune_bwrite(struct mmc_host *mmc,struct mmc_request *mrq)
continue; continue;
} }
} }
result = msdc_do_request(mmc,mrq); result = msdc_do_request(mmc, mrq);
ERR_MSG("TUNE_BWRITE<%s> DSPL<%d> DATWRDLY<%d> MSDC_DAT_RDDLY0<0x%x>", ERR_MSG("TUNE_BWRITE<%s> DSPL<%d> DATWRDLY<%d> MSDC_DAT_RDDLY0<0x%x>",
result == 0 ? "PASS" : "FAIL", result == 0 ? "PASS" : "FAIL",
...@@ -2079,7 +2078,7 @@ static int msdc_tune_request(struct mmc_host *mmc, struct mmc_request *mrq) ...@@ -2079,7 +2078,7 @@ static int msdc_tune_request(struct mmc_host *mmc, struct mmc_request *mrq)
struct mmc_command *cmd; struct mmc_command *cmd;
struct mmc_data *data; struct mmc_data *data;
//u32 base = host->base; //u32 base = host->base;
int ret=0, read; int ret = 0, read;
cmd = mrq->cmd; cmd = mrq->cmd;
data = mrq->cmd->data; data = mrq->cmd->data;
...@@ -2088,24 +2087,24 @@ static int msdc_tune_request(struct mmc_host *mmc, struct mmc_request *mrq) ...@@ -2088,24 +2087,24 @@ static int msdc_tune_request(struct mmc_host *mmc, struct mmc_request *mrq)
if (read) { if (read) {
if (data->error == (unsigned int)(-EIO)) { if (data->error == (unsigned int)(-EIO)) {
ret = msdc_tune_bread(mmc,mrq); ret = msdc_tune_bread(mmc, mrq);
} }
} else { } else {
ret = msdc_check_busy(mmc, host); ret = msdc_check_busy(mmc, host);
if (ret){ if (ret) {
ERR_MSG("XXX cmd13 wait program done failed"); ERR_MSG("XXX cmd13 wait program done failed");
return ret; return ret;
} }
/* CRC and TO */ /* CRC and TO */
/* Fix me: don't care card status? */ /* Fix me: don't care card status? */
ret = msdc_tune_bwrite(mmc,mrq); ret = msdc_tune_bwrite(mmc, mrq);
} }
return ret; return ret;
} }
/* ops.request */ /* ops.request */
static void msdc_ops_request(struct mmc_host *mmc,struct mmc_request *mrq) static void msdc_ops_request(struct mmc_host *mmc, struct mmc_request *mrq)
{ {
struct msdc_host *host = mmc_priv(mmc); struct msdc_host *host = mmc_priv(mmc);
...@@ -2115,7 +2114,7 @@ static void msdc_ops_request(struct mmc_host *mmc,struct mmc_request *mrq) ...@@ -2115,7 +2114,7 @@ static void msdc_ops_request(struct mmc_host *mmc,struct mmc_request *mrq)
u32 ticks = 0, opcode = 0, sizes = 0, bRx = 0; u32 ticks = 0, opcode = 0, sizes = 0, bRx = 0;
#endif /* end of --- */ #endif /* end of --- */
if(host->mrq){ if (host->mrq) {
ERR_MSG("XXX host->mrq<0x%.8x>", (int)host->mrq); ERR_MSG("XXX host->mrq<0x%.8x>", (int)host->mrq);
BUG(); BUG();
} }
...@@ -2146,9 +2145,9 @@ static void msdc_ops_request(struct mmc_host *mmc,struct mmc_request *mrq) ...@@ -2146,9 +2145,9 @@ static void msdc_ops_request(struct mmc_host *mmc,struct mmc_request *mrq)
host->mrq = mrq; host->mrq = mrq;
if (msdc_do_request(mmc,mrq)) { if (msdc_do_request(mmc, mrq)) {
if(host->hw->flags & MSDC_REMOVABLE && ralink_soc == MT762X_SOC_MT7621AT && mrq->data && mrq->data->error) { if (host->hw->flags & MSDC_REMOVABLE && ralink_soc == MT762X_SOC_MT7621AT && mrq->data && mrq->data->error) {
msdc_tune_request(mmc,mrq); msdc_tune_request(mmc, mrq);
} }
} }
...@@ -2173,7 +2172,7 @@ static void msdc_ops_request(struct mmc_host *mmc,struct mmc_request *mrq) ...@@ -2173,7 +2172,7 @@ static void msdc_ops_request(struct mmc_host *mmc,struct mmc_request *mrq)
opcode = mrq->cmd->opcode; opcode = mrq->cmd->opcode;
if (mrq->cmd->data) { if (mrq->cmd->data) {
sizes = mrq->cmd->data->blocks * mrq->cmd->data->blksz; sizes = mrq->cmd->data->blocks * mrq->cmd->data->blksz;
bRx = mrq->cmd->data->flags & MMC_DATA_READ ? 1 : 0 ; bRx = mrq->cmd->data->flags & MMC_DATA_READ ? 1 : 0;
} else { } else {
bRx = mrq->cmd->arg & 0x80000000 ? 1 : 0; bRx = mrq->cmd->arg & 0x80000000 ? 1 : 0;
} }
...@@ -2222,7 +2221,7 @@ static void msdc_set_buswidth(struct msdc_host *host, u32 width) ...@@ -2222,7 +2221,7 @@ static void msdc_set_buswidth(struct msdc_host *host, u32 width)
static void msdc_ops_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) static void msdc_ops_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
{ {
struct msdc_host *host = mmc_priv(mmc); struct msdc_host *host = mmc_priv(mmc);
struct msdc_hw *hw=host->hw; struct msdc_hw *hw = host->hw;
u32 base = host->base; u32 base = host->base;
u32 ddr = 0; u32 ddr = 0;
...@@ -2266,7 +2265,7 @@ static void msdc_ops_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) ...@@ -2266,7 +2265,7 @@ static void msdc_ops_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
/* Clock control */ /* Clock control */
if (host->mclk != ios->clock) { if (host->mclk != ios->clock) {
if(ios->clock > 25000000) { if (ios->clock > 25000000) {
//if (!(host->hw->flags & MSDC_REMOVABLE)) { //if (!(host->hw->flags & MSDC_REMOVABLE)) {
INIT_MSG("SD data latch edge<%d>", hw->data_edge); INIT_MSG("SD data latch edge<%d>", hw->data_edge);
sdr_set_field(MSDC_IOCON, MSDC_IOCON_RSPL, hw->cmd_edge); sdr_set_field(MSDC_IOCON, MSDC_IOCON_RSPL, hw->cmd_edge);
...@@ -2391,7 +2390,7 @@ static irqreturn_t msdc_irq(int irq, void *dev_id) ...@@ -2391,7 +2390,7 @@ static irqreturn_t msdc_irq(int irq, void *dev_id)
u32 cmdsts = MSDC_INT_RSPCRCERR | MSDC_INT_CMDTMO | MSDC_INT_CMDRDY | u32 cmdsts = MSDC_INT_RSPCRCERR | MSDC_INT_CMDTMO | MSDC_INT_CMDRDY |
MSDC_INT_ACMDCRCERR | MSDC_INT_ACMDTMO | MSDC_INT_ACMDRDY | MSDC_INT_ACMDCRCERR | MSDC_INT_ACMDTMO | MSDC_INT_ACMDRDY |
MSDC_INT_ACMD19_DONE; MSDC_INT_ACMD19_DONE;
u32 datsts = MSDC_INT_DATCRCERR |MSDC_INT_DATTMO; u32 datsts = MSDC_INT_DATCRCERR | MSDC_INT_DATTMO;
u32 intsts = sdr_read32(MSDC_INT); u32 intsts = sdr_read32(MSDC_INT);
u32 inten = sdr_read32(MSDC_INTEN); inten &= intsts; u32 inten = sdr_read32(MSDC_INTEN); inten &= intsts;
...@@ -2400,7 +2399,7 @@ static irqreturn_t msdc_irq(int irq, void *dev_id) ...@@ -2400,7 +2399,7 @@ static irqreturn_t msdc_irq(int irq, void *dev_id)
/* MSG will cause fatal error */ /* MSG will cause fatal error */
/* card change interrupt */ /* card change interrupt */
if (intsts & MSDC_INT_CDSC){ if (intsts & MSDC_INT_CDSC) {
if (mtk_sw_poll) if (mtk_sw_poll)
return IRQ_HANDLED; return IRQ_HANDLED;
IRQ_MSG("MSDC_INT_CDSC irq<0x%.8x>", intsts); IRQ_MSG("MSDC_INT_CDSC irq<0x%.8x>", intsts);
...@@ -2413,7 +2412,7 @@ static irqreturn_t msdc_irq(int irq, void *dev_id) ...@@ -2413,7 +2412,7 @@ static irqreturn_t msdc_irq(int irq, void *dev_id)
} }
/* sdio interrupt */ /* sdio interrupt */
if (intsts & MSDC_INT_SDIOIRQ){ if (intsts & MSDC_INT_SDIOIRQ) {
IRQ_MSG("XXX MSDC_INT_SDIOIRQ"); /* seems not sdio irq */ IRQ_MSG("XXX MSDC_INT_SDIOIRQ"); /* seems not sdio irq */
//mmc_signal_sdio_irq(host->mmc); //mmc_signal_sdio_irq(host->mmc);
} }
...@@ -2432,11 +2431,11 @@ static irqreturn_t msdc_irq(int irq, void *dev_id) ...@@ -2432,11 +2431,11 @@ static irqreturn_t msdc_irq(int irq, void *dev_id)
msdc_clr_int(); msdc_clr_int();
atomic_set(&host->abort, 1); /* For PIO mode exit */ atomic_set(&host->abort, 1); /* For PIO mode exit */
if (intsts & MSDC_INT_DATTMO){ if (intsts & MSDC_INT_DATTMO) {
IRQ_MSG("XXX CMD<%d> MSDC_INT_DATTMO", host->mrq->cmd->opcode); IRQ_MSG("XXX CMD<%d> MSDC_INT_DATTMO", host->mrq->cmd->opcode);
data->error = (unsigned int)-ETIMEDOUT; data->error = (unsigned int)-ETIMEDOUT;
} }
else if (intsts & MSDC_INT_DATCRCERR){ else if (intsts & MSDC_INT_DATCRCERR) {
IRQ_MSG("XXX CMD<%d> MSDC_INT_DATCRCERR, SDC_DCRC_STS<0x%x>", host->mrq->cmd->opcode, sdr_read32(SDC_DCRC_STS)); IRQ_MSG("XXX CMD<%d> MSDC_INT_DATCRCERR, SDC_DCRC_STS<0x%x>", host->mrq->cmd->opcode, sdr_read32(SDC_DCRC_STS));
data->error = (unsigned int)-EIO; data->error = (unsigned int)-EIO;
} }
...@@ -2470,19 +2469,19 @@ static irqreturn_t msdc_irq(int irq, void *dev_id) ...@@ -2470,19 +2469,19 @@ static irqreturn_t msdc_irq(int irq, void *dev_id)
break; break;
} }
} else if ((intsts & MSDC_INT_RSPCRCERR) || (intsts & MSDC_INT_ACMDCRCERR)) { } else if ((intsts & MSDC_INT_RSPCRCERR) || (intsts & MSDC_INT_ACMDCRCERR)) {
if(intsts & MSDC_INT_ACMDCRCERR){ if (intsts & MSDC_INT_ACMDCRCERR) {
IRQ_MSG("XXX CMD<%d> MSDC_INT_ACMDCRCERR",cmd->opcode); IRQ_MSG("XXX CMD<%d> MSDC_INT_ACMDCRCERR", cmd->opcode);
} }
else { else {
IRQ_MSG("XXX CMD<%d> MSDC_INT_RSPCRCERR",cmd->opcode); IRQ_MSG("XXX CMD<%d> MSDC_INT_RSPCRCERR", cmd->opcode);
} }
cmd->error = (unsigned int)-EIO; cmd->error = (unsigned int)-EIO;
} else if ((intsts & MSDC_INT_CMDTMO) || (intsts & MSDC_INT_ACMDTMO)) { } else if ((intsts & MSDC_INT_CMDTMO) || (intsts & MSDC_INT_ACMDTMO)) {
if(intsts & MSDC_INT_ACMDTMO){ if (intsts & MSDC_INT_ACMDTMO) {
IRQ_MSG("XXX CMD<%d> MSDC_INT_ACMDTMO",cmd->opcode); IRQ_MSG("XXX CMD<%d> MSDC_INT_ACMDTMO", cmd->opcode);
} }
else { else {
IRQ_MSG("XXX CMD<%d> MSDC_INT_CMDTMO",cmd->opcode); IRQ_MSG("XXX CMD<%d> MSDC_INT_CMDTMO", cmd->opcode);
} }
cmd->error = (unsigned int)-ETIMEDOUT; cmd->error = (unsigned int)-ETIMEDOUT;
msdc_reset(); msdc_reset();
...@@ -2734,7 +2733,7 @@ static void msdc_init_gpd_bd(struct msdc_host *host, struct msdc_dma *dma) ...@@ -2734,7 +2733,7 @@ static void msdc_init_gpd_bd(struct msdc_host *host, struct msdc_dma *dma)
while (ptr != bd) { while (ptr != bd) {
prev = ptr - 1; prev = ptr - 1;
prev->next = (void *)(dma->bd_addr + sizeof(bd_t) *(ptr - bd)); prev->next = (void *)(dma->bd_addr + sizeof(bd_t) * (ptr - bd));
ptr = prev; ptr = prev;
} }
} }
...@@ -2794,7 +2793,7 @@ static int msdc_drv_probe(struct platform_device *pdev) ...@@ -2794,7 +2793,7 @@ static int msdc_drv_probe(struct platform_device *pdev)
mmc->caps |= MMC_CAP_NEEDS_POLL; mmc->caps |= MMC_CAP_NEEDS_POLL;
/* MMC core transfer sizes tunable parameters */ /* MMC core transfer sizes tunable parameters */
#if LINUX_VERSION_CODE > KERNEL_VERSION(3,10,0) #if LINUX_VERSION_CODE > KERNEL_VERSION(3, 10, 0)
mmc->max_segs = MAX_HW_SGMTS; mmc->max_segs = MAX_HW_SGMTS;
#else #else
mmc->max_hw_segs = MAX_HW_SGMTS; mmc->max_hw_segs = MAX_HW_SGMTS;
...@@ -2813,7 +2812,7 @@ static int msdc_drv_probe(struct platform_device *pdev) ...@@ -2813,7 +2812,7 @@ static int msdc_drv_probe(struct platform_device *pdev)
host->id = 0; host->id = 0;
host->error = 0; host->error = 0;
host->irq = irq; host->irq = irq;
host->base = (unsigned long) base; host->base = (unsigned long)base;
host->mclk = 0; /* mclk: the request clock of mmc sub-system */ host->mclk = 0; /* mclk: the request clock of mmc sub-system */
host->hclk = hclks[hw->clk_src]; /* hclk: clock of clock source to msdc controller */ host->hclk = hclks[hw->clk_src]; /* hclk: clock of clock source to msdc controller */
host->sclk = 0; /* sclk: the really clock after divition */ host->sclk = 0; /* sclk: the really clock after divition */
...@@ -2871,7 +2870,7 @@ static int msdc_drv_probe(struct platform_device *pdev) ...@@ -2871,7 +2870,7 @@ static int msdc_drv_probe(struct platform_device *pdev)
#ifdef CONFIG_PM #ifdef CONFIG_PM
hw->register_pm(msdc_pm, (void*)host); /* combo_sdio_register_pm() */ hw->register_pm(msdc_pm, (void*)host); /* combo_sdio_register_pm() */
#endif #endif
if(hw->flags & MSDC_SYS_SUSPEND) { /* will not set for WIFI */ if (hw->flags & MSDC_SYS_SUSPEND) { /* will not set for WIFI */
ERR_MSG("MSDC_SYS_SUSPEND and register_pm both set"); ERR_MSG("MSDC_SYS_SUSPEND and register_pm both set");
} }
//mmc->pm_flags |= MMC_PM_IGNORE_PM_NOTIFY; /* pm not controlled by system but by client. */ /* --- by chhung */ //mmc->pm_flags |= MMC_PM_IGNORE_PM_NOTIFY; /* pm not controlled by system but by client. */ /* --- by chhung */
...@@ -3012,9 +3011,9 @@ static int __init mt_msdc_init(void) ...@@ -3012,9 +3011,9 @@ static int __init mt_msdc_init(void)
/* +++ by chhung */ /* +++ by chhung */
u32 reg; u32 reg;
#if defined (CONFIG_MTD_ANY_RALINK) #if defined(CONFIG_MTD_ANY_RALINK)
extern int ra_check_flash_type(void); extern int ra_check_flash_type(void);
if(ra_check_flash_type() == 2) { /* NAND */ if (ra_check_flash_type() == 2) { /* NAND */
printk("%s: !!!!! SDXC Module Initialize Fail !!!!!", __func__); printk("%s: !!!!! SDXC Module Initialize Fail !!!!!", __func__);
return 0; return 0;
} }
...@@ -3023,10 +3022,10 @@ static int __init mt_msdc_init(void) ...@@ -3023,10 +3022,10 @@ static int __init mt_msdc_init(void)
mtk_sd_device.dev.platform_data = &msdc0_hw; mtk_sd_device.dev.platform_data = &msdc0_hw;
if (ralink_soc == MT762X_SOC_MT7620A || ralink_soc == MT762X_SOC_MT7621AT) { if (ralink_soc == MT762X_SOC_MT7620A || ralink_soc == MT762X_SOC_MT7621AT) {
//#if defined (CONFIG_RALINK_MT7620) || defined (CONFIG_RALINK_MT7621) //#if defined (CONFIG_RALINK_MT7620) || defined (CONFIG_RALINK_MT7621)
reg = sdr_read32((volatile u32*)(RALINK_SYSCTL_BASE + 0x60)) & ~(0x3<<18); reg = sdr_read32((volatile u32*)(RALINK_SYSCTL_BASE + 0x60)) & ~(0x3 << 18);
//#if defined (CONFIG_RALINK_MT7620) //#if defined (CONFIG_RALINK_MT7620)
if (ralink_soc == MT762X_SOC_MT7620A) if (ralink_soc == MT762X_SOC_MT7620A)
reg |= 0x1<<18; reg |= 0x1 << 18;
//#endif //#endif
} else { } else {
//#elif defined (CONFIG_RALINK_MT7628) //#elif defined (CONFIG_RALINK_MT7628)
...@@ -3035,9 +3034,9 @@ static int __init mt_msdc_init(void) ...@@ -3035,9 +3034,9 @@ static int __init mt_msdc_init(void)
reg |= 0x1e << 16; reg |= 0x1e << 16;
sdr_write32((volatile u32*)(RALINK_SYSCTL_BASE + 0x3c), reg); sdr_write32((volatile u32*)(RALINK_SYSCTL_BASE + 0x3c), reg);
reg = sdr_read32((volatile u32*)(RALINK_SYSCTL_BASE + 0x60)) & ~(0x3<<10); reg = sdr_read32((volatile u32*)(RALINK_SYSCTL_BASE + 0x60)) & ~(0x3 << 10);
#if defined (CONFIG_MTK_MMC_EMMC_8BIT) #if defined(CONFIG_MTK_MMC_EMMC_8BIT)
reg |= 0x3<<26 | 0x3<<28 | 0x3<<30; reg |= 0x3 << 26 | 0x3 << 28 | 0x3 << 30;
msdc0_hw.data_pins = 8, msdc0_hw.data_pins = 8,
#endif #endif
//#endif //#endif
...@@ -3053,7 +3052,7 @@ static int __init mt_msdc_init(void) ...@@ -3053,7 +3052,7 @@ static int __init mt_msdc_init(void)
} }
printk(KERN_INFO DRV_NAME ": MediaTek MT6575 MSDC Driver\n"); printk(KERN_INFO DRV_NAME ": MediaTek MT6575 MSDC Driver\n");
#if defined (MT6575_SD_DEBUG) #if defined(MT6575_SD_DEBUG)
msdc_debug_proc_init(); msdc_debug_proc_init();
#endif #endif
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment