spi/spi-bfin-sport: move word length setup to transfer handler
Each transfer may have its own bits per word. Signed-off-by: Scott Jiang <scott.jiang.linux@gmail.com> Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
This commit is contained in:
Родитель
22ac3e82e1
Коммит
488e1a9de2
|
@ -252,19 +252,15 @@ static void
|
||||||
bfin_sport_spi_restore_state(struct bfin_sport_spi_master_data *drv_data)
|
bfin_sport_spi_restore_state(struct bfin_sport_spi_master_data *drv_data)
|
||||||
{
|
{
|
||||||
struct bfin_sport_spi_slave_data *chip = drv_data->cur_chip;
|
struct bfin_sport_spi_slave_data *chip = drv_data->cur_chip;
|
||||||
unsigned int bits = (drv_data->ops == &bfin_sport_transfer_ops_u8 ? 7 : 15);
|
|
||||||
|
|
||||||
bfin_sport_spi_disable(drv_data);
|
bfin_sport_spi_disable(drv_data);
|
||||||
dev_dbg(drv_data->dev, "restoring spi ctl state\n");
|
dev_dbg(drv_data->dev, "restoring spi ctl state\n");
|
||||||
|
|
||||||
bfin_write(&drv_data->regs->tcr1, chip->ctl_reg);
|
bfin_write(&drv_data->regs->tcr1, chip->ctl_reg);
|
||||||
bfin_write(&drv_data->regs->tcr2, bits);
|
|
||||||
bfin_write(&drv_data->regs->tclkdiv, chip->baud);
|
bfin_write(&drv_data->regs->tclkdiv, chip->baud);
|
||||||
bfin_write(&drv_data->regs->tfsdiv, bits);
|
|
||||||
SSYNC();
|
SSYNC();
|
||||||
|
|
||||||
bfin_write(&drv_data->regs->rcr1, chip->ctl_reg & ~(ITCLK | ITFS));
|
bfin_write(&drv_data->regs->rcr1, chip->ctl_reg & ~(ITCLK | ITFS));
|
||||||
bfin_write(&drv_data->regs->rcr2, bits);
|
|
||||||
SSYNC();
|
SSYNC();
|
||||||
|
|
||||||
bfin_sport_spi_cs_active(chip);
|
bfin_sport_spi_cs_active(chip);
|
||||||
|
@ -425,6 +421,9 @@ bfin_sport_spi_pump_transfers(unsigned long data)
|
||||||
drv_data->ops = &bfin_sport_transfer_ops_u8;
|
drv_data->ops = &bfin_sport_transfer_ops_u8;
|
||||||
else
|
else
|
||||||
drv_data->ops = &bfin_sport_transfer_ops_u16;
|
drv_data->ops = &bfin_sport_transfer_ops_u16;
|
||||||
|
bfin_write(&drv_data->regs->tcr2, bits_per_word - 1);
|
||||||
|
bfin_write(&drv_data->regs->tfsdiv, bits_per_word - 1);
|
||||||
|
bfin_write(&drv_data->regs->rcr2, bits_per_word - 1);
|
||||||
|
|
||||||
drv_data->state = RUNNING_STATE;
|
drv_data->state = RUNNING_STATE;
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче