spi: topcliff-pch: switch to use modern name

Change legacy name master to modern name host or controller.

No functional changed.

Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
Link: https://msgid.link/r/20231128093031.3707034-18-yangyingliang@huawei.com
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
Yang Yingliang 2023-11-28 17:30:22 +08:00 committed by Mark Brown
parent d1d8b09d0a
commit 40daed1470
No known key found for this signature in database
GPG Key ID: 24D68B725D5487D0

View File

@ -124,7 +124,7 @@ struct pch_spi_dma_ctrl {
* struct pch_spi_data - Holds the SPI channel specific details * struct pch_spi_data - Holds the SPI channel specific details
* @io_remap_addr: The remapped PCI base address * @io_remap_addr: The remapped PCI base address
* @io_base_addr: Base address * @io_base_addr: Base address
* @master: Pointer to the SPI master structure * @host: Pointer to the SPI controller structure
* @work: Reference to work queue handler * @work: Reference to work queue handler
* @wait: Wait queue for waking up upon receiving an * @wait: Wait queue for waking up upon receiving an
* interrupt. * interrupt.
@ -161,7 +161,7 @@ struct pch_spi_dma_ctrl {
struct pch_spi_data { struct pch_spi_data {
void __iomem *io_remap_addr; void __iomem *io_remap_addr;
unsigned long io_base_addr; unsigned long io_base_addr;
struct spi_master *master; struct spi_controller *host;
struct work_struct work; struct work_struct work;
wait_queue_head_t wait; wait_queue_head_t wait;
u8 transfer_complete; u8 transfer_complete;
@ -216,48 +216,48 @@ static const struct pci_device_id pch_spi_pcidev_id[] = {
/** /**
* pch_spi_writereg() - Performs register writes * pch_spi_writereg() - Performs register writes
* @master: Pointer to struct spi_master. * @host: Pointer to struct spi_controller.
* @idx: Register offset. * @idx: Register offset.
* @val: Value to be written to register. * @val: Value to be written to register.
*/ */
static inline void pch_spi_writereg(struct spi_master *master, int idx, u32 val) static inline void pch_spi_writereg(struct spi_controller *host, int idx, u32 val)
{ {
struct pch_spi_data *data = spi_master_get_devdata(master); struct pch_spi_data *data = spi_controller_get_devdata(host);
iowrite32(val, (data->io_remap_addr + idx)); iowrite32(val, (data->io_remap_addr + idx));
} }
/** /**
* pch_spi_readreg() - Performs register reads * pch_spi_readreg() - Performs register reads
* @master: Pointer to struct spi_master. * @host: Pointer to struct spi_controller.
* @idx: Register offset. * @idx: Register offset.
*/ */
static inline u32 pch_spi_readreg(struct spi_master *master, int idx) static inline u32 pch_spi_readreg(struct spi_controller *host, int idx)
{ {
struct pch_spi_data *data = spi_master_get_devdata(master); struct pch_spi_data *data = spi_controller_get_devdata(host);
return ioread32(data->io_remap_addr + idx); return ioread32(data->io_remap_addr + idx);
} }
static inline void pch_spi_setclr_reg(struct spi_master *master, int idx, static inline void pch_spi_setclr_reg(struct spi_controller *host, int idx,
u32 set, u32 clr) u32 set, u32 clr)
{ {
u32 tmp = pch_spi_readreg(master, idx); u32 tmp = pch_spi_readreg(host, idx);
tmp = (tmp & ~clr) | set; tmp = (tmp & ~clr) | set;
pch_spi_writereg(master, idx, tmp); pch_spi_writereg(host, idx, tmp);
} }
static void pch_spi_set_master_mode(struct spi_master *master) static void pch_spi_set_host_mode(struct spi_controller *host)
{ {
pch_spi_setclr_reg(master, PCH_SPCR, SPCR_MSTR_BIT, 0); pch_spi_setclr_reg(host, PCH_SPCR, SPCR_MSTR_BIT, 0);
} }
/** /**
* pch_spi_clear_fifo() - Clears the Transmit and Receive FIFOs * pch_spi_clear_fifo() - Clears the Transmit and Receive FIFOs
* @master: Pointer to struct spi_master. * @host: Pointer to struct spi_controller.
*/ */
static void pch_spi_clear_fifo(struct spi_master *master) static void pch_spi_clear_fifo(struct spi_controller *host)
{ {
pch_spi_setclr_reg(master, PCH_SPCR, SPCR_FICLR_BIT, 0); pch_spi_setclr_reg(host, PCH_SPCR, SPCR_FICLR_BIT, 0);
pch_spi_setclr_reg(master, PCH_SPCR, 0, SPCR_FICLR_BIT); pch_spi_setclr_reg(host, PCH_SPCR, 0, SPCR_FICLR_BIT);
} }
static void pch_spi_handler_sub(struct pch_spi_data *data, u32 reg_spsr_val, static void pch_spi_handler_sub(struct pch_spi_data *data, u32 reg_spsr_val,
@ -312,7 +312,7 @@ static void pch_spi_handler_sub(struct pch_spi_data *data, u32 reg_spsr_val,
if (reg_spsr_val & SPSR_FI_BIT) { if (reg_spsr_val & SPSR_FI_BIT) {
if ((tx_index == bpw_len) && (rx_index == tx_index)) { if ((tx_index == bpw_len) && (rx_index == tx_index)) {
/* disable interrupts */ /* disable interrupts */
pch_spi_setclr_reg(data->master, PCH_SPCR, 0, pch_spi_setclr_reg(data->host, PCH_SPCR, 0,
PCH_ALL); PCH_ALL);
/* transfer is completed; /* transfer is completed;
@ -321,7 +321,7 @@ static void pch_spi_handler_sub(struct pch_spi_data *data, u32 reg_spsr_val,
data->transfer_active = false; data->transfer_active = false;
wake_up(&data->wait); wake_up(&data->wait);
} else { } else {
dev_vdbg(&data->master->dev, dev_vdbg(&data->host->dev,
"%s : Transfer is not completed", "%s : Transfer is not completed",
__func__); __func__);
} }
@ -383,10 +383,10 @@ static irqreturn_t pch_spi_handler(int irq, void *dev_id)
/** /**
* pch_spi_set_baud_rate() - Sets SPBR field in SPBRR * pch_spi_set_baud_rate() - Sets SPBR field in SPBRR
* @master: Pointer to struct spi_master. * @host: Pointer to struct spi_controller.
* @speed_hz: Baud rate. * @speed_hz: Baud rate.
*/ */
static void pch_spi_set_baud_rate(struct spi_master *master, u32 speed_hz) static void pch_spi_set_baud_rate(struct spi_controller *host, u32 speed_hz)
{ {
u32 n_spbr = PCH_CLOCK_HZ / (speed_hz * 2); u32 n_spbr = PCH_CLOCK_HZ / (speed_hz * 2);
@ -394,21 +394,21 @@ static void pch_spi_set_baud_rate(struct spi_master *master, u32 speed_hz)
if (n_spbr > PCH_MAX_SPBR) if (n_spbr > PCH_MAX_SPBR)
n_spbr = PCH_MAX_SPBR; n_spbr = PCH_MAX_SPBR;
pch_spi_setclr_reg(master, PCH_SPBRR, n_spbr, MASK_SPBRR_SPBR_BITS); pch_spi_setclr_reg(host, PCH_SPBRR, n_spbr, MASK_SPBRR_SPBR_BITS);
} }
/** /**
* pch_spi_set_bits_per_word() - Sets SIZE field in SPBRR * pch_spi_set_bits_per_word() - Sets SIZE field in SPBRR
* @master: Pointer to struct spi_master. * @host: Pointer to struct spi_controller.
* @bits_per_word: Bits per word for SPI transfer. * @bits_per_word: Bits per word for SPI transfer.
*/ */
static void pch_spi_set_bits_per_word(struct spi_master *master, static void pch_spi_set_bits_per_word(struct spi_controller *host,
u8 bits_per_word) u8 bits_per_word)
{ {
if (bits_per_word == 8) if (bits_per_word == 8)
pch_spi_setclr_reg(master, PCH_SPBRR, 0, SPBRR_SIZE_BIT); pch_spi_setclr_reg(host, PCH_SPBRR, 0, SPBRR_SIZE_BIT);
else else
pch_spi_setclr_reg(master, PCH_SPBRR, SPBRR_SIZE_BIT, 0); pch_spi_setclr_reg(host, PCH_SPBRR, SPBRR_SIZE_BIT, 0);
} }
/** /**
@ -420,12 +420,12 @@ static void pch_spi_setup_transfer(struct spi_device *spi)
u32 flags = 0; u32 flags = 0;
dev_dbg(&spi->dev, "%s SPBRR content =%x setting baud rate=%d\n", dev_dbg(&spi->dev, "%s SPBRR content =%x setting baud rate=%d\n",
__func__, pch_spi_readreg(spi->master, PCH_SPBRR), __func__, pch_spi_readreg(spi->controller, PCH_SPBRR),
spi->max_speed_hz); spi->max_speed_hz);
pch_spi_set_baud_rate(spi->master, spi->max_speed_hz); pch_spi_set_baud_rate(spi->controller, spi->max_speed_hz);
/* set bits per word */ /* set bits per word */
pch_spi_set_bits_per_word(spi->master, spi->bits_per_word); pch_spi_set_bits_per_word(spi->controller, spi->bits_per_word);
if (!(spi->mode & SPI_LSB_FIRST)) if (!(spi->mode & SPI_LSB_FIRST))
flags |= SPCR_LSBF_BIT; flags |= SPCR_LSBF_BIT;
@ -433,29 +433,29 @@ static void pch_spi_setup_transfer(struct spi_device *spi)
flags |= SPCR_CPOL_BIT; flags |= SPCR_CPOL_BIT;
if (spi->mode & SPI_CPHA) if (spi->mode & SPI_CPHA)
flags |= SPCR_CPHA_BIT; flags |= SPCR_CPHA_BIT;
pch_spi_setclr_reg(spi->master, PCH_SPCR, flags, pch_spi_setclr_reg(spi->controller, PCH_SPCR, flags,
(SPCR_LSBF_BIT | SPCR_CPOL_BIT | SPCR_CPHA_BIT)); (SPCR_LSBF_BIT | SPCR_CPOL_BIT | SPCR_CPHA_BIT));
/* Clear the FIFO by toggling FICLR to 1 and back to 0 */ /* Clear the FIFO by toggling FICLR to 1 and back to 0 */
pch_spi_clear_fifo(spi->master); pch_spi_clear_fifo(spi->controller);
} }
/** /**
* pch_spi_reset() - Clears SPI registers * pch_spi_reset() - Clears SPI registers
* @master: Pointer to struct spi_master. * @host: Pointer to struct spi_controller.
*/ */
static void pch_spi_reset(struct spi_master *master) static void pch_spi_reset(struct spi_controller *host)
{ {
/* write 1 to reset SPI */ /* write 1 to reset SPI */
pch_spi_writereg(master, PCH_SRST, 0x1); pch_spi_writereg(host, PCH_SRST, 0x1);
/* clear reset */ /* clear reset */
pch_spi_writereg(master, PCH_SRST, 0x0); pch_spi_writereg(host, PCH_SRST, 0x0);
} }
static int pch_spi_transfer(struct spi_device *pspi, struct spi_message *pmsg) static int pch_spi_transfer(struct spi_device *pspi, struct spi_message *pmsg)
{ {
struct pch_spi_data *data = spi_master_get_devdata(pspi->master); struct pch_spi_data *data = spi_controller_get_devdata(pspi->controller);
int retval; int retval;
unsigned long flags; unsigned long flags;
@ -524,15 +524,15 @@ static void pch_spi_set_tx(struct pch_spi_data *data, int *bpw)
/* set baud rate if needed */ /* set baud rate if needed */
if (data->cur_trans->speed_hz) { if (data->cur_trans->speed_hz) {
dev_dbg(&data->master->dev, "%s:setting baud rate\n", __func__); dev_dbg(&data->host->dev, "%s:setting baud rate\n", __func__);
pch_spi_set_baud_rate(data->master, data->cur_trans->speed_hz); pch_spi_set_baud_rate(data->host, data->cur_trans->speed_hz);
} }
/* set bits per word if needed */ /* set bits per word if needed */
if (data->cur_trans->bits_per_word && if (data->cur_trans->bits_per_word &&
(data->current_msg->spi->bits_per_word != data->cur_trans->bits_per_word)) { (data->current_msg->spi->bits_per_word != data->cur_trans->bits_per_word)) {
dev_dbg(&data->master->dev, "%s:set bits per word\n", __func__); dev_dbg(&data->host->dev, "%s:set bits per word\n", __func__);
pch_spi_set_bits_per_word(data->master, pch_spi_set_bits_per_word(data->host,
data->cur_trans->bits_per_word); data->cur_trans->bits_per_word);
*bpw = data->cur_trans->bits_per_word; *bpw = data->cur_trans->bits_per_word;
} else { } else {
@ -590,13 +590,13 @@ static void pch_spi_set_tx(struct pch_spi_data *data, int *bpw)
if (n_writes > PCH_MAX_FIFO_DEPTH) if (n_writes > PCH_MAX_FIFO_DEPTH)
n_writes = PCH_MAX_FIFO_DEPTH; n_writes = PCH_MAX_FIFO_DEPTH;
dev_dbg(&data->master->dev, dev_dbg(&data->host->dev,
"\n%s:Pulling down SSN low - writing 0x2 to SSNXCR\n", "\n%s:Pulling down SSN low - writing 0x2 to SSNXCR\n",
__func__); __func__);
pch_spi_writereg(data->master, PCH_SSNXCR, SSN_LOW); pch_spi_writereg(data->host, PCH_SSNXCR, SSN_LOW);
for (j = 0; j < n_writes; j++) for (j = 0; j < n_writes; j++)
pch_spi_writereg(data->master, PCH_SPDWR, data->pkt_tx_buff[j]); pch_spi_writereg(data->host, PCH_SPDWR, data->pkt_tx_buff[j]);
/* update tx_index */ /* update tx_index */
data->tx_index = j; data->tx_index = j;
@ -609,13 +609,13 @@ static void pch_spi_set_tx(struct pch_spi_data *data, int *bpw)
static void pch_spi_nomore_transfer(struct pch_spi_data *data) static void pch_spi_nomore_transfer(struct pch_spi_data *data)
{ {
struct spi_message *pmsg, *tmp; struct spi_message *pmsg, *tmp;
dev_dbg(&data->master->dev, "%s called\n", __func__); dev_dbg(&data->host->dev, "%s called\n", __func__);
/* Invoke complete callback /* Invoke complete callback
* [To the spi core..indicating end of transfer] */ * [To the spi core..indicating end of transfer] */
data->current_msg->status = 0; data->current_msg->status = 0;
if (data->current_msg->complete) { if (data->current_msg->complete) {
dev_dbg(&data->master->dev, dev_dbg(&data->host->dev,
"%s:Invoking callback of SPI core\n", __func__); "%s:Invoking callback of SPI core\n", __func__);
data->current_msg->complete(data->current_msg->context); data->current_msg->complete(data->current_msg->context);
} }
@ -623,7 +623,7 @@ static void pch_spi_nomore_transfer(struct pch_spi_data *data)
/* update status in global variable */ /* update status in global variable */
data->bcurrent_msg_processing = false; data->bcurrent_msg_processing = false;
dev_dbg(&data->master->dev, dev_dbg(&data->host->dev,
"%s:data->bcurrent_msg_processing = false\n", __func__); "%s:data->bcurrent_msg_processing = false\n", __func__);
data->current_msg = NULL; data->current_msg = NULL;
@ -638,11 +638,11 @@ static void pch_spi_nomore_transfer(struct pch_spi_data *data)
* bpw;sfer requests in the current message or there are * bpw;sfer requests in the current message or there are
*more messages) *more messages)
*/ */
dev_dbg(&data->master->dev, "%s:Invoke queue_work\n", __func__); dev_dbg(&data->host->dev, "%s:Invoke queue_work\n", __func__);
schedule_work(&data->work); schedule_work(&data->work);
} else if (data->board_dat->suspend_sts || } else if (data->board_dat->suspend_sts ||
data->status == STATUS_EXITING) { data->status == STATUS_EXITING) {
dev_dbg(&data->master->dev, dev_dbg(&data->host->dev,
"%s suspend/remove initiated, flushing queue\n", "%s suspend/remove initiated, flushing queue\n",
__func__); __func__);
list_for_each_entry_safe(pmsg, tmp, data->queue.next, queue) { list_for_each_entry_safe(pmsg, tmp, data->queue.next, queue) {
@ -662,14 +662,14 @@ static void pch_spi_set_ir(struct pch_spi_data *data)
/* enable interrupts, set threshold, enable SPI */ /* enable interrupts, set threshold, enable SPI */
if ((data->bpw_len) > PCH_MAX_FIFO_DEPTH) if ((data->bpw_len) > PCH_MAX_FIFO_DEPTH)
/* set receive threshold to PCH_RX_THOLD */ /* set receive threshold to PCH_RX_THOLD */
pch_spi_setclr_reg(data->master, PCH_SPCR, pch_spi_setclr_reg(data->host, PCH_SPCR,
PCH_RX_THOLD << SPCR_RFIC_FIELD | PCH_RX_THOLD << SPCR_RFIC_FIELD |
SPCR_FIE_BIT | SPCR_RFIE_BIT | SPCR_FIE_BIT | SPCR_RFIE_BIT |
SPCR_ORIE_BIT | SPCR_SPE_BIT, SPCR_ORIE_BIT | SPCR_SPE_BIT,
MASK_RFIC_SPCR_BITS | PCH_ALL); MASK_RFIC_SPCR_BITS | PCH_ALL);
else else
/* set receive threshold to maximum */ /* set receive threshold to maximum */
pch_spi_setclr_reg(data->master, PCH_SPCR, pch_spi_setclr_reg(data->host, PCH_SPCR,
PCH_RX_THOLD_MAX << SPCR_RFIC_FIELD | PCH_RX_THOLD_MAX << SPCR_RFIC_FIELD |
SPCR_FIE_BIT | SPCR_ORIE_BIT | SPCR_FIE_BIT | SPCR_ORIE_BIT |
SPCR_SPE_BIT, SPCR_SPE_BIT,
@ -677,18 +677,18 @@ static void pch_spi_set_ir(struct pch_spi_data *data)
/* Wait until the transfer completes; go to sleep after /* Wait until the transfer completes; go to sleep after
initiating the transfer. */ initiating the transfer. */
dev_dbg(&data->master->dev, dev_dbg(&data->host->dev,
"%s:waiting for transfer to get over\n", __func__); "%s:waiting for transfer to get over\n", __func__);
wait_event_interruptible(data->wait, data->transfer_complete); wait_event_interruptible(data->wait, data->transfer_complete);
/* clear all interrupts */ /* clear all interrupts */
pch_spi_writereg(data->master, PCH_SPSR, pch_spi_writereg(data->host, PCH_SPSR,
pch_spi_readreg(data->master, PCH_SPSR)); pch_spi_readreg(data->host, PCH_SPSR));
/* Disable interrupts and SPI transfer */ /* Disable interrupts and SPI transfer */
pch_spi_setclr_reg(data->master, PCH_SPCR, 0, PCH_ALL | SPCR_SPE_BIT); pch_spi_setclr_reg(data->host, PCH_SPCR, 0, PCH_ALL | SPCR_SPE_BIT);
/* clear FIFO */ /* clear FIFO */
pch_spi_clear_fifo(data->master); pch_spi_clear_fifo(data->host);
} }
static void pch_spi_copy_rx_data(struct pch_spi_data *data, int bpw) static void pch_spi_copy_rx_data(struct pch_spi_data *data, int bpw)
@ -750,25 +750,25 @@ static int pch_spi_start_transfer(struct pch_spi_data *data)
spin_lock_irqsave(&data->lock, flags); spin_lock_irqsave(&data->lock, flags);
/* disable interrupts, SPI set enable */ /* disable interrupts, SPI set enable */
pch_spi_setclr_reg(data->master, PCH_SPCR, SPCR_SPE_BIT, PCH_ALL); pch_spi_setclr_reg(data->host, PCH_SPCR, SPCR_SPE_BIT, PCH_ALL);
spin_unlock_irqrestore(&data->lock, flags); spin_unlock_irqrestore(&data->lock, flags);
/* Wait until the transfer completes; go to sleep after /* Wait until the transfer completes; go to sleep after
initiating the transfer. */ initiating the transfer. */
dev_dbg(&data->master->dev, dev_dbg(&data->host->dev,
"%s:waiting for transfer to get over\n", __func__); "%s:waiting for transfer to get over\n", __func__);
rtn = wait_event_interruptible_timeout(data->wait, rtn = wait_event_interruptible_timeout(data->wait,
data->transfer_complete, data->transfer_complete,
msecs_to_jiffies(2 * HZ)); msecs_to_jiffies(2 * HZ));
if (!rtn) if (!rtn)
dev_err(&data->master->dev, dev_err(&data->host->dev,
"%s wait-event timeout\n", __func__); "%s wait-event timeout\n", __func__);
dma_sync_sg_for_cpu(&data->master->dev, dma->sg_rx_p, dma->nent, dma_sync_sg_for_cpu(&data->host->dev, dma->sg_rx_p, dma->nent,
DMA_FROM_DEVICE); DMA_FROM_DEVICE);
dma_sync_sg_for_cpu(&data->master->dev, dma->sg_tx_p, dma->nent, dma_sync_sg_for_cpu(&data->host->dev, dma->sg_tx_p, dma->nent,
DMA_FROM_DEVICE); DMA_FROM_DEVICE);
memset(data->dma.tx_buf_virt, 0, PAGE_SIZE); memset(data->dma.tx_buf_virt, 0, PAGE_SIZE);
@ -780,14 +780,14 @@ static int pch_spi_start_transfer(struct pch_spi_data *data)
spin_lock_irqsave(&data->lock, flags); spin_lock_irqsave(&data->lock, flags);
/* clear fifo threshold, disable interrupts, disable SPI transfer */ /* clear fifo threshold, disable interrupts, disable SPI transfer */
pch_spi_setclr_reg(data->master, PCH_SPCR, 0, pch_spi_setclr_reg(data->host, PCH_SPCR, 0,
MASK_RFIC_SPCR_BITS | MASK_TFIC_SPCR_BITS | PCH_ALL | MASK_RFIC_SPCR_BITS | MASK_TFIC_SPCR_BITS | PCH_ALL |
SPCR_SPE_BIT); SPCR_SPE_BIT);
/* clear all interrupts */ /* clear all interrupts */
pch_spi_writereg(data->master, PCH_SPSR, pch_spi_writereg(data->host, PCH_SPSR,
pch_spi_readreg(data->master, PCH_SPSR)); pch_spi_readreg(data->host, PCH_SPSR));
/* clear FIFO */ /* clear FIFO */
pch_spi_clear_fifo(data->master); pch_spi_clear_fifo(data->host);
spin_unlock_irqrestore(&data->lock, flags); spin_unlock_irqrestore(&data->lock, flags);
@ -846,7 +846,7 @@ static void pch_spi_request_dma(struct pch_spi_data *data, int bpw)
param->width = width; param->width = width;
chan = dma_request_channel(mask, pch_spi_filter, param); chan = dma_request_channel(mask, pch_spi_filter, param);
if (!chan) { if (!chan) {
dev_err(&data->master->dev, dev_err(&data->host->dev,
"ERROR: dma_request_channel FAILS(Tx)\n"); "ERROR: dma_request_channel FAILS(Tx)\n");
goto out; goto out;
} }
@ -860,7 +860,7 @@ static void pch_spi_request_dma(struct pch_spi_data *data, int bpw)
param->width = width; param->width = width;
chan = dma_request_channel(mask, pch_spi_filter, param); chan = dma_request_channel(mask, pch_spi_filter, param);
if (!chan) { if (!chan) {
dev_err(&data->master->dev, dev_err(&data->host->dev,
"ERROR: dma_request_channel FAILS(Rx)\n"); "ERROR: dma_request_channel FAILS(Rx)\n");
dma_release_channel(dma->chan_tx); dma_release_channel(dma->chan_tx);
dma->chan_tx = NULL; dma->chan_tx = NULL;
@ -913,9 +913,9 @@ static void pch_spi_handle_dma(struct pch_spi_data *data, int *bpw)
/* set baud rate if needed */ /* set baud rate if needed */
if (data->cur_trans->speed_hz) { if (data->cur_trans->speed_hz) {
dev_dbg(&data->master->dev, "%s:setting baud rate\n", __func__); dev_dbg(&data->host->dev, "%s:setting baud rate\n", __func__);
spin_lock_irqsave(&data->lock, flags); spin_lock_irqsave(&data->lock, flags);
pch_spi_set_baud_rate(data->master, data->cur_trans->speed_hz); pch_spi_set_baud_rate(data->host, data->cur_trans->speed_hz);
spin_unlock_irqrestore(&data->lock, flags); spin_unlock_irqrestore(&data->lock, flags);
} }
@ -923,9 +923,9 @@ static void pch_spi_handle_dma(struct pch_spi_data *data, int *bpw)
if (data->cur_trans->bits_per_word && if (data->cur_trans->bits_per_word &&
(data->current_msg->spi->bits_per_word != (data->current_msg->spi->bits_per_word !=
data->cur_trans->bits_per_word)) { data->cur_trans->bits_per_word)) {
dev_dbg(&data->master->dev, "%s:set bits per word\n", __func__); dev_dbg(&data->host->dev, "%s:set bits per word\n", __func__);
spin_lock_irqsave(&data->lock, flags); spin_lock_irqsave(&data->lock, flags);
pch_spi_set_bits_per_word(data->master, pch_spi_set_bits_per_word(data->host,
data->cur_trans->bits_per_word); data->cur_trans->bits_per_word);
spin_unlock_irqrestore(&data->lock, flags); spin_unlock_irqrestore(&data->lock, flags);
*bpw = data->cur_trans->bits_per_word; *bpw = data->cur_trans->bits_per_word;
@ -969,12 +969,12 @@ static void pch_spi_handle_dma(struct pch_spi_data *data, int *bpw)
size = data->bpw_len; size = data->bpw_len;
rem = data->bpw_len; rem = data->bpw_len;
} }
dev_dbg(&data->master->dev, "%s num=%d size=%d rem=%d\n", dev_dbg(&data->host->dev, "%s num=%d size=%d rem=%d\n",
__func__, num, size, rem); __func__, num, size, rem);
spin_lock_irqsave(&data->lock, flags); spin_lock_irqsave(&data->lock, flags);
/* set receive fifo threshold and transmit fifo threshold */ /* set receive fifo threshold and transmit fifo threshold */
pch_spi_setclr_reg(data->master, PCH_SPCR, pch_spi_setclr_reg(data->host, PCH_SPCR,
((size - 1) << SPCR_RFIC_FIELD) | ((size - 1) << SPCR_RFIC_FIELD) |
(PCH_TX_THOLD << SPCR_TFIC_FIELD), (PCH_TX_THOLD << SPCR_TFIC_FIELD),
MASK_RFIC_SPCR_BITS | MASK_TFIC_SPCR_BITS); MASK_RFIC_SPCR_BITS | MASK_TFIC_SPCR_BITS);
@ -1016,11 +1016,11 @@ static void pch_spi_handle_dma(struct pch_spi_data *data, int *bpw)
num, DMA_DEV_TO_MEM, num, DMA_DEV_TO_MEM,
DMA_PREP_INTERRUPT | DMA_CTRL_ACK); DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
if (!desc_rx) { if (!desc_rx) {
dev_err(&data->master->dev, dev_err(&data->host->dev,
"%s:dmaengine_prep_slave_sg Failed\n", __func__); "%s:dmaengine_prep_slave_sg Failed\n", __func__);
return; return;
} }
dma_sync_sg_for_device(&data->master->dev, sg, num, DMA_FROM_DEVICE); dma_sync_sg_for_device(&data->host->dev, sg, num, DMA_FROM_DEVICE);
desc_rx->callback = pch_dma_rx_complete; desc_rx->callback = pch_dma_rx_complete;
desc_rx->callback_param = data; desc_rx->callback_param = data;
dma->nent = num; dma->nent = num;
@ -1078,20 +1078,20 @@ static void pch_spi_handle_dma(struct pch_spi_data *data, int *bpw)
sg, num, DMA_MEM_TO_DEV, sg, num, DMA_MEM_TO_DEV,
DMA_PREP_INTERRUPT | DMA_CTRL_ACK); DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
if (!desc_tx) { if (!desc_tx) {
dev_err(&data->master->dev, dev_err(&data->host->dev,
"%s:dmaengine_prep_slave_sg Failed\n", __func__); "%s:dmaengine_prep_slave_sg Failed\n", __func__);
return; return;
} }
dma_sync_sg_for_device(&data->master->dev, sg, num, DMA_TO_DEVICE); dma_sync_sg_for_device(&data->host->dev, sg, num, DMA_TO_DEVICE);
desc_tx->callback = NULL; desc_tx->callback = NULL;
desc_tx->callback_param = data; desc_tx->callback_param = data;
dma->nent = num; dma->nent = num;
dma->desc_tx = desc_tx; dma->desc_tx = desc_tx;
dev_dbg(&data->master->dev, "%s:Pulling down SSN low - writing 0x2 to SSNXCR\n", __func__); dev_dbg(&data->host->dev, "%s:Pulling down SSN low - writing 0x2 to SSNXCR\n", __func__);
spin_lock_irqsave(&data->lock, flags); spin_lock_irqsave(&data->lock, flags);
pch_spi_writereg(data->master, PCH_SSNXCR, SSN_LOW); pch_spi_writereg(data->host, PCH_SSNXCR, SSN_LOW);
desc_rx->tx_submit(desc_rx); desc_rx->tx_submit(desc_rx);
desc_tx->tx_submit(desc_tx); desc_tx->tx_submit(desc_tx);
spin_unlock_irqrestore(&data->lock, flags); spin_unlock_irqrestore(&data->lock, flags);
@ -1107,12 +1107,12 @@ static void pch_spi_process_messages(struct work_struct *pwork)
int bpw; int bpw;
data = container_of(pwork, struct pch_spi_data, work); data = container_of(pwork, struct pch_spi_data, work);
dev_dbg(&data->master->dev, "%s data initialized\n", __func__); dev_dbg(&data->host->dev, "%s data initialized\n", __func__);
spin_lock(&data->lock); spin_lock(&data->lock);
/* check if suspend has been initiated;if yes flush queue */ /* check if suspend has been initiated;if yes flush queue */
if (data->board_dat->suspend_sts || (data->status == STATUS_EXITING)) { if (data->board_dat->suspend_sts || (data->status == STATUS_EXITING)) {
dev_dbg(&data->master->dev, dev_dbg(&data->host->dev,
"%s suspend/remove initiated, flushing queue\n", __func__); "%s suspend/remove initiated, flushing queue\n", __func__);
list_for_each_entry_safe(pmsg, tmp, data->queue.next, queue) { list_for_each_entry_safe(pmsg, tmp, data->queue.next, queue) {
pmsg->status = -EIO; pmsg->status = -EIO;
@ -1132,7 +1132,7 @@ static void pch_spi_process_messages(struct work_struct *pwork)
} }
data->bcurrent_msg_processing = true; data->bcurrent_msg_processing = true;
dev_dbg(&data->master->dev, dev_dbg(&data->host->dev,
"%s Set data->bcurrent_msg_processing= true\n", __func__); "%s Set data->bcurrent_msg_processing= true\n", __func__);
/* Get the message from the queue and delete it from there. */ /* Get the message from the queue and delete it from there. */
@ -1150,7 +1150,7 @@ static void pch_spi_process_messages(struct work_struct *pwork)
if (data->use_dma) if (data->use_dma)
pch_spi_request_dma(data, pch_spi_request_dma(data,
data->current_msg->spi->bits_per_word); data->current_msg->spi->bits_per_word);
pch_spi_writereg(data->master, PCH_SSNXCR, SSN_NO_CONTROL); pch_spi_writereg(data->host, PCH_SSNXCR, SSN_NO_CONTROL);
do { do {
int cnt; int cnt;
/* If we are already processing a message get the next /* If we are already processing a message get the next
@ -1161,14 +1161,14 @@ static void pch_spi_process_messages(struct work_struct *pwork)
data->cur_trans = data->cur_trans =
list_entry(data->current_msg->transfers.next, list_entry(data->current_msg->transfers.next,
struct spi_transfer, transfer_list); struct spi_transfer, transfer_list);
dev_dbg(&data->master->dev, dev_dbg(&data->host->dev,
"%s :Getting 1st transfer message\n", "%s :Getting 1st transfer message\n",
__func__); __func__);
} else { } else {
data->cur_trans = data->cur_trans =
list_entry(data->cur_trans->transfer_list.next, list_entry(data->cur_trans->transfer_list.next,
struct spi_transfer, transfer_list); struct spi_transfer, transfer_list);
dev_dbg(&data->master->dev, dev_dbg(&data->host->dev,
"%s :Getting next transfer message\n", "%s :Getting next transfer message\n",
__func__); __func__);
} }
@ -1210,7 +1210,7 @@ static void pch_spi_process_messages(struct work_struct *pwork)
data->cur_trans->len = data->save_total_len; data->cur_trans->len = data->save_total_len;
data->current_msg->actual_length += data->cur_trans->len; data->current_msg->actual_length += data->cur_trans->len;
dev_dbg(&data->master->dev, dev_dbg(&data->host->dev,
"%s:data->current_msg->actual_length=%d\n", "%s:data->current_msg->actual_length=%d\n",
__func__, data->current_msg->actual_length); __func__, data->current_msg->actual_length);
@ -1229,7 +1229,7 @@ static void pch_spi_process_messages(struct work_struct *pwork)
} while (data->cur_trans != NULL); } while (data->cur_trans != NULL);
out: out:
pch_spi_writereg(data->master, PCH_SSNXCR, SSN_HIGH); pch_spi_writereg(data->host, PCH_SSNXCR, SSN_HIGH);
if (data->use_dma) if (data->use_dma)
pch_spi_release_dma(data); pch_spi_release_dma(data);
} }
@ -1248,7 +1248,7 @@ static int pch_spi_get_resources(struct pch_spi_board_data *board_dat,
dev_dbg(&board_dat->pdev->dev, "%s ENTRY\n", __func__); dev_dbg(&board_dat->pdev->dev, "%s ENTRY\n", __func__);
/* reset PCH SPI h/w */ /* reset PCH SPI h/w */
pch_spi_reset(data->master); pch_spi_reset(data->host);
dev_dbg(&board_dat->pdev->dev, dev_dbg(&board_dat->pdev->dev,
"%s pch_spi_reset invoked successfully\n", __func__); "%s pch_spi_reset invoked successfully\n", __func__);
@ -1297,22 +1297,22 @@ static int pch_alloc_dma_buf(struct pch_spi_board_data *board_dat,
static int pch_spi_pd_probe(struct platform_device *plat_dev) static int pch_spi_pd_probe(struct platform_device *plat_dev)
{ {
int ret; int ret;
struct spi_master *master; struct spi_controller *host;
struct pch_spi_board_data *board_dat = dev_get_platdata(&plat_dev->dev); struct pch_spi_board_data *board_dat = dev_get_platdata(&plat_dev->dev);
struct pch_spi_data *data; struct pch_spi_data *data;
dev_dbg(&plat_dev->dev, "%s:debug\n", __func__); dev_dbg(&plat_dev->dev, "%s:debug\n", __func__);
master = spi_alloc_master(&board_dat->pdev->dev, host = spi_alloc_host(&board_dat->pdev->dev,
sizeof(struct pch_spi_data)); sizeof(struct pch_spi_data));
if (!master) { if (!host) {
dev_err(&plat_dev->dev, "spi_alloc_master[%d] failed.\n", dev_err(&plat_dev->dev, "spi_alloc_host[%d] failed.\n",
plat_dev->id); plat_dev->id);
return -ENOMEM; return -ENOMEM;
} }
data = spi_master_get_devdata(master); data = spi_controller_get_devdata(host);
data->master = master; data->host = host;
platform_set_drvdata(plat_dev, data); platform_set_drvdata(plat_dev, data);
@ -1330,13 +1330,13 @@ static int pch_spi_pd_probe(struct platform_device *plat_dev)
dev_dbg(&plat_dev->dev, "[ch%d] remap_addr=%p\n", dev_dbg(&plat_dev->dev, "[ch%d] remap_addr=%p\n",
plat_dev->id, data->io_remap_addr); plat_dev->id, data->io_remap_addr);
/* initialize members of SPI master */ /* initialize members of SPI host */
master->num_chipselect = PCH_MAX_CS; host->num_chipselect = PCH_MAX_CS;
master->transfer = pch_spi_transfer; host->transfer = pch_spi_transfer;
master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_LSB_FIRST; host->mode_bits = SPI_CPOL | SPI_CPHA | SPI_LSB_FIRST;
master->bits_per_word_mask = SPI_BPW_MASK(8) | SPI_BPW_MASK(16); host->bits_per_word_mask = SPI_BPW_MASK(8) | SPI_BPW_MASK(16);
master->max_speed_hz = PCH_MAX_BAUDRATE; host->max_speed_hz = PCH_MAX_BAUDRATE;
master->flags = SPI_CONTROLLER_MUST_RX | SPI_CONTROLLER_MUST_TX; host->flags = SPI_CONTROLLER_MUST_RX | SPI_CONTROLLER_MUST_TX;
data->board_dat = board_dat; data->board_dat = board_dat;
data->plat_dev = plat_dev; data->plat_dev = plat_dev;
@ -1365,25 +1365,25 @@ static int pch_spi_pd_probe(struct platform_device *plat_dev)
} }
data->irq_reg_sts = true; data->irq_reg_sts = true;
pch_spi_set_master_mode(master); pch_spi_set_host_mode(host);
if (use_dma) { if (use_dma) {
dev_info(&plat_dev->dev, "Use DMA for data transfers\n"); dev_info(&plat_dev->dev, "Use DMA for data transfers\n");
ret = pch_alloc_dma_buf(board_dat, data); ret = pch_alloc_dma_buf(board_dat, data);
if (ret) if (ret)
goto err_spi_register_master; goto err_spi_register_controller;
} }
ret = spi_register_master(master); ret = spi_register_controller(host);
if (ret != 0) { if (ret != 0) {
dev_err(&plat_dev->dev, dev_err(&plat_dev->dev,
"%s spi_register_master FAILED\n", __func__); "%s spi_register_controller FAILED\n", __func__);
goto err_spi_register_master; goto err_spi_register_controller;
} }
return 0; return 0;
err_spi_register_master: err_spi_register_controller:
pch_free_dma_buf(board_dat, data); pch_free_dma_buf(board_dat, data);
free_irq(board_dat->pdev->irq, data); free_irq(board_dat->pdev->irq, data);
err_request_irq: err_request_irq:
@ -1391,7 +1391,7 @@ err_request_irq:
err_spi_get_resources: err_spi_get_resources:
pci_iounmap(board_dat->pdev, data->io_remap_addr); pci_iounmap(board_dat->pdev, data->io_remap_addr);
err_pci_iomap: err_pci_iomap:
spi_master_put(master); spi_controller_put(host);
return ret; return ret;
} }
@ -1427,13 +1427,13 @@ static void pch_spi_pd_remove(struct platform_device *plat_dev)
/* disable interrupts & free IRQ */ /* disable interrupts & free IRQ */
if (data->irq_reg_sts) { if (data->irq_reg_sts) {
/* disable interrupts */ /* disable interrupts */
pch_spi_setclr_reg(data->master, PCH_SPCR, 0, PCH_ALL); pch_spi_setclr_reg(data->host, PCH_SPCR, 0, PCH_ALL);
data->irq_reg_sts = false; data->irq_reg_sts = false;
free_irq(board_dat->pdev->irq, data); free_irq(board_dat->pdev->irq, data);
} }
pci_iounmap(board_dat->pdev, data->io_remap_addr); pci_iounmap(board_dat->pdev, data->io_remap_addr);
spi_unregister_master(data->master); spi_unregister_controller(data->host);
} }
#ifdef CONFIG_PM #ifdef CONFIG_PM
static int pch_spi_pd_suspend(struct platform_device *pd_dev, static int pch_spi_pd_suspend(struct platform_device *pd_dev,
@ -1463,8 +1463,8 @@ static int pch_spi_pd_suspend(struct platform_device *pd_dev,
/* Free IRQ */ /* Free IRQ */
if (data->irq_reg_sts) { if (data->irq_reg_sts) {
/* disable all interrupts */ /* disable all interrupts */
pch_spi_setclr_reg(data->master, PCH_SPCR, 0, PCH_ALL); pch_spi_setclr_reg(data->host, PCH_SPCR, 0, PCH_ALL);
pch_spi_reset(data->master); pch_spi_reset(data->host);
free_irq(board_dat->pdev->irq, data); free_irq(board_dat->pdev->irq, data);
data->irq_reg_sts = false; data->irq_reg_sts = false;
@ -1498,8 +1498,8 @@ static int pch_spi_pd_resume(struct platform_device *pd_dev)
} }
/* reset PCH SPI h/w */ /* reset PCH SPI h/w */
pch_spi_reset(data->master); pch_spi_reset(data->host);
pch_spi_set_master_mode(data->master); pch_spi_set_host_mode(data->host);
data->irq_reg_sts = true; data->irq_reg_sts = true;
} }
return 0; return 0;