aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/spi/spi-pxa2xx.c
diff options
context:
space:
mode:
authorJarkko Nikula <jarkko.nikula@linux.intel.com>2016-09-07 10:04:07 -0400
committerMark Brown <broonie@kernel.org>2016-09-12 15:01:27 -0400
commit96579a4e56bdecfb4642cfb68eb85d079acb9d28 (patch)
tree58bf110c7cf0f071b12901a3b8c1ade00594712f /drivers/spi/spi-pxa2xx.c
parent4fc0caac065dbf300238997c7d2c212a2b120099 (diff)
spi: pxa2xx: Remove pointer to chip data from driver data
Transfer state machine in this driver does not need to set/unset pointer to chip data between queueing and finalizing message as it is not actually used as a state info itself but just pointer passing. Since this per SPI device specific chip data is already carried in ctldata use that and remove pointer to chip data from driver data. While at it, group initialized variables before uninitialized variables in pump_transfers(). Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com> Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'drivers/spi/spi-pxa2xx.c')
-rw-r--r--drivers/spi/spi-pxa2xx.c28
1 files changed, 13 insertions, 15 deletions
diff --git a/drivers/spi/spi-pxa2xx.c b/drivers/spi/spi-pxa2xx.c
index e05af2a94d38..6a0eb32408b6 100644
--- a/drivers/spi/spi-pxa2xx.c
+++ b/drivers/spi/spi-pxa2xx.c
@@ -355,10 +355,11 @@ static void lpss_ssp_cs_control(struct driver_data *drv_data, bool enable)
355 355
356static void cs_assert(struct driver_data *drv_data) 356static void cs_assert(struct driver_data *drv_data)
357{ 357{
358 struct chip_data *chip = drv_data->cur_chip; 358 struct chip_data *chip =
359 spi_get_ctldata(drv_data->master->cur_msg->spi);
359 360
360 if (drv_data->ssp_type == CE4100_SSP) { 361 if (drv_data->ssp_type == CE4100_SSP) {
361 pxa2xx_spi_write(drv_data, SSSR, drv_data->cur_chip->frm); 362 pxa2xx_spi_write(drv_data, SSSR, chip->frm);
362 return; 363 return;
363 } 364 }
364 365
@@ -378,7 +379,8 @@ static void cs_assert(struct driver_data *drv_data)
378 379
379static void cs_deassert(struct driver_data *drv_data) 380static void cs_deassert(struct driver_data *drv_data)
380{ 381{
381 struct chip_data *chip = drv_data->cur_chip; 382 struct chip_data *chip =
383 spi_get_ctldata(drv_data->master->cur_msg->spi);
382 384
383 if (drv_data->ssp_type == CE4100_SSP) 385 if (drv_data->ssp_type == CE4100_SSP)
384 return; 386 return;
@@ -574,13 +576,13 @@ static void giveback(struct driver_data *drv_data)
574 cs_deassert(drv_data); 576 cs_deassert(drv_data);
575 } 577 }
576 578
577 drv_data->cur_chip = NULL;
578 spi_finalize_current_message(drv_data->master); 579 spi_finalize_current_message(drv_data->master);
579} 580}
580 581
581static void reset_sccr1(struct driver_data *drv_data) 582static void reset_sccr1(struct driver_data *drv_data)
582{ 583{
583 struct chip_data *chip = drv_data->cur_chip; 584 struct chip_data *chip =
585 spi_get_ctldata(drv_data->master->cur_msg->spi);
584 u32 sccr1_reg; 586 u32 sccr1_reg;
585 587
586 sccr1_reg = pxa2xx_spi_read(drv_data, SSCR1) & ~drv_data->int_cr1; 588 sccr1_reg = pxa2xx_spi_read(drv_data, SSCR1) & ~drv_data->int_cr1;
@@ -904,7 +906,8 @@ static unsigned int ssp_get_clk_div(struct driver_data *drv_data, int rate)
904static unsigned int pxa2xx_ssp_get_clk_div(struct driver_data *drv_data, 906static unsigned int pxa2xx_ssp_get_clk_div(struct driver_data *drv_data,
905 int rate) 907 int rate)
906{ 908{
907 struct chip_data *chip = drv_data->cur_chip; 909 struct chip_data *chip =
910 spi_get_ctldata(drv_data->master->cur_msg->spi);
908 unsigned int clk_div; 911 unsigned int clk_div;
909 912
910 switch (drv_data->ssp_type) { 913 switch (drv_data->ssp_type) {
@@ -934,23 +937,22 @@ static void pump_transfers(unsigned long data)
934 struct driver_data *drv_data = (struct driver_data *)data; 937 struct driver_data *drv_data = (struct driver_data *)data;
935 struct spi_master *master = drv_data->master; 938 struct spi_master *master = drv_data->master;
936 struct spi_message *message = master->cur_msg; 939 struct spi_message *message = master->cur_msg;
940 struct chip_data *chip = spi_get_ctldata(message->spi);
941 u32 dma_thresh = chip->dma_threshold;
942 u32 dma_burst = chip->dma_burst_size;
943 u32 change_mask = pxa2xx_spi_get_ssrc1_change_mask(drv_data);
937 struct spi_transfer *transfer; 944 struct spi_transfer *transfer;
938 struct spi_transfer *previous; 945 struct spi_transfer *previous;
939 struct chip_data *chip;
940 u32 clk_div; 946 u32 clk_div;
941 u8 bits; 947 u8 bits;
942 u32 speed; 948 u32 speed;
943 u32 cr0; 949 u32 cr0;
944 u32 cr1; 950 u32 cr1;
945 u32 dma_thresh = drv_data->cur_chip->dma_threshold;
946 u32 dma_burst = drv_data->cur_chip->dma_burst_size;
947 u32 change_mask = pxa2xx_spi_get_ssrc1_change_mask(drv_data);
948 int err; 951 int err;
949 int dma_mapped; 952 int dma_mapped;
950 953
951 /* Get current state information */ 954 /* Get current state information */
952 transfer = drv_data->cur_transfer; 955 transfer = drv_data->cur_transfer;
953 chip = drv_data->cur_chip;
954 956
955 /* Handle for abort */ 957 /* Handle for abort */
956 if (message->state == ERROR_STATE) { 958 if (message->state == ERROR_STATE) {
@@ -1150,10 +1152,6 @@ static int pxa2xx_spi_transfer_one_message(struct spi_master *master,
1150 struct spi_transfer, 1152 struct spi_transfer,
1151 transfer_list); 1153 transfer_list);
1152 1154
1153 /* prepare to setup the SSP, in pump_transfers, using the per
1154 * chip configuration */
1155 drv_data->cur_chip = spi_get_ctldata(msg->spi);
1156
1157 /* Mark as busy and launch transfers */ 1155 /* Mark as busy and launch transfers */
1158 tasklet_schedule(&drv_data->pump_transfers); 1156 tasklet_schedule(&drv_data->pump_transfers);
1159 return 0; 1157 return 0;