Commit 138f97cd authored by Mike Frysinger's avatar Mike Frysinger Committed by Linus Torvalds

Blackfin SPI Driver: use bfin_spi_ prefix on all functions

Do this because when things crash, we get simple names like "setup" and
"start_queue" which is pretty difficult to trace back to the real thing:
the spi driver
Signed-off-by: default avatarMike Frysinger <vapier.adi@gmail.com>
Signed-off-by: default avatarBryan Wu <cooloney@kernel.org>
Cc: David Brownell <david-b@pacbell.net>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent b9b2a76a
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
#define DRV_NAME "bfin-spi" #define DRV_NAME "bfin-spi"
#define DRV_AUTHOR "Bryan Wu, Luke Yang" #define DRV_AUTHOR "Bryan Wu, Luke Yang"
#define DRV_DESC "Blackfin BF5xx on-chip SPI Controller Driver" #define DRV_DESC "Blackfin on-chip SPI Controller Driver"
#define DRV_VERSION "1.0" #define DRV_VERSION "1.0"
MODULE_AUTHOR(DRV_AUTHOR); MODULE_AUTHOR(DRV_AUTHOR);
...@@ -161,7 +161,7 @@ static u16 hz_to_spi_baud(u32 speed_hz) ...@@ -161,7 +161,7 @@ static u16 hz_to_spi_baud(u32 speed_hz)
return spi_baud; return spi_baud;
} }
static int flush(struct driver_data *drv_data) static int bfin_spi_flush(struct driver_data *drv_data)
{ {
unsigned long limit = loops_per_jiffy << 1; unsigned long limit = loops_per_jiffy << 1;
...@@ -175,7 +175,7 @@ static int flush(struct driver_data *drv_data) ...@@ -175,7 +175,7 @@ static int flush(struct driver_data *drv_data)
} }
/* Chip select operation functions for cs_change flag */ /* Chip select operation functions for cs_change flag */
static void cs_active(struct driver_data *drv_data, struct chip_data *chip) static void bfin_spi_cs_active(struct driver_data *drv_data, struct chip_data *chip)
{ {
u16 flag = read_FLAG(drv_data); u16 flag = read_FLAG(drv_data);
...@@ -185,7 +185,7 @@ static void cs_active(struct driver_data *drv_data, struct chip_data *chip) ...@@ -185,7 +185,7 @@ static void cs_active(struct driver_data *drv_data, struct chip_data *chip)
write_FLAG(drv_data, flag); write_FLAG(drv_data, flag);
} }
static void cs_deactive(struct driver_data *drv_data, struct chip_data *chip) static void bfin_spi_cs_deactive(struct driver_data *drv_data, struct chip_data *chip)
{ {
u16 flag = read_FLAG(drv_data); u16 flag = read_FLAG(drv_data);
...@@ -200,7 +200,7 @@ static void cs_deactive(struct driver_data *drv_data, struct chip_data *chip) ...@@ -200,7 +200,7 @@ static void cs_deactive(struct driver_data *drv_data, struct chip_data *chip)
} }
/* stop controller and re-config current chip*/ /* stop controller and re-config current chip*/
static void restore_state(struct driver_data *drv_data) static void bfin_spi_restore_state(struct driver_data *drv_data)
{ {
struct chip_data *chip = drv_data->cur_chip; struct chip_data *chip = drv_data->cur_chip;
...@@ -214,18 +214,18 @@ static void restore_state(struct driver_data *drv_data) ...@@ -214,18 +214,18 @@ static void restore_state(struct driver_data *drv_data)
write_BAUD(drv_data, chip->baud); write_BAUD(drv_data, chip->baud);
bfin_spi_enable(drv_data); bfin_spi_enable(drv_data);
cs_active(drv_data, chip); bfin_spi_cs_active(drv_data, chip);
} }
/* used to kick off transfer in rx mode */ /* used to kick off transfer in rx mode */
static unsigned short dummy_read(struct driver_data *drv_data) static unsigned short bfin_spi_dummy_read(struct driver_data *drv_data)
{ {
unsigned short tmp; unsigned short tmp;
tmp = read_RDBR(drv_data); tmp = read_RDBR(drv_data);
return tmp; return tmp;
} }
static void null_writer(struct driver_data *drv_data) static void bfin_spi_null_writer(struct driver_data *drv_data)
{ {
u8 n_bytes = drv_data->n_bytes; u8 n_bytes = drv_data->n_bytes;
...@@ -237,20 +237,20 @@ static void null_writer(struct driver_data *drv_data) ...@@ -237,20 +237,20 @@ static void null_writer(struct driver_data *drv_data)
} }
} }
static void null_reader(struct driver_data *drv_data) static void bfin_spi_null_reader(struct driver_data *drv_data)
{ {
u8 n_bytes = drv_data->n_bytes; u8 n_bytes = drv_data->n_bytes;
dummy_read(drv_data); bfin_spi_dummy_read(drv_data);
while (drv_data->rx < drv_data->rx_end) { while (drv_data->rx < drv_data->rx_end) {
while (!(read_STAT(drv_data) & BIT_STAT_RXS)) while (!(read_STAT(drv_data) & BIT_STAT_RXS))
cpu_relax(); cpu_relax();
dummy_read(drv_data); bfin_spi_dummy_read(drv_data);
drv_data->rx += n_bytes; drv_data->rx += n_bytes;
} }
} }
static void u8_writer(struct driver_data *drv_data) static void bfin_spi_u8_writer(struct driver_data *drv_data)
{ {
dev_dbg(&drv_data->pdev->dev, dev_dbg(&drv_data->pdev->dev,
"cr8-s is 0x%x\n", read_STAT(drv_data)); "cr8-s is 0x%x\n", read_STAT(drv_data));
...@@ -267,12 +267,12 @@ static void u8_writer(struct driver_data *drv_data) ...@@ -267,12 +267,12 @@ static void u8_writer(struct driver_data *drv_data)
cpu_relax(); cpu_relax();
} }
static void u8_cs_chg_writer(struct driver_data *drv_data) static void bfin_spi_u8_cs_chg_writer(struct driver_data *drv_data)
{ {
struct chip_data *chip = drv_data->cur_chip; struct chip_data *chip = drv_data->cur_chip;
while (drv_data->tx < drv_data->tx_end) { while (drv_data->tx < drv_data->tx_end) {
cs_active(drv_data, chip); bfin_spi_cs_active(drv_data, chip);
write_TDBR(drv_data, (*(u8 *) (drv_data->tx))); write_TDBR(drv_data, (*(u8 *) (drv_data->tx)));
while (read_STAT(drv_data) & BIT_STAT_TXS) while (read_STAT(drv_data) & BIT_STAT_TXS)
...@@ -280,13 +280,13 @@ static void u8_cs_chg_writer(struct driver_data *drv_data) ...@@ -280,13 +280,13 @@ static void u8_cs_chg_writer(struct driver_data *drv_data)
while (!(read_STAT(drv_data) & BIT_STAT_SPIF)) while (!(read_STAT(drv_data) & BIT_STAT_SPIF))
cpu_relax(); cpu_relax();
cs_deactive(drv_data, chip); bfin_spi_cs_deactive(drv_data, chip);
++drv_data->tx; ++drv_data->tx;
} }
} }
static void u8_reader(struct driver_data *drv_data) static void bfin_spi_u8_reader(struct driver_data *drv_data)
{ {
dev_dbg(&drv_data->pdev->dev, dev_dbg(&drv_data->pdev->dev,
"cr-8 is 0x%x\n", read_STAT(drv_data)); "cr-8 is 0x%x\n", read_STAT(drv_data));
...@@ -298,7 +298,7 @@ static void u8_reader(struct driver_data *drv_data) ...@@ -298,7 +298,7 @@ static void u8_reader(struct driver_data *drv_data)
/* clear TDBR buffer before read(else it will be shifted out) */ /* clear TDBR buffer before read(else it will be shifted out) */
write_TDBR(drv_data, 0xFFFF); write_TDBR(drv_data, 0xFFFF);
dummy_read(drv_data); bfin_spi_dummy_read(drv_data);
while (drv_data->rx < drv_data->rx_end - 1) { while (drv_data->rx < drv_data->rx_end - 1) {
while (!(read_STAT(drv_data) & BIT_STAT_RXS)) while (!(read_STAT(drv_data) & BIT_STAT_RXS))
...@@ -313,12 +313,12 @@ static void u8_reader(struct driver_data *drv_data) ...@@ -313,12 +313,12 @@ static void u8_reader(struct driver_data *drv_data)
++drv_data->rx; ++drv_data->rx;
} }
static void u8_cs_chg_reader(struct driver_data *drv_data) static void bfin_spi_u8_cs_chg_reader(struct driver_data *drv_data)
{ {
struct chip_data *chip = drv_data->cur_chip; struct chip_data *chip = drv_data->cur_chip;
while (drv_data->rx < drv_data->rx_end) { while (drv_data->rx < drv_data->rx_end) {
cs_active(drv_data, chip); bfin_spi_cs_active(drv_data, chip);
read_RDBR(drv_data); /* kick off */ read_RDBR(drv_data); /* kick off */
while (!(read_STAT(drv_data) & BIT_STAT_RXS)) while (!(read_STAT(drv_data) & BIT_STAT_RXS))
...@@ -327,13 +327,13 @@ static void u8_cs_chg_reader(struct driver_data *drv_data) ...@@ -327,13 +327,13 @@ static void u8_cs_chg_reader(struct driver_data *drv_data)
cpu_relax(); cpu_relax();
*(u8 *) (drv_data->rx) = read_SHAW(drv_data); *(u8 *) (drv_data->rx) = read_SHAW(drv_data);
cs_deactive(drv_data, chip); bfin_spi_cs_deactive(drv_data, chip);
++drv_data->rx; ++drv_data->rx;
} }
} }
static void u8_duplex(struct driver_data *drv_data) static void bfin_spi_u8_duplex(struct driver_data *drv_data)
{ {
/* in duplex mode, clk is triggered by writing of TDBR */ /* in duplex mode, clk is triggered by writing of TDBR */
while (drv_data->rx < drv_data->rx_end) { while (drv_data->rx < drv_data->rx_end) {
...@@ -348,12 +348,12 @@ static void u8_duplex(struct driver_data *drv_data) ...@@ -348,12 +348,12 @@ static void u8_duplex(struct driver_data *drv_data)
} }
} }
static void u8_cs_chg_duplex(struct driver_data *drv_data) static void bfin_spi_u8_cs_chg_duplex(struct driver_data *drv_data)
{ {
struct chip_data *chip = drv_data->cur_chip; struct chip_data *chip = drv_data->cur_chip;
while (drv_data->rx < drv_data->rx_end) { while (drv_data->rx < drv_data->rx_end) {
cs_active(drv_data, chip); bfin_spi_cs_active(drv_data, chip);
write_TDBR(drv_data, (*(u8 *) (drv_data->tx))); write_TDBR(drv_data, (*(u8 *) (drv_data->tx)));
...@@ -363,14 +363,14 @@ static void u8_cs_chg_duplex(struct driver_data *drv_data) ...@@ -363,14 +363,14 @@ static void u8_cs_chg_duplex(struct driver_data *drv_data)
cpu_relax(); cpu_relax();
*(u8 *) (drv_data->rx) = read_RDBR(drv_data); *(u8 *) (drv_data->rx) = read_RDBR(drv_data);
cs_deactive(drv_data, chip); bfin_spi_cs_deactive(drv_data, chip);
++drv_data->rx; ++drv_data->rx;
++drv_data->tx; ++drv_data->tx;
} }
} }
static void u16_writer(struct driver_data *drv_data) static void bfin_spi_u16_writer(struct driver_data *drv_data)
{ {
dev_dbg(&drv_data->pdev->dev, dev_dbg(&drv_data->pdev->dev,
"cr16 is 0x%x\n", read_STAT(drv_data)); "cr16 is 0x%x\n", read_STAT(drv_data));
...@@ -387,12 +387,12 @@ static void u16_writer(struct driver_data *drv_data) ...@@ -387,12 +387,12 @@ static void u16_writer(struct driver_data *drv_data)
cpu_relax(); cpu_relax();
} }
static void u16_cs_chg_writer(struct driver_data *drv_data) static void bfin_spi_u16_cs_chg_writer(struct driver_data *drv_data)
{ {
struct chip_data *chip = drv_data->cur_chip; struct chip_data *chip = drv_data->cur_chip;
while (drv_data->tx < drv_data->tx_end) { while (drv_data->tx < drv_data->tx_end) {
cs_active(drv_data, chip); bfin_spi_cs_active(drv_data, chip);
write_TDBR(drv_data, (*(u16 *) (drv_data->tx))); write_TDBR(drv_data, (*(u16 *) (drv_data->tx)));
while ((read_STAT(drv_data) & BIT_STAT_TXS)) while ((read_STAT(drv_data) & BIT_STAT_TXS))
...@@ -400,13 +400,13 @@ static void u16_cs_chg_writer(struct driver_data *drv_data) ...@@ -400,13 +400,13 @@ static void u16_cs_chg_writer(struct driver_data *drv_data)
while (!(read_STAT(drv_data) & BIT_STAT_SPIF)) while (!(read_STAT(drv_data) & BIT_STAT_SPIF))
cpu_relax(); cpu_relax();
cs_deactive(drv_data, chip); bfin_spi_cs_deactive(drv_data, chip);
drv_data->tx += 2; drv_data->tx += 2;
} }
} }
static void u16_reader(struct driver_data *drv_data) static void bfin_spi_u16_reader(struct driver_data *drv_data)
{ {
dev_dbg(&drv_data->pdev->dev, dev_dbg(&drv_data->pdev->dev,
"cr-16 is 0x%x\n", read_STAT(drv_data)); "cr-16 is 0x%x\n", read_STAT(drv_data));
...@@ -418,7 +418,7 @@ static void u16_reader(struct driver_data *drv_data) ...@@ -418,7 +418,7 @@ static void u16_reader(struct driver_data *drv_data)
/* clear TDBR buffer before read(else it will be shifted out) */ /* clear TDBR buffer before read(else it will be shifted out) */
write_TDBR(drv_data, 0xFFFF); write_TDBR(drv_data, 0xFFFF);
dummy_read(drv_data); bfin_spi_dummy_read(drv_data);
while (drv_data->rx < (drv_data->rx_end - 2)) { while (drv_data->rx < (drv_data->rx_end - 2)) {
while (!(read_STAT(drv_data) & BIT_STAT_RXS)) while (!(read_STAT(drv_data) & BIT_STAT_RXS))
...@@ -433,7 +433,7 @@ static void u16_reader(struct driver_data *drv_data) ...@@ -433,7 +433,7 @@ static void u16_reader(struct driver_data *drv_data)
drv_data->rx += 2; drv_data->rx += 2;
} }
static void u16_cs_chg_reader(struct driver_data *drv_data) static void bfin_spi_u16_cs_chg_reader(struct driver_data *drv_data)
{ {
struct chip_data *chip = drv_data->cur_chip; struct chip_data *chip = drv_data->cur_chip;
...@@ -444,19 +444,19 @@ static void u16_cs_chg_reader(struct driver_data *drv_data) ...@@ -444,19 +444,19 @@ static void u16_cs_chg_reader(struct driver_data *drv_data)
/* clear TDBR buffer before read(else it will be shifted out) */ /* clear TDBR buffer before read(else it will be shifted out) */
write_TDBR(drv_data, 0xFFFF); write_TDBR(drv_data, 0xFFFF);
cs_active(drv_data, chip); bfin_spi_cs_active(drv_data, chip);
dummy_read(drv_data); bfin_spi_dummy_read(drv_data);
while (drv_data->rx < drv_data->rx_end - 2) { while (drv_data->rx < drv_data->rx_end - 2) {
cs_deactive(drv_data, chip); bfin_spi_cs_deactive(drv_data, chip);
while (!(read_STAT(drv_data) & BIT_STAT_RXS)) while (!(read_STAT(drv_data) & BIT_STAT_RXS))
cpu_relax(); cpu_relax();
cs_active(drv_data, chip); bfin_spi_cs_active(drv_data, chip);
*(u16 *) (drv_data->rx) = read_RDBR(drv_data); *(u16 *) (drv_data->rx) = read_RDBR(drv_data);
drv_data->rx += 2; drv_data->rx += 2;
} }
cs_deactive(drv_data, chip); bfin_spi_cs_deactive(drv_data, chip);
while (!(read_STAT(drv_data) & BIT_STAT_RXS)) while (!(read_STAT(drv_data) & BIT_STAT_RXS))
cpu_relax(); cpu_relax();
...@@ -464,7 +464,7 @@ static void u16_cs_chg_reader(struct driver_data *drv_data) ...@@ -464,7 +464,7 @@ static void u16_cs_chg_reader(struct driver_data *drv_data)
drv_data->rx += 2; drv_data->rx += 2;
} }
static void u16_duplex(struct driver_data *drv_data) static void bfin_spi_u16_duplex(struct driver_data *drv_data)
{ {
/* in duplex mode, clk is triggered by writing of TDBR */ /* in duplex mode, clk is triggered by writing of TDBR */
while (drv_data->tx < drv_data->tx_end) { while (drv_data->tx < drv_data->tx_end) {
...@@ -479,12 +479,12 @@ static void u16_duplex(struct driver_data *drv_data) ...@@ -479,12 +479,12 @@ static void u16_duplex(struct driver_data *drv_data)
} }
} }
static void u16_cs_chg_duplex(struct driver_data *drv_data) static void bfin_spi_u16_cs_chg_duplex(struct driver_data *drv_data)
{ {
struct chip_data *chip = drv_data->cur_chip; struct chip_data *chip = drv_data->cur_chip;
while (drv_data->tx < drv_data->tx_end) { while (drv_data->tx < drv_data->tx_end) {
cs_active(drv_data, chip); bfin_spi_cs_active(drv_data, chip);
write_TDBR(drv_data, (*(u16 *) (drv_data->tx))); write_TDBR(drv_data, (*(u16 *) (drv_data->tx)));
while (!(read_STAT(drv_data) & BIT_STAT_SPIF)) while (!(read_STAT(drv_data) & BIT_STAT_SPIF))
...@@ -493,7 +493,7 @@ static void u16_cs_chg_duplex(struct driver_data *drv_data) ...@@ -493,7 +493,7 @@ static void u16_cs_chg_duplex(struct driver_data *drv_data)
cpu_relax(); cpu_relax();
*(u16 *) (drv_data->rx) = read_RDBR(drv_data); *(u16 *) (drv_data->rx) = read_RDBR(drv_data);
cs_deactive(drv_data, chip); bfin_spi_cs_deactive(drv_data, chip);
drv_data->rx += 2; drv_data->rx += 2;
drv_data->tx += 2; drv_data->tx += 2;
...@@ -501,7 +501,7 @@ static void u16_cs_chg_duplex(struct driver_data *drv_data) ...@@ -501,7 +501,7 @@ static void u16_cs_chg_duplex(struct driver_data *drv_data)
} }
/* test if ther is more transfer to be done */ /* test if ther is more transfer to be done */
static void *next_transfer(struct driver_data *drv_data) static void *bfin_spi_next_transfer(struct driver_data *drv_data)
{ {
struct spi_message *msg = drv_data->cur_msg; struct spi_message *msg = drv_data->cur_msg;
struct spi_transfer *trans = drv_data->cur_transfer; struct spi_transfer *trans = drv_data->cur_transfer;
...@@ -520,7 +520,7 @@ static void *next_transfer(struct driver_data *drv_data) ...@@ -520,7 +520,7 @@ static void *next_transfer(struct driver_data *drv_data)
* caller already set message->status; * caller already set message->status;
* dma and pio irqs are blocked give finished message back * dma and pio irqs are blocked give finished message back
*/ */
static void giveback(struct driver_data *drv_data) static void bfin_spi_giveback(struct driver_data *drv_data)
{ {
struct chip_data *chip = drv_data->cur_chip; struct chip_data *chip = drv_data->cur_chip;
struct spi_transfer *last_transfer; struct spi_transfer *last_transfer;
...@@ -541,7 +541,7 @@ static void giveback(struct driver_data *drv_data) ...@@ -541,7 +541,7 @@ static void giveback(struct driver_data *drv_data)
msg->state = NULL; msg->state = NULL;
if (!drv_data->cs_change) if (!drv_data->cs_change)
cs_deactive(drv_data, chip); bfin_spi_cs_deactive(drv_data, chip);
/* Not stop spi in autobuffer mode */ /* Not stop spi in autobuffer mode */
if (drv_data->tx_dma != 0xFFFF) if (drv_data->tx_dma != 0xFFFF)
...@@ -551,7 +551,7 @@ static void giveback(struct driver_data *drv_data) ...@@ -551,7 +551,7 @@ static void giveback(struct driver_data *drv_data)
msg->complete(msg->context); msg->complete(msg->context);
} }
static irqreturn_t dma_irq_handler(int irq, void *dev_id) static irqreturn_t bfin_spi_dma_irq_handler(int irq, void *dev_id)
{ {
struct driver_data *drv_data = dev_id; struct driver_data *drv_data = dev_id;
struct chip_data *chip = drv_data->cur_chip; struct chip_data *chip = drv_data->cur_chip;
...@@ -601,10 +601,10 @@ static irqreturn_t dma_irq_handler(int irq, void *dev_id) ...@@ -601,10 +601,10 @@ static irqreturn_t dma_irq_handler(int irq, void *dev_id)
msg->actual_length += drv_data->len_in_bytes; msg->actual_length += drv_data->len_in_bytes;
if (drv_data->cs_change) if (drv_data->cs_change)
cs_deactive(drv_data, chip); bfin_spi_cs_deactive(drv_data, chip);
/* Move to next transfer */ /* Move to next transfer */
msg->state = next_transfer(drv_data); msg->state = bfin_spi_next_transfer(drv_data);
} }
/* Schedule transfer tasklet */ /* Schedule transfer tasklet */
...@@ -619,7 +619,7 @@ static irqreturn_t dma_irq_handler(int irq, void *dev_id) ...@@ -619,7 +619,7 @@ static irqreturn_t dma_irq_handler(int irq, void *dev_id)
return IRQ_HANDLED; return IRQ_HANDLED;
} }
static void pump_transfers(unsigned long data) static void bfin_spi_pump_transfers(unsigned long data)
{ {
struct driver_data *drv_data = (struct driver_data *)data; struct driver_data *drv_data = (struct driver_data *)data;
struct spi_message *message = NULL; struct spi_message *message = NULL;
...@@ -644,7 +644,7 @@ static void pump_transfers(unsigned long data) ...@@ -644,7 +644,7 @@ static void pump_transfers(unsigned long data)
if (message->state == ERROR_STATE) { if (message->state == ERROR_STATE) {
dev_dbg(&drv_data->pdev->dev, "transfer: we've hit an error\n"); dev_dbg(&drv_data->pdev->dev, "transfer: we've hit an error\n");
message->status = -EIO; message->status = -EIO;
giveback(drv_data); bfin_spi_giveback(drv_data);
return; return;
} }
...@@ -652,7 +652,7 @@ static void pump_transfers(unsigned long data) ...@@ -652,7 +652,7 @@ static void pump_transfers(unsigned long data)
if (message->state == DONE_STATE) { if (message->state == DONE_STATE) {
dev_dbg(&drv_data->pdev->dev, "transfer: all done!\n"); dev_dbg(&drv_data->pdev->dev, "transfer: all done!\n");
message->status = 0; message->status = 0;
giveback(drv_data); bfin_spi_giveback(drv_data);
return; return;
} }
...@@ -666,10 +666,10 @@ static void pump_transfers(unsigned long data) ...@@ -666,10 +666,10 @@ static void pump_transfers(unsigned long data)
} }
/* Setup the transfer state based on the type of transfer */ /* Setup the transfer state based on the type of transfer */
if (flush(drv_data) == 0) { if (bfin_spi_flush(drv_data) == 0) {
dev_err(&drv_data->pdev->dev, "pump_transfers: flush failed\n"); dev_err(&drv_data->pdev->dev, "pump_transfers: flush failed\n");
message->status = -EIO; message->status = -EIO;
giveback(drv_data); bfin_spi_giveback(drv_data);
return; return;
} }
...@@ -703,31 +703,31 @@ static void pump_transfers(unsigned long data) ...@@ -703,31 +703,31 @@ static void pump_transfers(unsigned long data)
drv_data->n_bytes = 1; drv_data->n_bytes = 1;
width = CFG_SPI_WORDSIZE8; width = CFG_SPI_WORDSIZE8;
drv_data->read = chip->cs_change_per_word ? drv_data->read = chip->cs_change_per_word ?
u8_cs_chg_reader : u8_reader; bfin_spi_u8_cs_chg_reader : bfin_spi_u8_reader;
drv_data->write = chip->cs_change_per_word ? drv_data->write = chip->cs_change_per_word ?
u8_cs_chg_writer : u8_writer; bfin_spi_u8_cs_chg_writer : bfin_spi_u8_writer;
drv_data->duplex = chip->cs_change_per_word ? drv_data->duplex = chip->cs_change_per_word ?
u8_cs_chg_duplex : u8_duplex; bfin_spi_u8_cs_chg_duplex : bfin_spi_u8_duplex;
break; break;
case 16: case 16:
drv_data->n_bytes = 2; drv_data->n_bytes = 2;
width = CFG_SPI_WORDSIZE16; width = CFG_SPI_WORDSIZE16;
drv_data->read = chip->cs_change_per_word ? drv_data->read = chip->cs_change_per_word ?
u16_cs_chg_reader : u16_reader; bfin_spi_u16_cs_chg_reader : bfin_spi_u16_reader;
drv_data->write = chip->cs_change_per_word ? drv_data->write = chip->cs_change_per_word ?
u16_cs_chg_writer : u16_writer; bfin_spi_u16_cs_chg_writer : bfin_spi_u16_writer;
drv_data->duplex = chip->cs_change_per_word ? drv_data->duplex = chip->cs_change_per_word ?
u16_cs_chg_duplex : u16_duplex; bfin_spi_u16_cs_chg_duplex : bfin_spi_u16_duplex;
break; break;
default: default:
/* No change, the same as default setting */ /* No change, the same as default setting */
drv_data->n_bytes = chip->n_bytes; drv_data->n_bytes = chip->n_bytes;
width = chip->width; width = chip->width;
drv_data->write = drv_data->tx ? chip->write : null_writer; drv_data->write = drv_data->tx ? chip->write : bfin_spi_null_writer;
drv_data->read = drv_data->rx ? chip->read : null_reader; drv_data->read = drv_data->rx ? chip->read : bfin_spi_null_reader;
drv_data->duplex = chip->duplex ? chip->duplex : null_writer; drv_data->duplex = chip->duplex ? chip->duplex : bfin_spi_null_writer;
break; break;
} }
cr = (read_CTRL(drv_data) & (~BIT_CTL_TIMOD)); cr = (read_CTRL(drv_data) & (~BIT_CTL_TIMOD));
...@@ -741,7 +741,7 @@ static void pump_transfers(unsigned long data) ...@@ -741,7 +741,7 @@ static void pump_transfers(unsigned long data)
} }
dev_dbg(&drv_data->pdev->dev, dev_dbg(&drv_data->pdev->dev,
"transfer: drv_data->write is %p, chip->write is %p, null_wr is %p\n", "transfer: drv_data->write is %p, chip->write is %p, null_wr is %p\n",
drv_data->write, chip->write, null_writer); drv_data->write, chip->write, bfin_spi_null_writer);
/* speed and width has been set on per message */ /* speed and width has been set on per message */
message->state = RUNNING_STATE; message->state = RUNNING_STATE;
...@@ -756,7 +756,7 @@ static void pump_transfers(unsigned long data) ...@@ -756,7 +756,7 @@ static void pump_transfers(unsigned long data)
write_STAT(drv_data, BIT_STAT_CLR); write_STAT(drv_data, BIT_STAT_CLR);
cr = (read_CTRL(drv_data) & (~BIT_CTL_TIMOD)); cr = (read_CTRL(drv_data) & (~BIT_CTL_TIMOD));
if (drv_data->cs_change) if (drv_data->cs_change)
cs_active(drv_data, chip); bfin_spi_cs_active(drv_data, chip);
dev_dbg(&drv_data->pdev->dev, dev_dbg(&drv_data->pdev->dev,
"now pumping a transfer: width is %d, len is %d\n", "now pumping a transfer: width is %d, len is %d\n",
...@@ -811,7 +811,7 @@ static void pump_transfers(unsigned long data) ...@@ -811,7 +811,7 @@ static void pump_transfers(unsigned long data)
* in this mode * in this mode
*/ */
message->status = 0; message->status = 0;
giveback(drv_data); bfin_spi_giveback(drv_data);
return; return;
} }
...@@ -919,9 +919,9 @@ static void pump_transfers(unsigned long data) ...@@ -919,9 +919,9 @@ static void pump_transfers(unsigned long data)
/* Update total byte transfered */ /* Update total byte transfered */
message->actual_length += drv_data->len_in_bytes; message->actual_length += drv_data->len_in_bytes;
/* Move to next transfer of this msg */ /* Move to next transfer of this msg */
message->state = next_transfer(drv_data); message->state = bfin_spi_next_transfer(drv_data);
if (drv_data->cs_change) if (drv_data->cs_change)
cs_deactive(drv_data, chip); bfin_spi_cs_deactive(drv_data, chip);
} }
/* Schedule next transfer tasklet */ /* Schedule next transfer tasklet */
tasklet_schedule(&drv_data->pump_transfers); tasklet_schedule(&drv_data->pump_transfers);
...@@ -930,7 +930,7 @@ static void pump_transfers(unsigned long data) ...@@ -930,7 +930,7 @@ static void pump_transfers(unsigned long data)
} }
/* pop a msg from queue and kick off real transfer */ /* pop a msg from queue and kick off real transfer */
static void pump_messages(struct work_struct *work) static void bfin_spi_pump_messages(struct work_struct *work)
{ {
struct driver_data *drv_data; struct driver_data *drv_data;
unsigned long flags; unsigned long flags;
...@@ -958,7 +958,7 @@ static void pump_messages(struct work_struct *work) ...@@ -958,7 +958,7 @@ static void pump_messages(struct work_struct *work)
/* Setup the SSP using the per chip configuration */ /* Setup the SSP using the per chip configuration */
drv_data->cur_chip = spi_get_ctldata(drv_data->cur_msg->spi); drv_data->cur_chip = spi_get_ctldata(drv_data->cur_msg->spi);
restore_state(drv_data); bfin_spi_restore_state(drv_data);
list_del_init(&drv_data->cur_msg->queue); list_del_init(&drv_data->cur_msg->queue);
...@@ -987,7 +987,7 @@ static void pump_messages(struct work_struct *work) ...@@ -987,7 +987,7 @@ static void pump_messages(struct work_struct *work)
* got a msg to transfer, queue it in drv_data->queue. * got a msg to transfer, queue it in drv_data->queue.
* And kick off message pumper * And kick off message pumper
*/ */
static int transfer(struct spi_device *spi, struct spi_message *msg) static int bfin_spi_transfer(struct spi_device *spi, struct spi_message *msg)
{ {
struct driver_data *drv_data = spi_master_get_devdata(spi->master); struct driver_data *drv_data = spi_master_get_devdata(spi->master);
unsigned long flags; unsigned long flags;
...@@ -1031,7 +1031,7 @@ static u16 ssel[][MAX_SPI_SSEL] = { ...@@ -1031,7 +1031,7 @@ static u16 ssel[][MAX_SPI_SSEL] = {
}; };
/* first setup for new devices */ /* first setup for new devices */
static int setup(struct spi_device *spi) static int bfin_spi_setup(struct spi_device *spi)
{ {
struct bfin5xx_spi_chip *chip_info = NULL; struct bfin5xx_spi_chip *chip_info = NULL;
struct chip_data *chip; struct chip_data *chip;
...@@ -1105,7 +1105,7 @@ static int setup(struct spi_device *spi) ...@@ -1105,7 +1105,7 @@ static int setup(struct spi_device *spi)
return -ENODEV; return -ENODEV;
} }
if (set_dma_callback(drv_data->dma_channel, if (set_dma_callback(drv_data->dma_channel,
dma_irq_handler, drv_data) < 0) { bfin_spi_dma_irq_handler, drv_data) < 0) {
dev_dbg(&spi->dev, "Unable to set dma callback\n"); dev_dbg(&spi->dev, "Unable to set dma callback\n");
return -EPERM; return -EPERM;
} }
...@@ -1126,28 +1126,29 @@ static int setup(struct spi_device *spi) ...@@ -1126,28 +1126,29 @@ static int setup(struct spi_device *spi)
chip->n_bytes = 1; chip->n_bytes = 1;
chip->width = CFG_SPI_WORDSIZE8; chip->width = CFG_SPI_WORDSIZE8;
chip->read = chip->cs_change_per_word ? chip->read = chip->cs_change_per_word ?
u8_cs_chg_reader : u8_reader; bfin_spi_u8_cs_chg_reader : bfin_spi_u8_reader;
chip->write = chip->cs_change_per_word ? chip->write = chip->cs_change_per_word ?
u8_cs_chg_writer : u8_writer; bfin_spi_u8_cs_chg_writer : bfin_spi_u8_writer;
chip->duplex = chip->cs_change_per_word ? chip->duplex = chip->cs_change_per_word ?
u8_cs_chg_duplex : u8_duplex; bfin_spi_u8_cs_chg_duplex : bfin_spi_u8_duplex;
break; break;
case 16: case 16:
chip->n_bytes = 2; chip->n_bytes = 2;
chip->width = CFG_SPI_WORDSIZE16; chip->width = CFG_SPI_WORDSIZE16;
chip->read = chip->cs_change_per_word ? chip->read = chip->cs_change_per_word ?
u16_cs_chg_reader : u16_reader; bfin_spi_u16_cs_chg_reader : bfin_spi_u16_reader;
chip->write = chip->cs_change_per_word ? chip->write = chip->cs_change_per_word ?
u16_cs_chg_writer : u16_writer; bfin_spi_u16_cs_chg_writer : bfin_spi_u16_writer;
chip->duplex = chip->cs_change_per_word ? chip->duplex = chip->cs_change_per_word ?
u16_cs_chg_duplex : u16_duplex; bfin_spi_u16_cs_chg_duplex : bfin_spi_u16_duplex;
break; break;
default: default:
dev_err(&spi->dev, "%d bits_per_word is not supported\n", dev_err(&spi->dev, "%d bits_per_word is not supported\n",
chip->bits_per_word); chip->bits_per_word);
kfree(chip); if (chip_info)
kfree(chip);
return -ENODEV; return -ENODEV;
} }
...@@ -1164,7 +1165,7 @@ static int setup(struct spi_device *spi) ...@@ -1164,7 +1165,7 @@ static int setup(struct spi_device *spi)
peripheral_request(ssel[spi->master->bus_num] peripheral_request(ssel[spi->master->bus_num]
[chip->chip_select_num-1], spi->modalias); [chip->chip_select_num-1], spi->modalias);
cs_deactive(drv_data, chip); bfin_spi_cs_deactive(drv_data, chip);
return 0; return 0;
} }
...@@ -1173,7 +1174,7 @@ static int setup(struct spi_device *spi) ...@@ -1173,7 +1174,7 @@ static int setup(struct spi_device *spi)
* callback for spi framework. * callback for spi framework.
* clean driver specific data * clean driver specific data
*/ */
static void cleanup(struct spi_device *spi) static void bfin_spi_cleanup(struct spi_device *spi)
{ {
struct chip_data *chip = spi_get_ctldata(spi); struct chip_data *chip = spi_get_ctldata(spi);
...@@ -1185,7 +1186,7 @@ static void cleanup(struct spi_device *spi) ...@@ -1185,7 +1186,7 @@ static void cleanup(struct spi_device *spi)
kfree(chip); kfree(chip);
} }
static inline int init_queue(struct driver_data *drv_data) static inline int bfin_spi_init_queue(struct driver_data *drv_data)
{ {
INIT_LIST_HEAD(&drv_data->queue); INIT_LIST_HEAD(&drv_data->queue);
spin_lock_init(&drv_data->lock); spin_lock_init(&drv_data->lock);
...@@ -1195,10 +1196,10 @@ static inline int init_queue(struct driver_data *drv_data) ...@@ -1195,10 +1196,10 @@ static inline int init_queue(struct driver_data *drv_data)
/* init transfer tasklet */ /* init transfer tasklet */
tasklet_init(&drv_data->pump_transfers, tasklet_init(&drv_data->pump_transfers,
pump_transfers, (unsigned long)drv_data); bfin_spi_pump_transfers, (unsigned long)drv_data);
/* init messages workqueue */ /* init messages workqueue */
INIT_WORK(&drv_data->pump_messages, pump_messages); INIT_WORK(&drv_data->pump_messages, bfin_spi_pump_messages);
drv_data->workqueue = create_singlethread_workqueue( drv_data->workqueue = create_singlethread_workqueue(
dev_name(drv_data->master->dev.parent)); dev_name(drv_data->master->dev.parent));
if (drv_data->workqueue == NULL) if (drv_data->workqueue == NULL)
...@@ -1207,7 +1208,7 @@ static inline int init_queue(struct driver_data *drv_data) ...@@ -1207,7 +1208,7 @@ static inline int init_queue(struct driver_data *drv_data)
return 0; return 0;
} }
static inline int start_queue(struct driver_data *drv_data) static inline int bfin_spi_start_queue(struct driver_data *drv_data)
{ {
unsigned long flags; unsigned long flags;
...@@ -1229,7 +1230,7 @@ static inline int start_queue(struct driver_data *drv_data) ...@@ -1229,7 +1230,7 @@ static inline int start_queue(struct driver_data *drv_data)
return 0; return 0;
} }
static inline int stop_queue(struct driver_data *drv_data) static inline int bfin_spi_stop_queue(struct driver_data *drv_data)
{ {
unsigned long flags; unsigned long flags;
unsigned limit = 500; unsigned limit = 500;
...@@ -1258,11 +1259,11 @@ static inline int stop_queue(struct driver_data *drv_data) ...@@ -1258,11 +1259,11 @@ static inline int stop_queue(struct driver_data *drv_data)
return status; return status;
} }
static inline int destroy_queue(struct driver_data *drv_data) static inline int bfin_spi_destroy_queue(struct driver_data *drv_data)
{ {
int status; int status;
status = stop_queue(drv_data); status = bfin_spi_stop_queue(drv_data);
if (status != 0) if (status != 0)
return status; return status;
...@@ -1271,7 +1272,7 @@ static inline int destroy_queue(struct driver_data *drv_data) ...@@ -1271,7 +1272,7 @@ static inline int destroy_queue(struct driver_data *drv_data)
return 0; return 0;
} }
static int __init bfin5xx_spi_probe(struct platform_device *pdev) static int __init bfin_spi_probe(struct platform_device *pdev)
{ {
struct device *dev = &pdev->dev; struct device *dev = &pdev->dev;
struct bfin5xx_spi_master *platform_info; struct bfin5xx_spi_master *platform_info;
...@@ -1297,9 +1298,9 @@ static int __init bfin5xx_spi_probe(struct platform_device *pdev) ...@@ -1297,9 +1298,9 @@ static int __init bfin5xx_spi_probe(struct platform_device *pdev)
master->bus_num = pdev->id; master->bus_num = pdev->id;
master->num_chipselect = platform_info->num_chipselect; master->num_chipselect = platform_info->num_chipselect;
master->cleanup = cleanup; master->cleanup = bfin_spi_cleanup;
master->setup = setup; master->setup = bfin_spi_setup;
master->transfer = transfer; master->transfer = bfin_spi_transfer;
/* Find and map our resources */ /* Find and map our resources */
res = platform_get_resource(pdev, IORESOURCE_MEM, 0); res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
...@@ -1324,13 +1325,13 @@ static int __init bfin5xx_spi_probe(struct platform_device *pdev) ...@@ -1324,13 +1325,13 @@ static int __init bfin5xx_spi_probe(struct platform_device *pdev)
} }
/* Initial and start queue */ /* Initial and start queue */
status = init_queue(drv_data); status = bfin_spi_init_queue(drv_data);
if (status != 0) { if (status != 0) {
dev_err(dev, "problem initializing queue\n"); dev_err(dev, "problem initializing queue\n");
goto out_error_queue_alloc; goto out_error_queue_alloc;
} }
status = start_queue(drv_data); status = bfin_spi_start_queue(drv_data);
if (status != 0) { if (status != 0) {
dev_err(dev, "problem starting queue\n"); dev_err(dev, "problem starting queue\n");
goto out_error_queue_alloc; goto out_error_queue_alloc;
...@@ -1356,7 +1357,7 @@ static int __init bfin5xx_spi_probe(struct platform_device *pdev) ...@@ -1356,7 +1357,7 @@ static int __init bfin5xx_spi_probe(struct platform_device *pdev)
return status; return status;
out_error_queue_alloc: out_error_queue_alloc:
destroy_queue(drv_data); bfin_spi_destroy_queue(drv_data);
out_error_no_dma_ch: out_error_no_dma_ch:
iounmap((void *) drv_data->regs_base); iounmap((void *) drv_data->regs_base);
out_error_ioremap: out_error_ioremap:
...@@ -1367,7 +1368,7 @@ out_error_get_res: ...@@ -1367,7 +1368,7 @@ out_error_get_res:
} }
/* stop hardware and remove the driver */ /* stop hardware and remove the driver */
static int __devexit bfin5xx_spi_remove(struct platform_device *pdev) static int __devexit bfin_spi_remove(struct platform_device *pdev)
{ {
struct driver_data *drv_data = platform_get_drvdata(pdev); struct driver_data *drv_data = platform_get_drvdata(pdev);
int status = 0; int status = 0;
...@@ -1376,7 +1377,7 @@ static int __devexit bfin5xx_spi_remove(struct platform_device *pdev) ...@@ -1376,7 +1377,7 @@ static int __devexit bfin5xx_spi_remove(struct platform_device *pdev)
return 0; return 0;
/* Remove the queue */ /* Remove the queue */
status = destroy_queue(drv_data); status = bfin_spi_destroy_queue(drv_data);
if (status != 0) if (status != 0)
return status; return status;
...@@ -1401,12 +1402,12 @@ static int __devexit bfin5xx_spi_remove(struct platform_device *pdev) ...@@ -1401,12 +1402,12 @@ static int __devexit bfin5xx_spi_remove(struct platform_device *pdev)
} }
#ifdef CONFIG_PM #ifdef CONFIG_PM
static int bfin5xx_spi_suspend(struct platform_device *pdev, pm_message_t state) static int bfin_spi_suspend(struct platform_device *pdev, pm_message_t state)
{ {
struct driver_data *drv_data = platform_get_drvdata(pdev); struct driver_data *drv_data = platform_get_drvdata(pdev);
int status = 0; int status = 0;
status = stop_queue(drv_data); status = bfin_spi_stop_queue(drv_data);
if (status != 0) if (status != 0)
return status; return status;
...@@ -1416,7 +1417,7 @@ static int bfin5xx_spi_suspend(struct platform_device *pdev, pm_message_t state) ...@@ -1416,7 +1417,7 @@ static int bfin5xx_spi_suspend(struct platform_device *pdev, pm_message_t state)
return 0; return 0;
} }
static int bfin5xx_spi_resume(struct platform_device *pdev) static int bfin_spi_resume(struct platform_device *pdev)
{ {
struct driver_data *drv_data = platform_get_drvdata(pdev); struct driver_data *drv_data = platform_get_drvdata(pdev);
int status = 0; int status = 0;
...@@ -1425,7 +1426,7 @@ static int bfin5xx_spi_resume(struct platform_device *pdev) ...@@ -1425,7 +1426,7 @@ static int bfin5xx_spi_resume(struct platform_device *pdev)
bfin_spi_enable(drv_data); bfin_spi_enable(drv_data);
/* Start the queue running */ /* Start the queue running */
status = start_queue(drv_data); status = bfin_spi_start_queue(drv_data);
if (status != 0) { if (status != 0) {
dev_err(&pdev->dev, "problem starting queue (%d)\n", status); dev_err(&pdev->dev, "problem starting queue (%d)\n", status);
return status; return status;
...@@ -1434,29 +1435,29 @@ static int bfin5xx_spi_resume(struct platform_device *pdev) ...@@ -1434,29 +1435,29 @@ static int bfin5xx_spi_resume(struct platform_device *pdev)
return 0; return 0;
} }
#else #else
#define bfin5xx_spi_suspend NULL #define bfin_spi_suspend NULL
#define bfin5xx_spi_resume NULL #define bfin_spi_resume NULL
#endif /* CONFIG_PM */ #endif /* CONFIG_PM */
MODULE_ALIAS("platform:bfin-spi"); MODULE_ALIAS("platform:bfin-spi");
static struct platform_driver bfin5xx_spi_driver = { static struct platform_driver bfin_spi_driver = {
.driver = { .driver = {
.name = DRV_NAME, .name = DRV_NAME,
.owner = THIS_MODULE, .owner = THIS_MODULE,
}, },
.suspend = bfin5xx_spi_suspend, .suspend = bfin_spi_suspend,
.resume = bfin5xx_spi_resume, .resume = bfin_spi_resume,
.remove = __devexit_p(bfin5xx_spi_remove), .remove = __devexit_p(bfin_spi_remove),
}; };
static int __init bfin5xx_spi_init(void) static int __init bfin_spi_init(void)
{ {
return platform_driver_probe(&bfin5xx_spi_driver, bfin5xx_spi_probe); return platform_driver_probe(&bfin_spi_driver, bfin_spi_probe);
} }
module_init(bfin5xx_spi_init); module_init(bfin_spi_init);
static void __exit bfin5xx_spi_exit(void) static void __exit bfin_spi_exit(void)
{ {
platform_driver_unregister(&bfin5xx_spi_driver); platform_driver_unregister(&bfin_spi_driver);
} }
module_exit(bfin5xx_spi_exit); module_exit(bfin_spi_exit);
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