Protect code on "BCSR" device. Signed-off-by: Rodolfo Giometti <giometti@xxxxxxxx> -- GNU/Linux Solutions e-mail: giometti@xxxxxxxxxxxx Linux Device Driver giometti@xxxxxxxxx Embedded Systems giometti@xxxxxxxx UNIX programming phone: +39 349 2432127
diff --git a/drivers/mmc/au1xmmc.c b/drivers/mmc/au1xmmc.c index b0dc1d0..6084bb8 100644 --- a/drivers/mmc/au1xmmc.c +++ b/drivers/mmc/au1xmmc.c @@ -65,8 +65,8 @@ #endif const struct { u32 iobase; u32 tx_devid, rx_devid; - u16 bcsrpwr; - u16 bcsrstatus; + u16 power; + u16 status; u16 wpstatus; } au1xmmc_card_table[] = { { SD0_BASE, DSCR_CMD0_SDMS_TX0, DSCR_CMD0_SDMS_RX0, @@ -138,24 +138,42 @@ static inline void SEND_STOP(struct au1x static void au1xmmc_set_power(struct au1xmmc_host *host, int state) { - u32 val = au1xmmc_card_table[host->id].bcsrpwr; + u32 val; + val = au1xmmc_card_table[host->id].power; + +#if defined(CONFIG_MIPS_DB1200) bcsr->board &= ~val; if (state) bcsr->board |= val; +#endif au_sync_delay(1); } static inline int au1xmmc_card_inserted(struct au1xmmc_host *host) { - return (bcsr->sig_status & au1xmmc_card_table[host->id].bcsrstatus) - ? 1 : 0; + u32 val, data = 1; + + val = au1xmmc_card_table[host->id].status; + +#if defined(CONFIG_MIPS_DB1200) + data = bcsr->sig_status & val; +#endif + + return !!data; } static inline int au1xmmc_card_readonly(struct au1xmmc_host *host) { - return (bcsr->status & au1xmmc_card_table[host->id].wpstatus) - ? 1 : 0; + u32 val, data = 0; + + val = au1xmmc_card_table[host->id].wpstatus; + +#if defined(CONFIG_MIPS_DB1200) + data = bcsr->status & val; +#endif + + return !!data; } static void au1xmmc_finish_request(struct au1xmmc_host *host) @@ -175,7 +193,9 @@ static void au1xmmc_finish_request(struc host->status = HOST_S_IDLE; +#if defined(CONFIG_MIPS_DB1200) bcsr->disk_leds |= (1 << 8); +#endif mmc_request_done(host->mmc, mrq); } @@ -670,7 +690,9 @@ static void au1xmmc_request(struct mmc_h host->mrq = mrq; host->status = HOST_S_CMD; +#if defined(CONFIG_MIPS_DB1200) bcsr->disk_leds &= ~(1 << 8); +#endif if (mrq->data) { FLUSH_FIFO(host);