[PATCH RESEND 2/6] mg_disk: use readb/writeb instead of inb/outb
mathieu.poirier at linaro.org
mathieu.poirier at linaro.org
Fri Jun 8 18:24:36 EDT 2012
From: Arnd Bergmann <arnd at arndb.de>
The inb/outb functions are meant for PC-style programmed I/O,
which uses port numbers, not __iomem pointers. This driver
relies on ioremap to map the MMIO registers into the kernel
address space, so it should use the appropriate accessors.
Signed-off-by: Arnd Bergmann <arnd at arndb.de>
Signed-off-by: Mathieu Poirier <mathieu.poirier at linaro.org>
---
drivers/block/mg_disk.c | 78 +++++++++++++++++++++++-----------------------
1 files changed, 39 insertions(+), 39 deletions(-)
diff --git a/drivers/block/mg_disk.c b/drivers/block/mg_disk.c
index 76fa3de..7d94fb0 100644
--- a/drivers/block/mg_disk.c
+++ b/drivers/block/mg_disk.c
@@ -187,7 +187,7 @@ static void mg_dump_status(const char *msg, unsigned int stat,
if ((stat & ATA_ERR) == 0) {
host->error = 0;
} else {
- host->error = inb((unsigned long)host->dev_base + MG_REG_ERROR);
+ host->error = readb(host->dev_base + MG_REG_ERROR);
printk(KERN_ERR "%s: %s: error=0x%02x { ", name, msg,
host->error & 0xff);
if (host->error & ATA_BBK)
@@ -225,11 +225,11 @@ static unsigned int mg_wait(struct mg_host *host, u32 expect, u32 msec)
* busy wait, because mflash's PLL is machine dependent.
*/
if (prv_data->use_polling) {
- status = inb((unsigned long)host->dev_base + MG_REG_STATUS);
- status = inb((unsigned long)host->dev_base + MG_REG_STATUS);
+ status = readb(host->dev_base + MG_REG_STATUS);
+ status = readb(host->dev_base + MG_REG_STATUS);
}
- status = inb((unsigned long)host->dev_base + MG_REG_STATUS);
+ status = readb(host->dev_base + MG_REG_STATUS);
do {
cur_jiffies = jiffies;
@@ -256,7 +256,7 @@ static unsigned int mg_wait(struct mg_host *host, u32 expect, u32 msec)
return MG_ERR_INV_STAT;
}
- status = inb((unsigned long)host->dev_base + MG_REG_STATUS);
+ status = readb(host->dev_base + MG_REG_STATUS);
} while (time_before(cur_jiffies, expire));
if (time_after_eq(cur_jiffies, expire) && msec)
@@ -281,7 +281,7 @@ static unsigned int mg_wait_rstout(u32 rstout, u32 msec)
static void mg_unexpected_intr(struct mg_host *host)
{
- u32 status = inb((unsigned long)host->dev_base + MG_REG_STATUS);
+ u32 status = readb(host->dev_base + MG_REG_STATUS);
mg_dump_status("mg_unexpected_intr", status, host);
}
@@ -351,18 +351,18 @@ static int mg_get_disk_id(struct mg_host *host)
char serial[ATA_ID_SERNO_LEN + 1];
if (!prv_data->use_polling)
- outb(ATA_NIEN, (unsigned long)host->dev_base + MG_REG_DRV_CTRL);
+ writeb(ATA_NIEN, host->dev_base + MG_REG_DRV_CTRL);
- outb(MG_CMD_ID, (unsigned long)host->dev_base + MG_REG_COMMAND);
+ writeb(MG_CMD_ID, host->dev_base + MG_REG_COMMAND);
err = mg_wait(host, ATA_DRQ, MG_TMAX_WAIT_RD_DRQ);
if (err)
return err;
for (i = 0; i < (MG_SECTOR_SIZE >> 1); i++)
- host->id[i] = le16_to_cpu(inw((unsigned long)host->dev_base +
+ host->id[i] = le16_to_cpu(readw(host->dev_base +
MG_BUFF_OFFSET + i * 2));
- outb(MG_CMD_RD_CONF, (unsigned long)host->dev_base + MG_REG_COMMAND);
+ writeb(MG_CMD_RD_CONF, host->dev_base + MG_REG_COMMAND);
err = mg_wait(host, MG_STAT_READY, MG_TMAX_CONF_TO_CMD);
if (err)
return err;
@@ -394,7 +394,7 @@ static int mg_get_disk_id(struct mg_host *host)
host->n_sectors, host->nres_sectors);
if (!prv_data->use_polling)
- outb(0, (unsigned long)host->dev_base + MG_REG_DRV_CTRL);
+ writeb(0, host->dev_base + MG_REG_DRV_CTRL);
return err;
}
@@ -419,20 +419,20 @@ static int mg_disk_init(struct mg_host *host)
return err;
/* soft reset on */
- outb(ATA_SRST | (prv_data->use_polling ? ATA_NIEN : 0),
- (unsigned long)host->dev_base + MG_REG_DRV_CTRL);
+ writeb(ATA_SRST | (prv_data->use_polling ? ATA_NIEN : 0),
+ host->dev_base + MG_REG_DRV_CTRL);
err = mg_wait(host, ATA_BUSY, MG_TMAX_RST_TO_BUSY);
if (err)
return err;
/* soft reset off */
- outb(prv_data->use_polling ? ATA_NIEN : 0,
- (unsigned long)host->dev_base + MG_REG_DRV_CTRL);
+ writeb(prv_data->use_polling ? ATA_NIEN : 0,
+ host->dev_base + MG_REG_DRV_CTRL);
err = mg_wait(host, MG_STAT_READY, MG_TMAX_SWRST_TO_RDY);
if (err)
return err;
- init_status = inb((unsigned long)host->dev_base + MG_REG_STATUS) & 0xf;
+ init_status = readb(host->dev_base + MG_REG_STATUS) & 0xf;
if (init_status == 0xf)
return MG_ERR_INIT_STAT;
@@ -465,15 +465,15 @@ static unsigned int mg_out(struct mg_host *host,
}
if (MG_RES_SEC)
sect_num += MG_RES_SEC;
- outb((u8)sect_cnt, (unsigned long)host->dev_base + MG_REG_SECT_CNT);
- outb((u8)sect_num, (unsigned long)host->dev_base + MG_REG_SECT_NUM);
- outb((u8)(sect_num >> 8), (unsigned long)host->dev_base +
+ writeb((u8)sect_cnt, host->dev_base + MG_REG_SECT_CNT);
+ writeb((u8)sect_num, host->dev_base + MG_REG_SECT_NUM);
+ writeb((u8)(sect_num >> 8), host->dev_base +
MG_REG_CYL_LOW);
- outb((u8)(sect_num >> 16), (unsigned long)host->dev_base +
+ writeb((u8)(sect_num >> 16), host->dev_base +
MG_REG_CYL_HIGH);
- outb((u8)((sect_num >> 24) | ATA_LBA | ATA_DEVICE_OBS),
- (unsigned long)host->dev_base + MG_REG_DRV_HEAD);
- outb(cmd, (unsigned long)host->dev_base + MG_REG_COMMAND);
+ writeb((u8)((sect_num >> 24) | ATA_LBA | ATA_DEVICE_OBS),
+ host->dev_base + MG_REG_DRV_HEAD);
+ writeb(cmd, host->dev_base + MG_REG_COMMAND);
return MG_ERR_NONE;
}
@@ -483,7 +483,7 @@ static void mg_read_one(struct mg_host *host, struct request *req)
u32 i;
for (i = 0; i < MG_SECTOR_SIZE >> 1; i++)
- *buff++ = inw((unsigned long)host->dev_base + MG_BUFF_OFFSET +
+ *buff++ = readw(host->dev_base + MG_BUFF_OFFSET +
(i << 1));
}
@@ -507,7 +507,7 @@ static void mg_read(struct request *req)
mg_read_one(host, req);
- outb(MG_CMD_RD_CONF, (unsigned long)host->dev_base +
+ writeb(MG_CMD_RD_CONF, host->dev_base +
MG_REG_COMMAND);
} while (mg_end_request(host, 0, MG_SECTOR_SIZE));
}
@@ -518,7 +518,7 @@ static void mg_write_one(struct mg_host *host, struct request *req)
u32 i;
for (i = 0; i < MG_SECTOR_SIZE >> 1; i++)
- outw(*buff++, (unsigned long)host->dev_base + MG_BUFF_OFFSET +
+ writew(*buff++, host->dev_base + MG_BUFF_OFFSET +
(i << 1));
}
@@ -545,7 +545,7 @@ static void mg_write(struct request *req)
do {
mg_write_one(host, req);
- outb(MG_CMD_WR_CONF, (unsigned long)host->dev_base +
+ writeb(MG_CMD_WR_CONF, host->dev_base +
MG_REG_COMMAND);
rem--;
@@ -568,7 +568,7 @@ static void mg_read_intr(struct mg_host *host)
/* check status */
do {
- i = inb((unsigned long)host->dev_base + MG_REG_STATUS);
+ i = readb(host->dev_base + MG_REG_STATUS);
if (i & ATA_BUSY)
break;
if (!MG_READY_OK(i))
@@ -588,7 +588,7 @@ ok_to_read:
blk_rq_pos(req), blk_rq_sectors(req) - 1, req->buffer);
/* send read confirm */
- outb(MG_CMD_RD_CONF, (unsigned long)host->dev_base + MG_REG_COMMAND);
+ writeb(MG_CMD_RD_CONF, host->dev_base + MG_REG_COMMAND);
if (mg_end_request(host, 0, MG_SECTOR_SIZE)) {
/* set handler if read remains */
@@ -606,7 +606,7 @@ static void mg_write_intr(struct mg_host *host)
/* check status */
do {
- i = inb((unsigned long)host->dev_base + MG_REG_STATUS);
+ i = readb(host->dev_base + MG_REG_STATUS);
if (i & ATA_BUSY)
break;
if (!MG_READY_OK(i))
@@ -630,7 +630,7 @@ ok_to_write:
}
/* send write confirm */
- outb(MG_CMD_WR_CONF, (unsigned long)host->dev_base + MG_REG_COMMAND);
+ writeb(MG_CMD_WR_CONF, host->dev_base + MG_REG_COMMAND);
if (!rem)
mg_request(host->breq);
@@ -697,7 +697,7 @@ static unsigned int mg_issue_req(struct request *req,
break;
case WRITE:
/* TODO : handler */
- outb(ATA_NIEN, (unsigned long)host->dev_base + MG_REG_DRV_CTRL);
+ writeb(ATA_NIEN, host->dev_base + MG_REG_DRV_CTRL);
if (mg_out(host, sect_num, sect_cnt, MG_CMD_WR, &mg_write_intr)
!= MG_ERR_NONE) {
mg_bad_rw_intr(host);
@@ -705,14 +705,14 @@ static unsigned int mg_issue_req(struct request *req,
}
del_timer(&host->timer);
mg_wait(host, ATA_DRQ, MG_TMAX_WAIT_WR_DRQ);
- outb(0, (unsigned long)host->dev_base + MG_REG_DRV_CTRL);
+ writeb(0, host->dev_base + MG_REG_DRV_CTRL);
if (host->error) {
mg_bad_rw_intr(host);
return host->error;
}
mg_write_one(host, req);
mod_timer(&host->timer, jiffies + 3 * HZ);
- outb(MG_CMD_WR_CONF, (unsigned long)host->dev_base +
+ writeb(MG_CMD_WR_CONF, host->dev_base +
MG_REG_COMMAND);
break;
}
@@ -789,15 +789,15 @@ static int mg_suspend(struct platform_device *plat_dev, pm_message_t state)
return -EIO;
if (!prv_data->use_polling)
- outb(ATA_NIEN, (unsigned long)host->dev_base + MG_REG_DRV_CTRL);
+ writeb(ATA_NIEN, host->dev_base + MG_REG_DRV_CTRL);
- outb(MG_CMD_SLEEP, (unsigned long)host->dev_base + MG_REG_COMMAND);
+ writeb(MG_CMD_SLEEP, host->dev_base + MG_REG_COMMAND);
/* wait until mflash deep sleep */
msleep(1);
if (mg_wait(host, MG_STAT_READY, MG_TMAX_CONF_TO_CMD)) {
if (!prv_data->use_polling)
- outb(0, (unsigned long)host->dev_base + MG_REG_DRV_CTRL);
+ writeb(0, host->dev_base + MG_REG_DRV_CTRL);
return -EIO;
}
@@ -812,7 +812,7 @@ static int mg_resume(struct platform_device *plat_dev)
if (mg_wait(host, MG_STAT_READY, MG_TMAX_CONF_TO_CMD))
return -EIO;
- outb(MG_CMD_WAKEUP, (unsigned long)host->dev_base + MG_REG_COMMAND);
+ writeb(MG_CMD_WAKEUP, host->dev_base + MG_REG_COMMAND);
/* wait until mflash wakeup */
msleep(1);
@@ -820,7 +820,7 @@ static int mg_resume(struct platform_device *plat_dev)
return -EIO;
if (!prv_data->use_polling)
- outb(0, (unsigned long)host->dev_base + MG_REG_DRV_CTRL);
+ writeb(0, host->dev_base + MG_REG_DRV_CTRL);
return 0;
}
--
1.7.5.4
More information about the linux-arm-kernel
mailing list