Lines Matching refs:drv_data

132 *lpss_get_config(const struct driver_data *drv_data)  in lpss_get_config()  argument
134 return &lpss_platforms[drv_data->ssp_type - LPSS_LPT_SSP]; in lpss_get_config()
137 static bool is_lpss_ssp(const struct driver_data *drv_data) in is_lpss_ssp() argument
139 switch (drv_data->ssp_type) { in is_lpss_ssp()
150 static bool is_quark_x1000_ssp(const struct driver_data *drv_data) in is_quark_x1000_ssp() argument
152 return drv_data->ssp_type == QUARK_X1000_SSP; in is_quark_x1000_ssp()
155 static u32 pxa2xx_spi_get_ssrc1_change_mask(const struct driver_data *drv_data) in pxa2xx_spi_get_ssrc1_change_mask() argument
157 switch (drv_data->ssp_type) { in pxa2xx_spi_get_ssrc1_change_mask()
166 pxa2xx_spi_get_rx_default_thre(const struct driver_data *drv_data) in pxa2xx_spi_get_rx_default_thre() argument
168 switch (drv_data->ssp_type) { in pxa2xx_spi_get_rx_default_thre()
176 static bool pxa2xx_spi_txfifo_full(const struct driver_data *drv_data) in pxa2xx_spi_txfifo_full() argument
180 switch (drv_data->ssp_type) { in pxa2xx_spi_txfifo_full()
189 return (pxa2xx_spi_read(drv_data, SSSR) & mask) == mask; in pxa2xx_spi_txfifo_full()
192 static void pxa2xx_spi_clear_rx_thre(const struct driver_data *drv_data, in pxa2xx_spi_clear_rx_thre() argument
197 switch (drv_data->ssp_type) { in pxa2xx_spi_clear_rx_thre()
208 static void pxa2xx_spi_set_rx_thre(const struct driver_data *drv_data, in pxa2xx_spi_set_rx_thre() argument
211 switch (drv_data->ssp_type) { in pxa2xx_spi_set_rx_thre()
221 static u32 pxa2xx_configure_sscr0(const struct driver_data *drv_data, in pxa2xx_configure_sscr0() argument
224 switch (drv_data->ssp_type) { in pxa2xx_configure_sscr0()
243 static u32 __lpss_ssp_read_priv(struct driver_data *drv_data, unsigned offset) in __lpss_ssp_read_priv() argument
245 WARN_ON(!drv_data->lpss_base); in __lpss_ssp_read_priv()
246 return readl(drv_data->lpss_base + offset); in __lpss_ssp_read_priv()
249 static void __lpss_ssp_write_priv(struct driver_data *drv_data, in __lpss_ssp_write_priv() argument
252 WARN_ON(!drv_data->lpss_base); in __lpss_ssp_write_priv()
253 writel(value, drv_data->lpss_base + offset); in __lpss_ssp_write_priv()
263 static void lpss_ssp_setup(struct driver_data *drv_data) in lpss_ssp_setup() argument
268 config = lpss_get_config(drv_data); in lpss_ssp_setup()
269 drv_data->lpss_base = drv_data->ioaddr + config->offset; in lpss_ssp_setup()
272 value = __lpss_ssp_read_priv(drv_data, config->reg_cs_ctrl); in lpss_ssp_setup()
275 __lpss_ssp_write_priv(drv_data, config->reg_cs_ctrl, value); in lpss_ssp_setup()
278 if (drv_data->master_info->enable_dma) { in lpss_ssp_setup()
279 __lpss_ssp_write_priv(drv_data, config->reg_ssp, 1); in lpss_ssp_setup()
282 value = __lpss_ssp_read_priv(drv_data, in lpss_ssp_setup()
285 __lpss_ssp_write_priv(drv_data, in lpss_ssp_setup()
291 static void lpss_ssp_cs_control(struct driver_data *drv_data, bool enable) in lpss_ssp_cs_control() argument
296 config = lpss_get_config(drv_data); in lpss_ssp_cs_control()
298 value = __lpss_ssp_read_priv(drv_data, config->reg_cs_ctrl); in lpss_ssp_cs_control()
300 cs = drv_data->cur_msg->spi->chip_select; in lpss_ssp_cs_control()
313 __lpss_ssp_write_priv(drv_data, in lpss_ssp_cs_control()
316 (drv_data->master->max_speed_hz / 2)); in lpss_ssp_cs_control()
322 __lpss_ssp_write_priv(drv_data, config->reg_cs_ctrl, value); in lpss_ssp_cs_control()
325 static void cs_assert(struct driver_data *drv_data) in cs_assert() argument
327 struct chip_data *chip = drv_data->cur_chip; in cs_assert()
329 if (drv_data->ssp_type == CE4100_SSP) { in cs_assert()
330 pxa2xx_spi_write(drv_data, SSSR, drv_data->cur_chip->frm); in cs_assert()
344 if (is_lpss_ssp(drv_data)) in cs_assert()
345 lpss_ssp_cs_control(drv_data, true); in cs_assert()
348 static void cs_deassert(struct driver_data *drv_data) in cs_deassert() argument
350 struct chip_data *chip = drv_data->cur_chip; in cs_deassert()
352 if (drv_data->ssp_type == CE4100_SSP) in cs_deassert()
365 if (is_lpss_ssp(drv_data)) in cs_deassert()
366 lpss_ssp_cs_control(drv_data, false); in cs_deassert()
369 int pxa2xx_spi_flush(struct driver_data *drv_data) in pxa2xx_spi_flush() argument
374 while (pxa2xx_spi_read(drv_data, SSSR) & SSSR_RNE) in pxa2xx_spi_flush()
375 pxa2xx_spi_read(drv_data, SSDR); in pxa2xx_spi_flush()
376 } while ((pxa2xx_spi_read(drv_data, SSSR) & SSSR_BSY) && --limit); in pxa2xx_spi_flush()
377 write_SSSR_CS(drv_data, SSSR_ROR); in pxa2xx_spi_flush()
382 static int null_writer(struct driver_data *drv_data) in null_writer() argument
384 u8 n_bytes = drv_data->n_bytes; in null_writer()
386 if (pxa2xx_spi_txfifo_full(drv_data) in null_writer()
387 || (drv_data->tx == drv_data->tx_end)) in null_writer()
390 pxa2xx_spi_write(drv_data, SSDR, 0); in null_writer()
391 drv_data->tx += n_bytes; in null_writer()
396 static int null_reader(struct driver_data *drv_data) in null_reader() argument
398 u8 n_bytes = drv_data->n_bytes; in null_reader()
400 while ((pxa2xx_spi_read(drv_data, SSSR) & SSSR_RNE) in null_reader()
401 && (drv_data->rx < drv_data->rx_end)) { in null_reader()
402 pxa2xx_spi_read(drv_data, SSDR); in null_reader()
403 drv_data->rx += n_bytes; in null_reader()
406 return drv_data->rx == drv_data->rx_end; in null_reader()
409 static int u8_writer(struct driver_data *drv_data) in u8_writer() argument
411 if (pxa2xx_spi_txfifo_full(drv_data) in u8_writer()
412 || (drv_data->tx == drv_data->tx_end)) in u8_writer()
415 pxa2xx_spi_write(drv_data, SSDR, *(u8 *)(drv_data->tx)); in u8_writer()
416 ++drv_data->tx; in u8_writer()
421 static int u8_reader(struct driver_data *drv_data) in u8_reader() argument
423 while ((pxa2xx_spi_read(drv_data, SSSR) & SSSR_RNE) in u8_reader()
424 && (drv_data->rx < drv_data->rx_end)) { in u8_reader()
425 *(u8 *)(drv_data->rx) = pxa2xx_spi_read(drv_data, SSDR); in u8_reader()
426 ++drv_data->rx; in u8_reader()
429 return drv_data->rx == drv_data->rx_end; in u8_reader()
432 static int u16_writer(struct driver_data *drv_data) in u16_writer() argument
434 if (pxa2xx_spi_txfifo_full(drv_data) in u16_writer()
435 || (drv_data->tx == drv_data->tx_end)) in u16_writer()
438 pxa2xx_spi_write(drv_data, SSDR, *(u16 *)(drv_data->tx)); in u16_writer()
439 drv_data->tx += 2; in u16_writer()
444 static int u16_reader(struct driver_data *drv_data) in u16_reader() argument
446 while ((pxa2xx_spi_read(drv_data, SSSR) & SSSR_RNE) in u16_reader()
447 && (drv_data->rx < drv_data->rx_end)) { in u16_reader()
448 *(u16 *)(drv_data->rx) = pxa2xx_spi_read(drv_data, SSDR); in u16_reader()
449 drv_data->rx += 2; in u16_reader()
452 return drv_data->rx == drv_data->rx_end; in u16_reader()
455 static int u32_writer(struct driver_data *drv_data) in u32_writer() argument
457 if (pxa2xx_spi_txfifo_full(drv_data) in u32_writer()
458 || (drv_data->tx == drv_data->tx_end)) in u32_writer()
461 pxa2xx_spi_write(drv_data, SSDR, *(u32 *)(drv_data->tx)); in u32_writer()
462 drv_data->tx += 4; in u32_writer()
467 static int u32_reader(struct driver_data *drv_data) in u32_reader() argument
469 while ((pxa2xx_spi_read(drv_data, SSSR) & SSSR_RNE) in u32_reader()
470 && (drv_data->rx < drv_data->rx_end)) { in u32_reader()
471 *(u32 *)(drv_data->rx) = pxa2xx_spi_read(drv_data, SSDR); in u32_reader()
472 drv_data->rx += 4; in u32_reader()
475 return drv_data->rx == drv_data->rx_end; in u32_reader()
478 void *pxa2xx_spi_next_transfer(struct driver_data *drv_data) in pxa2xx_spi_next_transfer() argument
480 struct spi_message *msg = drv_data->cur_msg; in pxa2xx_spi_next_transfer()
481 struct spi_transfer *trans = drv_data->cur_transfer; in pxa2xx_spi_next_transfer()
485 drv_data->cur_transfer = in pxa2xx_spi_next_transfer()
495 static void giveback(struct driver_data *drv_data) in giveback() argument
500 msg = drv_data->cur_msg; in giveback()
501 drv_data->cur_msg = NULL; in giveback()
502 drv_data->cur_transfer = NULL; in giveback()
515 cs_deassert(drv_data); in giveback()
530 next_msg = spi_get_next_queued_message(drv_data->master); in giveback()
538 cs_deassert(drv_data); in giveback()
541 drv_data->cur_chip = NULL; in giveback()
542 spi_finalize_current_message(drv_data->master); in giveback()
545 static void reset_sccr1(struct driver_data *drv_data) in reset_sccr1() argument
547 struct chip_data *chip = drv_data->cur_chip; in reset_sccr1()
550 sccr1_reg = pxa2xx_spi_read(drv_data, SSCR1) & ~drv_data->int_cr1; in reset_sccr1()
553 pxa2xx_spi_write(drv_data, SSCR1, sccr1_reg); in reset_sccr1()
556 static void int_error_stop(struct driver_data *drv_data, const char* msg) in int_error_stop() argument
559 write_SSSR_CS(drv_data, drv_data->clear_sr); in int_error_stop()
560 reset_sccr1(drv_data); in int_error_stop()
561 if (!pxa25x_ssp_comp(drv_data)) in int_error_stop()
562 pxa2xx_spi_write(drv_data, SSTO, 0); in int_error_stop()
563 pxa2xx_spi_flush(drv_data); in int_error_stop()
564 pxa2xx_spi_write(drv_data, SSCR0, in int_error_stop()
565 pxa2xx_spi_read(drv_data, SSCR0) & ~SSCR0_SSE); in int_error_stop()
567 dev_err(&drv_data->pdev->dev, "%s\n", msg); in int_error_stop()
569 drv_data->cur_msg->state = ERROR_STATE; in int_error_stop()
570 tasklet_schedule(&drv_data->pump_transfers); in int_error_stop()
573 static void int_transfer_complete(struct driver_data *drv_data) in int_transfer_complete() argument
576 write_SSSR_CS(drv_data, drv_data->clear_sr); in int_transfer_complete()
577 reset_sccr1(drv_data); in int_transfer_complete()
578 if (!pxa25x_ssp_comp(drv_data)) in int_transfer_complete()
579 pxa2xx_spi_write(drv_data, SSTO, 0); in int_transfer_complete()
582 drv_data->cur_msg->actual_length += drv_data->len - in int_transfer_complete()
583 (drv_data->rx_end - drv_data->rx); in int_transfer_complete()
590 drv_data->cur_msg->state = pxa2xx_spi_next_transfer(drv_data); in int_transfer_complete()
593 tasklet_schedule(&drv_data->pump_transfers); in int_transfer_complete()
596 static irqreturn_t interrupt_transfer(struct driver_data *drv_data) in interrupt_transfer() argument
598 u32 irq_mask = (pxa2xx_spi_read(drv_data, SSCR1) & SSCR1_TIE) ? in interrupt_transfer()
599 drv_data->mask_sr : drv_data->mask_sr & ~SSSR_TFS; in interrupt_transfer()
601 u32 irq_status = pxa2xx_spi_read(drv_data, SSSR) & irq_mask; in interrupt_transfer()
604 int_error_stop(drv_data, "interrupt_transfer: fifo overrun"); in interrupt_transfer()
609 pxa2xx_spi_write(drv_data, SSSR, SSSR_TINT); in interrupt_transfer()
610 if (drv_data->read(drv_data)) { in interrupt_transfer()
611 int_transfer_complete(drv_data); in interrupt_transfer()
618 if (drv_data->read(drv_data)) { in interrupt_transfer()
619 int_transfer_complete(drv_data); in interrupt_transfer()
622 } while (drv_data->write(drv_data)); in interrupt_transfer()
624 if (drv_data->read(drv_data)) { in interrupt_transfer()
625 int_transfer_complete(drv_data); in interrupt_transfer()
629 if (drv_data->tx == drv_data->tx_end) { in interrupt_transfer()
633 sccr1_reg = pxa2xx_spi_read(drv_data, SSCR1); in interrupt_transfer()
640 if (pxa25x_ssp_comp(drv_data)) { in interrupt_transfer()
643 pxa2xx_spi_clear_rx_thre(drv_data, &sccr1_reg); in interrupt_transfer()
645 bytes_left = drv_data->rx_end - drv_data->rx; in interrupt_transfer()
646 switch (drv_data->n_bytes) { in interrupt_transfer()
653 rx_thre = pxa2xx_spi_get_rx_default_thre(drv_data); in interrupt_transfer()
657 pxa2xx_spi_set_rx_thre(drv_data, &sccr1_reg, rx_thre); in interrupt_transfer()
659 pxa2xx_spi_write(drv_data, SSCR1, sccr1_reg); in interrupt_transfer()
668 struct driver_data *drv_data = dev_id; in ssp_int() local
670 u32 mask = drv_data->mask_sr; in ssp_int()
679 if (pm_runtime_suspended(&drv_data->pdev->dev)) in ssp_int()
688 status = pxa2xx_spi_read(drv_data, SSSR); in ssp_int()
692 sccr1_reg = pxa2xx_spi_read(drv_data, SSCR1); in ssp_int()
705 if (!drv_data->cur_msg) { in ssp_int()
707 pxa2xx_spi_write(drv_data, SSCR0, in ssp_int()
708 pxa2xx_spi_read(drv_data, SSCR0) in ssp_int()
710 pxa2xx_spi_write(drv_data, SSCR1, in ssp_int()
711 pxa2xx_spi_read(drv_data, SSCR1) in ssp_int()
712 & ~drv_data->int_cr1); in ssp_int()
713 if (!pxa25x_ssp_comp(drv_data)) in ssp_int()
714 pxa2xx_spi_write(drv_data, SSTO, 0); in ssp_int()
715 write_SSSR_CS(drv_data, drv_data->clear_sr); in ssp_int()
717 dev_err(&drv_data->pdev->dev, in ssp_int()
724 return drv_data->transfer_handler(drv_data); in ssp_int()
848 static unsigned int ssp_get_clk_div(struct driver_data *drv_data, int rate) in ssp_get_clk_div() argument
850 unsigned long ssp_clk = drv_data->master->max_speed_hz; in ssp_get_clk_div()
851 const struct ssp_device *ssp = drv_data->ssp; in ssp_get_clk_div()
861 static unsigned int pxa2xx_ssp_get_clk_div(struct driver_data *drv_data, in pxa2xx_ssp_get_clk_div() argument
864 struct chip_data *chip = drv_data->cur_chip; in pxa2xx_ssp_get_clk_div()
867 switch (drv_data->ssp_type) { in pxa2xx_ssp_get_clk_div()
872 clk_div = ssp_get_clk_div(drv_data, rate); in pxa2xx_ssp_get_clk_div()
880 struct driver_data *drv_data = (struct driver_data *)data; in pump_transfers() local
890 u32 dma_thresh = drv_data->cur_chip->dma_threshold; in pump_transfers()
891 u32 dma_burst = drv_data->cur_chip->dma_burst_size; in pump_transfers()
892 u32 change_mask = pxa2xx_spi_get_ssrc1_change_mask(drv_data); in pump_transfers()
895 message = drv_data->cur_msg; in pump_transfers()
896 transfer = drv_data->cur_transfer; in pump_transfers()
897 chip = drv_data->cur_chip; in pump_transfers()
902 giveback(drv_data); in pump_transfers()
909 giveback(drv_data); in pump_transfers()
923 cs_deassert(drv_data); in pump_transfers()
932 dev_err(&drv_data->pdev->dev, in pump_transfers()
937 giveback(drv_data); in pump_transfers()
945 (long)drv_data->len, MAX_DMA_LEN); in pump_transfers()
949 if (pxa2xx_spi_flush(drv_data) == 0) { in pump_transfers()
950 dev_err(&drv_data->pdev->dev, "pump_transfers: flush failed\n"); in pump_transfers()
952 giveback(drv_data); in pump_transfers()
955 drv_data->n_bytes = chip->n_bytes; in pump_transfers()
956 drv_data->tx = (void *)transfer->tx_buf; in pump_transfers()
957 drv_data->tx_end = drv_data->tx + transfer->len; in pump_transfers()
958 drv_data->rx = transfer->rx_buf; in pump_transfers()
959 drv_data->rx_end = drv_data->rx + transfer->len; in pump_transfers()
960 drv_data->rx_dma = transfer->rx_dma; in pump_transfers()
961 drv_data->tx_dma = transfer->tx_dma; in pump_transfers()
962 drv_data->len = transfer->len; in pump_transfers()
963 drv_data->write = drv_data->tx ? chip->write : null_writer; in pump_transfers()
964 drv_data->read = drv_data->rx ? chip->read : null_reader; in pump_transfers()
970 clk_div = pxa2xx_ssp_get_clk_div(drv_data, speed); in pump_transfers()
973 drv_data->n_bytes = 1; in pump_transfers()
974 drv_data->read = drv_data->read != null_reader ? in pump_transfers()
976 drv_data->write = drv_data->write != null_writer ? in pump_transfers()
979 drv_data->n_bytes = 2; in pump_transfers()
980 drv_data->read = drv_data->read != null_reader ? in pump_transfers()
982 drv_data->write = drv_data->write != null_writer ? in pump_transfers()
985 drv_data->n_bytes = 4; in pump_transfers()
986 drv_data->read = drv_data->read != null_reader ? in pump_transfers()
988 drv_data->write = drv_data->write != null_writer ? in pump_transfers()
1005 cr0 = pxa2xx_configure_sscr0(drv_data, clk_div, bits); in pump_transfers()
1006 if (!pxa25x_ssp_comp(drv_data)) in pump_transfers()
1008 drv_data->master->max_speed_hz in pump_transfers()
1013 drv_data->master->max_speed_hz / 2 in pump_transfers()
1019 drv_data->dma_mapped = 0; in pump_transfers()
1020 if (pxa2xx_spi_dma_is_possible(drv_data->len)) in pump_transfers()
1021 drv_data->dma_mapped = pxa2xx_spi_map_dma_buffers(drv_data); in pump_transfers()
1022 if (drv_data->dma_mapped) { in pump_transfers()
1025 drv_data->transfer_handler = pxa2xx_spi_dma_transfer; in pump_transfers()
1027 pxa2xx_spi_dma_prepare(drv_data, dma_burst); in pump_transfers()
1030 cr1 = chip->cr1 | dma_thresh | drv_data->dma_cr1; in pump_transfers()
1031 pxa2xx_spi_write(drv_data, SSSR, drv_data->clear_sr); in pump_transfers()
1033 pxa2xx_spi_dma_start(drv_data); in pump_transfers()
1036 drv_data->transfer_handler = interrupt_transfer; in pump_transfers()
1039 cr1 = chip->cr1 | chip->threshold | drv_data->int_cr1; in pump_transfers()
1040 write_SSSR_CS(drv_data, drv_data->clear_sr); in pump_transfers()
1043 if (is_lpss_ssp(drv_data)) { in pump_transfers()
1044 if ((pxa2xx_spi_read(drv_data, SSIRF) & 0xff) in pump_transfers()
1046 pxa2xx_spi_write(drv_data, SSIRF, in pump_transfers()
1048 if ((pxa2xx_spi_read(drv_data, SSITF) & 0xffff) in pump_transfers()
1050 pxa2xx_spi_write(drv_data, SSITF, in pump_transfers()
1054 if (is_quark_x1000_ssp(drv_data) && in pump_transfers()
1055 (pxa2xx_spi_read(drv_data, DDS_RATE) != chip->dds_rate)) in pump_transfers()
1056 pxa2xx_spi_write(drv_data, DDS_RATE, chip->dds_rate); in pump_transfers()
1059 if ((pxa2xx_spi_read(drv_data, SSCR0) != cr0) in pump_transfers()
1060 || (pxa2xx_spi_read(drv_data, SSCR1) & change_mask) in pump_transfers()
1063 pxa2xx_spi_write(drv_data, SSCR0, cr0 & ~SSCR0_SSE); in pump_transfers()
1064 if (!pxa25x_ssp_comp(drv_data)) in pump_transfers()
1065 pxa2xx_spi_write(drv_data, SSTO, chip->timeout); in pump_transfers()
1067 pxa2xx_spi_write(drv_data, SSCR1, cr1 & change_mask); in pump_transfers()
1069 pxa2xx_spi_write(drv_data, SSCR0, cr0); in pump_transfers()
1072 if (!pxa25x_ssp_comp(drv_data)) in pump_transfers()
1073 pxa2xx_spi_write(drv_data, SSTO, chip->timeout); in pump_transfers()
1076 cs_assert(drv_data); in pump_transfers()
1080 pxa2xx_spi_write(drv_data, SSCR1, cr1); in pump_transfers()
1086 struct driver_data *drv_data = spi_master_get_devdata(master); in pxa2xx_spi_transfer_one_message() local
1088 drv_data->cur_msg = msg; in pxa2xx_spi_transfer_one_message()
1090 drv_data->cur_msg->state = START_STATE; in pxa2xx_spi_transfer_one_message()
1091 drv_data->cur_transfer = list_entry(drv_data->cur_msg->transfers.next, in pxa2xx_spi_transfer_one_message()
1097 drv_data->cur_chip = spi_get_ctldata(drv_data->cur_msg->spi); in pxa2xx_spi_transfer_one_message()
1100 tasklet_schedule(&drv_data->pump_transfers); in pxa2xx_spi_transfer_one_message()
1106 struct driver_data *drv_data = spi_master_get_devdata(master); in pxa2xx_spi_unprepare_transfer() local
1109 pxa2xx_spi_write(drv_data, SSCR0, in pxa2xx_spi_unprepare_transfer()
1110 pxa2xx_spi_read(drv_data, SSCR0) & ~SSCR0_SSE); in pxa2xx_spi_unprepare_transfer()
1158 struct driver_data *drv_data = spi_master_get_devdata(spi->master); in setup() local
1161 switch (drv_data->ssp_type) { in setup()
1171 config = lpss_get_config(drv_data); in setup()
1190 if (drv_data->ssp_type == CE4100_SSP) { in setup()
1220 chip->enable_dma = drv_data->master_info->enable_dma; in setup()
1230 chip->enable_dma = drv_data->master_info->enable_dma; in setup()
1251 switch (drv_data->ssp_type) { in setup()
1287 if (drv_data->ssp_type == CE4100_SSP) in setup()
1296 struct driver_data *drv_data = spi_master_get_devdata(spi->master); in cleanup() local
1301 if (drv_data->ssp_type != CE4100_SSP && gpio_is_valid(chip->gpio_cs)) in cleanup()
1446 struct driver_data *drv_data; in pxa2xx_spi_probe() local
1476 drv_data = spi_master_get_devdata(master); in pxa2xx_spi_probe()
1477 drv_data->master = master; in pxa2xx_spi_probe()
1478 drv_data->master_info = platform_info; in pxa2xx_spi_probe()
1479 drv_data->pdev = pdev; in pxa2xx_spi_probe()
1480 drv_data->ssp = ssp; in pxa2xx_spi_probe()
1495 drv_data->ssp_type = ssp->type; in pxa2xx_spi_probe()
1497 drv_data->ioaddr = ssp->mmio_base; in pxa2xx_spi_probe()
1498 drv_data->ssdr_physical = ssp->phys_base + SSDR; in pxa2xx_spi_probe()
1499 if (pxa25x_ssp_comp(drv_data)) { in pxa2xx_spi_probe()
1500 switch (drv_data->ssp_type) { in pxa2xx_spi_probe()
1509 drv_data->int_cr1 = SSCR1_TIE | SSCR1_RIE; in pxa2xx_spi_probe()
1510 drv_data->dma_cr1 = 0; in pxa2xx_spi_probe()
1511 drv_data->clear_sr = SSSR_ROR; in pxa2xx_spi_probe()
1512 drv_data->mask_sr = SSSR_RFS | SSSR_TFS | SSSR_ROR; in pxa2xx_spi_probe()
1515 drv_data->int_cr1 = SSCR1_TIE | SSCR1_RIE | SSCR1_TINTE; in pxa2xx_spi_probe()
1516 drv_data->dma_cr1 = DEFAULT_DMA_CR1; in pxa2xx_spi_probe()
1517 drv_data->clear_sr = SSSR_ROR | SSSR_TINT; in pxa2xx_spi_probe()
1518 drv_data->mask_sr = SSSR_TINT | SSSR_RFS | SSSR_TFS | SSSR_ROR; in pxa2xx_spi_probe()
1522 drv_data); in pxa2xx_spi_probe()
1530 status = pxa2xx_spi_dma_setup(drv_data); in pxa2xx_spi_probe()
1543 pxa2xx_spi_write(drv_data, SSCR0, 0); in pxa2xx_spi_probe()
1544 switch (drv_data->ssp_type) { in pxa2xx_spi_probe()
1548 pxa2xx_spi_write(drv_data, SSCR1, tmp); in pxa2xx_spi_probe()
1551 pxa2xx_spi_write(drv_data, SSCR0, in pxa2xx_spi_probe()
1558 pxa2xx_spi_write(drv_data, SSCR1, tmp); in pxa2xx_spi_probe()
1560 pxa2xx_spi_write(drv_data, SSCR0, tmp); in pxa2xx_spi_probe()
1564 if (!pxa25x_ssp_comp(drv_data)) in pxa2xx_spi_probe()
1565 pxa2xx_spi_write(drv_data, SSTO, 0); in pxa2xx_spi_probe()
1567 if (!is_quark_x1000_ssp(drv_data)) in pxa2xx_spi_probe()
1568 pxa2xx_spi_write(drv_data, SSPSP, 0); in pxa2xx_spi_probe()
1570 if (is_lpss_ssp(drv_data)) in pxa2xx_spi_probe()
1571 lpss_ssp_setup(drv_data); in pxa2xx_spi_probe()
1573 if (is_lpss_ssp(drv_data)) { in pxa2xx_spi_probe()
1574 lpss_ssp_setup(drv_data); in pxa2xx_spi_probe()
1575 config = lpss_get_config(drv_data); in pxa2xx_spi_probe()
1577 tmp = __lpss_ssp_read_priv(drv_data, in pxa2xx_spi_probe()
1586 tasklet_init(&drv_data->pump_transfers, pump_transfers, in pxa2xx_spi_probe()
1587 (unsigned long)drv_data); in pxa2xx_spi_probe()
1595 platform_set_drvdata(pdev, drv_data); in pxa2xx_spi_probe()
1606 pxa2xx_spi_dma_release(drv_data); in pxa2xx_spi_probe()
1607 free_irq(ssp->irq, drv_data); in pxa2xx_spi_probe()
1617 struct driver_data *drv_data = platform_get_drvdata(pdev); in pxa2xx_spi_remove() local
1620 if (!drv_data) in pxa2xx_spi_remove()
1622 ssp = drv_data->ssp; in pxa2xx_spi_remove()
1627 pxa2xx_spi_write(drv_data, SSCR0, 0); in pxa2xx_spi_remove()
1631 if (drv_data->master_info->enable_dma) in pxa2xx_spi_remove()
1632 pxa2xx_spi_dma_release(drv_data); in pxa2xx_spi_remove()
1638 free_irq(ssp->irq, drv_data); in pxa2xx_spi_remove()
1657 struct driver_data *drv_data = dev_get_drvdata(dev); in pxa2xx_spi_suspend() local
1658 struct ssp_device *ssp = drv_data->ssp; in pxa2xx_spi_suspend()
1661 status = spi_master_suspend(drv_data->master); in pxa2xx_spi_suspend()
1664 pxa2xx_spi_write(drv_data, SSCR0, 0); in pxa2xx_spi_suspend()
1674 struct driver_data *drv_data = dev_get_drvdata(dev); in pxa2xx_spi_resume() local
1675 struct ssp_device *ssp = drv_data->ssp; in pxa2xx_spi_resume()
1683 if (is_lpss_ssp(drv_data)) in pxa2xx_spi_resume()
1684 lpss_ssp_setup(drv_data); in pxa2xx_spi_resume()
1687 status = spi_master_resume(drv_data->master); in pxa2xx_spi_resume()
1700 struct driver_data *drv_data = dev_get_drvdata(dev); in pxa2xx_spi_runtime_suspend() local
1702 clk_disable_unprepare(drv_data->ssp->clk); in pxa2xx_spi_runtime_suspend()
1708 struct driver_data *drv_data = dev_get_drvdata(dev); in pxa2xx_spi_runtime_resume() local
1710 clk_prepare_enable(drv_data->ssp->clk); in pxa2xx_spi_runtime_resume()