From: Mark Brown Date: Wed, 4 Nov 2015 11:02:12 +0000 (+0000) Subject: Merge remote-tracking branches 'spi/topic/omap-100k', 'spi/topic/omap-uwire', 'spi... X-Git-Tag: v4.4-rc1~113^2~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4c84518523f888994c618585021c76fa499d465e;p=platform%2Fkernel%2Flinux-exynos.git Merge remote-tracking branches 'spi/topic/omap-100k', 'spi/topic/omap-uwire', 'spi/topic/owner', 'spi/topic/pxa' and 'spi/topic/pxa2xx' into spi-next --- 4c84518523f888994c618585021c76fa499d465e diff --cc drivers/spi/spi-pxa2xx.c index a8ef38e,fdd79197,fdd79197,fdd79197,fdd79197,2e95108..b25dc71 --- a/drivers/spi/spi-pxa2xx.c +++ b/drivers/spi/spi-pxa2xx.c @@@@@@@ -922,53 -918,53 -918,53 -918,53 -918,53 -960,56 +964,56 @@@@@@@ static void pump_transfers(unsigned lon drv_data->read = drv_data->rx ? chip->read : null_reader; /* Change speed and bit per word on a per transfer */ ----- cr0 = chip->cr0; ----- if (transfer->speed_hz || transfer->bits_per_word) { ----- ----- bits = chip->bits_per_word; ----- speed = chip->speed_hz; ----- ----- if (transfer->speed_hz) ----- speed = transfer->speed_hz; ----- ----- if (transfer->bits_per_word) ----- bits = transfer->bits_per_word; ----- ----- clk_div = pxa2xx_ssp_get_clk_div(drv_data, chip, speed); ----- ----- if (bits <= 8) { ----- drv_data->n_bytes = 1; ----- drv_data->read = drv_data->read != null_reader ? ----- u8_reader : null_reader; ----- drv_data->write = drv_data->write != null_writer ? ----- u8_writer : null_writer; ----- } else if (bits <= 16) { ----- drv_data->n_bytes = 2; ----- drv_data->read = drv_data->read != null_reader ? ----- u16_reader : null_reader; ----- drv_data->write = drv_data->write != null_writer ? ----- u16_writer : null_writer; ----- } else if (bits <= 32) { ----- drv_data->n_bytes = 4; ----- drv_data->read = drv_data->read != null_reader ? ----- u32_reader : null_reader; ----- drv_data->write = drv_data->write != null_writer ? ----- u32_writer : null_writer; ----- } ----- /* if bits/word is changed in dma mode, then must check the ----- * thresholds and burst also */ ----- if (chip->enable_dma) { ----- if (pxa2xx_spi_set_dma_burst_and_threshold(chip, ----- message->spi, ----- bits, &dma_burst, ----- &dma_thresh)) ----- dev_warn_ratelimited(&message->spi->dev, ----- "pump_transfers: DMA burst size reduced to match bits_per_word\n"); ----- } ----- ----- cr0 = pxa2xx_configure_sscr0(drv_data, clk_div, bits); +++++ bits = transfer->bits_per_word; +++++ speed = transfer->speed_hz; +++++ +++++ clk_div = pxa2xx_ssp_get_clk_div(drv_data, speed); +++++ +++++ if (bits <= 8) { +++++ drv_data->n_bytes = 1; +++++ drv_data->read = drv_data->read != null_reader ? +++++ u8_reader : null_reader; +++++ drv_data->write = drv_data->write != null_writer ? +++++ u8_writer : null_writer; +++++ } else if (bits <= 16) { +++++ drv_data->n_bytes = 2; +++++ drv_data->read = drv_data->read != null_reader ? +++++ u16_reader : null_reader; +++++ drv_data->write = drv_data->write != null_writer ? +++++ u16_writer : null_writer; +++++ } else if (bits <= 32) { +++++ drv_data->n_bytes = 4; +++++ drv_data->read = drv_data->read != null_reader ? +++++ u32_reader : null_reader; +++++ drv_data->write = drv_data->write != null_writer ? +++++ u32_writer : null_writer; ++++ } +++++ /* +++++ * if bits/word is changed in dma mode, then must check the +++++ * thresholds and burst also +++++ */ +++++ if (chip->enable_dma) { +++++ if (pxa2xx_spi_set_dma_burst_and_threshold(chip, +++++ message->spi, +++++ bits, &dma_burst, +++++ &dma_thresh)) +++++ dev_warn_ratelimited(&message->spi->dev, +++++ "pump_transfers: DMA burst size reduced to match bits_per_word\n"); + } + +++++ /* NOTE: PXA25x_SSP _could_ use external clocking ... */ +++++ cr0 = pxa2xx_configure_sscr0(drv_data, clk_div, bits); +++++ if (!pxa25x_ssp_comp(drv_data)) +++++ dev_dbg(&message->spi->dev, "%u Hz actual, %s\n", +++++ drv_data->master->max_speed_hz +++++ / (1 + ((cr0 & SSCR0_SCR(0xfff)) >> 8)), +++++ chip->enable_dma ? "DMA" : "PIO"); +++++ else +++++ dev_dbg(&message->spi->dev, "%u Hz actual, %s\n", +++++ drv_data->master->max_speed_hz / 2 +++++ / (1 + ((cr0 & SSCR0_SCR(0x0ff)) >> 8)), +++++ chip->enable_dma ? "DMA" : "PIO"); ++++ message->state = RUNNING_STATE; drv_data->dma_mapped = 0; diff --cc drivers/spi/spi-pxa2xx.h index 0a9b639,0a9b639,0a9b639,0a9b639,99c4d8a,514cf97..58efa98 --- a/drivers/spi/spi-pxa2xx.h +++ b/drivers/spi/spi-pxa2xx.h @@@@@@@ -86,10 -86,10 -86,10 -86,10 -86,9 -83,9 +83,8 @@@@@@@ struct driver_data }; struct chip_data { ----- u32 cr0; u32 cr1; u32 dds_rate; ---- - u32 psp; u32 timeout; u8 n_bytes; u32 dma_burst_size; diff --cc drivers/spi/spi.c index f9e92f5,3abb390,3abb390,51e33db,3abb390,3abb390..e2415be --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c @@@@@@@ -375,14 -305,12 -305,12 -305,13 -305,12 -305,12 +375,15 @@@@@@@ static void spi_drv_shutdown(struct dev } /** --- -- * spi_register_driver - register a SPI driver +++ ++ * __spi_register_driver - register a SPI driver * @sdrv: the driver to register * Context: can sleep +++++ * +++++ * Return: zero on success, else a negative error code. */ --- --int spi_register_driver(struct spi_driver *sdrv) +++ ++int __spi_register_driver(struct module *owner, struct spi_driver *sdrv) { +++ ++ sdrv->driver.owner = owner; sdrv->driver.bus = &spi_bus_type; if (sdrv->probe) sdrv->driver.probe = spi_drv_probe;