Lines Matching refs:drv_data
171 *lpss_get_config(const struct driver_data *drv_data) in lpss_get_config() argument
173 return &lpss_platforms[drv_data->ssp_type - LPSS_LPT_SSP]; in lpss_get_config()
176 static bool is_lpss_ssp(const struct driver_data *drv_data) in is_lpss_ssp() argument
178 switch (drv_data->ssp_type) { in is_lpss_ssp()
191 static bool is_quark_x1000_ssp(const struct driver_data *drv_data) in is_quark_x1000_ssp() argument
193 return drv_data->ssp_type == QUARK_X1000_SSP; in is_quark_x1000_ssp()
196 static bool is_mmp2_ssp(const struct driver_data *drv_data) in is_mmp2_ssp() argument
198 return drv_data->ssp_type == MMP2_SSP; in is_mmp2_ssp()
201 static bool is_mrfld_ssp(const struct driver_data *drv_data) in is_mrfld_ssp() argument
203 return drv_data->ssp_type == MRFLD_SSP; in is_mrfld_ssp()
206 static void pxa2xx_spi_update(const struct driver_data *drv_data, u32 reg, u32 mask, u32 value) in pxa2xx_spi_update() argument
208 if ((pxa2xx_spi_read(drv_data, reg) & mask) != value) in pxa2xx_spi_update()
209 pxa2xx_spi_write(drv_data, reg, value & mask); in pxa2xx_spi_update()
212 static u32 pxa2xx_spi_get_ssrc1_change_mask(const struct driver_data *drv_data) in pxa2xx_spi_get_ssrc1_change_mask() argument
214 switch (drv_data->ssp_type) { in pxa2xx_spi_get_ssrc1_change_mask()
225 pxa2xx_spi_get_rx_default_thre(const struct driver_data *drv_data) in pxa2xx_spi_get_rx_default_thre() argument
227 switch (drv_data->ssp_type) { in pxa2xx_spi_get_rx_default_thre()
237 static bool pxa2xx_spi_txfifo_full(const struct driver_data *drv_data) in pxa2xx_spi_txfifo_full() argument
241 switch (drv_data->ssp_type) { in pxa2xx_spi_txfifo_full()
253 return read_SSSR_bits(drv_data, mask) == mask; in pxa2xx_spi_txfifo_full()
256 static void pxa2xx_spi_clear_rx_thre(const struct driver_data *drv_data, in pxa2xx_spi_clear_rx_thre() argument
261 switch (drv_data->ssp_type) { in pxa2xx_spi_clear_rx_thre()
275 static void pxa2xx_spi_set_rx_thre(const struct driver_data *drv_data, in pxa2xx_spi_set_rx_thre() argument
278 switch (drv_data->ssp_type) { in pxa2xx_spi_set_rx_thre()
291 static u32 pxa2xx_configure_sscr0(const struct driver_data *drv_data, in pxa2xx_configure_sscr0() argument
294 switch (drv_data->ssp_type) { in pxa2xx_configure_sscr0()
311 static u32 __lpss_ssp_read_priv(struct driver_data *drv_data, unsigned offset) in __lpss_ssp_read_priv() argument
313 WARN_ON(!drv_data->lpss_base); in __lpss_ssp_read_priv()
314 return readl(drv_data->lpss_base + offset); in __lpss_ssp_read_priv()
317 static void __lpss_ssp_write_priv(struct driver_data *drv_data, in __lpss_ssp_write_priv() argument
320 WARN_ON(!drv_data->lpss_base); in __lpss_ssp_write_priv()
321 writel(value, drv_data->lpss_base + offset); in __lpss_ssp_write_priv()
331 static void lpss_ssp_setup(struct driver_data *drv_data) in lpss_ssp_setup() argument
336 config = lpss_get_config(drv_data); in lpss_ssp_setup()
337 drv_data->lpss_base = drv_data->ssp->mmio_base + config->offset; in lpss_ssp_setup()
340 value = __lpss_ssp_read_priv(drv_data, config->reg_cs_ctrl); in lpss_ssp_setup()
343 __lpss_ssp_write_priv(drv_data, config->reg_cs_ctrl, value); in lpss_ssp_setup()
346 if (drv_data->controller_info->enable_dma) { in lpss_ssp_setup()
347 __lpss_ssp_write_priv(drv_data, config->reg_ssp, 1); in lpss_ssp_setup()
350 value = __lpss_ssp_read_priv(drv_data, in lpss_ssp_setup()
353 __lpss_ssp_write_priv(drv_data, in lpss_ssp_setup()
362 struct driver_data *drv_data = in lpss_ssp_select_cs() local
369 value = __lpss_ssp_read_priv(drv_data, config->reg_cs_ctrl); in lpss_ssp_select_cs()
383 __lpss_ssp_write_priv(drv_data, in lpss_ssp_select_cs()
386 (drv_data->controller->max_speed_hz / 2)); in lpss_ssp_select_cs()
392 struct driver_data *drv_data = in lpss_ssp_cs_control() local
397 config = lpss_get_config(drv_data); in lpss_ssp_cs_control()
402 value = __lpss_ssp_read_priv(drv_data, config->reg_cs_ctrl); in lpss_ssp_cs_control()
407 __lpss_ssp_write_priv(drv_data, config->reg_cs_ctrl, value); in lpss_ssp_cs_control()
417 clkgate = __lpss_ssp_read_priv(drv_data, LPSS_PRIV_CLOCK_GATE); in lpss_ssp_cs_control()
421 __lpss_ssp_write_priv(drv_data, LPSS_PRIV_CLOCK_GATE, value); in lpss_ssp_cs_control()
422 __lpss_ssp_write_priv(drv_data, LPSS_PRIV_CLOCK_GATE, clkgate); in lpss_ssp_cs_control()
428 struct driver_data *drv_data = in cs_assert() local
431 if (drv_data->ssp_type == CE4100_SSP) { in cs_assert()
432 pxa2xx_spi_write(drv_data, SSSR, spi_get_chipselect(spi, 0)); in cs_assert()
436 if (is_lpss_ssp(drv_data)) in cs_assert()
442 struct driver_data *drv_data = in cs_deassert() local
446 if (drv_data->ssp_type == CE4100_SSP) in cs_deassert()
451 while (pxa2xx_spi_read(drv_data, SSSR) & SSSR_BSY && in cs_deassert()
455 if (is_lpss_ssp(drv_data)) in cs_deassert()
467 int pxa2xx_spi_flush(struct driver_data *drv_data) in pxa2xx_spi_flush() argument
472 while (read_SSSR_bits(drv_data, SSSR_RNE)) in pxa2xx_spi_flush()
473 pxa2xx_spi_read(drv_data, SSDR); in pxa2xx_spi_flush()
474 } while ((pxa2xx_spi_read(drv_data, SSSR) & SSSR_BSY) && --limit); in pxa2xx_spi_flush()
475 write_SSSR_CS(drv_data, SSSR_ROR); in pxa2xx_spi_flush()
480 static void pxa2xx_spi_off(struct driver_data *drv_data) in pxa2xx_spi_off() argument
483 if (is_mmp2_ssp(drv_data)) in pxa2xx_spi_off()
486 pxa_ssp_disable(drv_data->ssp); in pxa2xx_spi_off()
489 static int null_writer(struct driver_data *drv_data) in null_writer() argument
491 u8 n_bytes = drv_data->n_bytes; in null_writer()
493 if (pxa2xx_spi_txfifo_full(drv_data) in null_writer()
494 || (drv_data->tx == drv_data->tx_end)) in null_writer()
497 pxa2xx_spi_write(drv_data, SSDR, 0); in null_writer()
498 drv_data->tx += n_bytes; in null_writer()
503 static int null_reader(struct driver_data *drv_data) in null_reader() argument
505 u8 n_bytes = drv_data->n_bytes; in null_reader()
507 while (read_SSSR_bits(drv_data, SSSR_RNE) && drv_data->rx < drv_data->rx_end) { in null_reader()
508 pxa2xx_spi_read(drv_data, SSDR); in null_reader()
509 drv_data->rx += n_bytes; in null_reader()
512 return drv_data->rx == drv_data->rx_end; in null_reader()
515 static int u8_writer(struct driver_data *drv_data) in u8_writer() argument
517 if (pxa2xx_spi_txfifo_full(drv_data) in u8_writer()
518 || (drv_data->tx == drv_data->tx_end)) in u8_writer()
521 pxa2xx_spi_write(drv_data, SSDR, *(u8 *)(drv_data->tx)); in u8_writer()
522 ++drv_data->tx; in u8_writer()
527 static int u8_reader(struct driver_data *drv_data) in u8_reader() argument
529 while (read_SSSR_bits(drv_data, SSSR_RNE) && drv_data->rx < drv_data->rx_end) { in u8_reader()
530 *(u8 *)(drv_data->rx) = pxa2xx_spi_read(drv_data, SSDR); in u8_reader()
531 ++drv_data->rx; in u8_reader()
534 return drv_data->rx == drv_data->rx_end; in u8_reader()
537 static int u16_writer(struct driver_data *drv_data) in u16_writer() argument
539 if (pxa2xx_spi_txfifo_full(drv_data) in u16_writer()
540 || (drv_data->tx == drv_data->tx_end)) in u16_writer()
543 pxa2xx_spi_write(drv_data, SSDR, *(u16 *)(drv_data->tx)); in u16_writer()
544 drv_data->tx += 2; in u16_writer()
549 static int u16_reader(struct driver_data *drv_data) in u16_reader() argument
551 while (read_SSSR_bits(drv_data, SSSR_RNE) && drv_data->rx < drv_data->rx_end) { in u16_reader()
552 *(u16 *)(drv_data->rx) = pxa2xx_spi_read(drv_data, SSDR); in u16_reader()
553 drv_data->rx += 2; in u16_reader()
556 return drv_data->rx == drv_data->rx_end; in u16_reader()
559 static int u32_writer(struct driver_data *drv_data) in u32_writer() argument
561 if (pxa2xx_spi_txfifo_full(drv_data) in u32_writer()
562 || (drv_data->tx == drv_data->tx_end)) in u32_writer()
565 pxa2xx_spi_write(drv_data, SSDR, *(u32 *)(drv_data->tx)); in u32_writer()
566 drv_data->tx += 4; in u32_writer()
571 static int u32_reader(struct driver_data *drv_data) in u32_reader() argument
573 while (read_SSSR_bits(drv_data, SSSR_RNE) && drv_data->rx < drv_data->rx_end) { in u32_reader()
574 *(u32 *)(drv_data->rx) = pxa2xx_spi_read(drv_data, SSDR); in u32_reader()
575 drv_data->rx += 4; in u32_reader()
578 return drv_data->rx == drv_data->rx_end; in u32_reader()
581 static void reset_sccr1(struct driver_data *drv_data) in reset_sccr1() argument
583 u32 mask = drv_data->int_cr1 | drv_data->dma_cr1, threshold; in reset_sccr1()
586 if (drv_data->controller->cur_msg) { in reset_sccr1()
587 chip = spi_get_ctldata(drv_data->controller->cur_msg->spi); in reset_sccr1()
593 switch (drv_data->ssp_type) { in reset_sccr1()
605 pxa2xx_spi_update(drv_data, SSCR1, mask, threshold); in reset_sccr1()
608 static void int_stop_and_reset(struct driver_data *drv_data) in int_stop_and_reset() argument
611 write_SSSR_CS(drv_data, drv_data->clear_sr); in int_stop_and_reset()
612 reset_sccr1(drv_data); in int_stop_and_reset()
613 if (pxa25x_ssp_comp(drv_data)) in int_stop_and_reset()
616 pxa2xx_spi_write(drv_data, SSTO, 0); in int_stop_and_reset()
619 static void int_error_stop(struct driver_data *drv_data, const char *msg, int err) in int_error_stop() argument
621 int_stop_and_reset(drv_data); in int_error_stop()
622 pxa2xx_spi_flush(drv_data); in int_error_stop()
623 pxa2xx_spi_off(drv_data); in int_error_stop()
625 dev_err(drv_data->ssp->dev, "%s\n", msg); in int_error_stop()
627 drv_data->controller->cur_msg->status = err; in int_error_stop()
628 spi_finalize_current_transfer(drv_data->controller); in int_error_stop()
631 static void int_transfer_complete(struct driver_data *drv_data) in int_transfer_complete() argument
633 int_stop_and_reset(drv_data); in int_transfer_complete()
635 spi_finalize_current_transfer(drv_data->controller); in int_transfer_complete()
638 static irqreturn_t interrupt_transfer(struct driver_data *drv_data) in interrupt_transfer() argument
642 irq_status = read_SSSR_bits(drv_data, drv_data->mask_sr); in interrupt_transfer()
643 if (!(pxa2xx_spi_read(drv_data, SSCR1) & SSCR1_TIE)) in interrupt_transfer()
647 int_error_stop(drv_data, "interrupt_transfer: FIFO overrun", -EIO); in interrupt_transfer()
652 int_error_stop(drv_data, "interrupt_transfer: FIFO underrun", -EIO); in interrupt_transfer()
657 pxa2xx_spi_write(drv_data, SSSR, SSSR_TINT); in interrupt_transfer()
658 if (drv_data->read(drv_data)) { in interrupt_transfer()
659 int_transfer_complete(drv_data); in interrupt_transfer()
666 if (drv_data->read(drv_data)) { in interrupt_transfer()
667 int_transfer_complete(drv_data); in interrupt_transfer()
670 } while (drv_data->write(drv_data)); in interrupt_transfer()
672 if (drv_data->read(drv_data)) { in interrupt_transfer()
673 int_transfer_complete(drv_data); in interrupt_transfer()
677 if (drv_data->tx == drv_data->tx_end) { in interrupt_transfer()
681 sccr1_reg = pxa2xx_spi_read(drv_data, SSCR1); in interrupt_transfer()
688 if (pxa25x_ssp_comp(drv_data)) { in interrupt_transfer()
691 pxa2xx_spi_clear_rx_thre(drv_data, &sccr1_reg); in interrupt_transfer()
693 bytes_left = drv_data->rx_end - drv_data->rx; in interrupt_transfer()
694 switch (drv_data->n_bytes) { in interrupt_transfer()
703 rx_thre = pxa2xx_spi_get_rx_default_thre(drv_data); in interrupt_transfer()
707 pxa2xx_spi_set_rx_thre(drv_data, &sccr1_reg, rx_thre); in interrupt_transfer()
709 pxa2xx_spi_write(drv_data, SSCR1, sccr1_reg); in interrupt_transfer()
716 static void handle_bad_msg(struct driver_data *drv_data) in handle_bad_msg() argument
718 int_stop_and_reset(drv_data); in handle_bad_msg()
719 pxa2xx_spi_off(drv_data); in handle_bad_msg()
721 dev_err(drv_data->ssp->dev, "bad message state in interrupt handler\n"); in handle_bad_msg()
726 struct driver_data *drv_data = dev_id; in ssp_int() local
728 u32 mask = drv_data->mask_sr; in ssp_int()
737 if (pm_runtime_suspended(drv_data->ssp->dev)) in ssp_int()
746 status = pxa2xx_spi_read(drv_data, SSSR); in ssp_int()
750 sccr1_reg = pxa2xx_spi_read(drv_data, SSCR1); in ssp_int()
763 pxa2xx_spi_write(drv_data, SSCR1, sccr1_reg & ~drv_data->int_cr1); in ssp_int()
764 pxa2xx_spi_write(drv_data, SSCR1, sccr1_reg); in ssp_int()
766 if (!drv_data->controller->cur_msg) { in ssp_int()
767 handle_bad_msg(drv_data); in ssp_int()
772 return drv_data->transfer_handler(drv_data); in ssp_int()
896 static unsigned int ssp_get_clk_div(struct driver_data *drv_data, int rate) in ssp_get_clk_div() argument
898 unsigned long ssp_clk = drv_data->controller->max_speed_hz; in ssp_get_clk_div()
899 const struct ssp_device *ssp = drv_data->ssp; in ssp_get_clk_div()
913 static unsigned int pxa2xx_ssp_get_clk_div(struct driver_data *drv_data, in pxa2xx_ssp_get_clk_div() argument
917 spi_get_ctldata(drv_data->controller->cur_msg->spi); in pxa2xx_ssp_get_clk_div()
920 switch (drv_data->ssp_type) { in pxa2xx_ssp_get_clk_div()
925 clk_div = ssp_get_clk_div(drv_data, rate); in pxa2xx_ssp_get_clk_div()
946 struct driver_data *drv_data = spi_controller_get_devdata(controller); in pxa2xx_spi_transfer_one() local
951 u32 change_mask = pxa2xx_spi_get_ssrc1_change_mask(drv_data); in pxa2xx_spi_transfer_one()
979 if (pxa2xx_spi_flush(drv_data) == 0) { in pxa2xx_spi_transfer_one()
983 drv_data->tx = (void *)transfer->tx_buf; in pxa2xx_spi_transfer_one()
984 drv_data->tx_end = drv_data->tx + transfer->len; in pxa2xx_spi_transfer_one()
985 drv_data->rx = transfer->rx_buf; in pxa2xx_spi_transfer_one()
986 drv_data->rx_end = drv_data->rx + transfer->len; in pxa2xx_spi_transfer_one()
992 clk_div = pxa2xx_ssp_get_clk_div(drv_data, speed); in pxa2xx_spi_transfer_one()
995 drv_data->n_bytes = 1; in pxa2xx_spi_transfer_one()
996 drv_data->read = drv_data->rx ? u8_reader : null_reader; in pxa2xx_spi_transfer_one()
997 drv_data->write = drv_data->tx ? u8_writer : null_writer; in pxa2xx_spi_transfer_one()
999 drv_data->n_bytes = 2; in pxa2xx_spi_transfer_one()
1000 drv_data->read = drv_data->rx ? u16_reader : null_reader; in pxa2xx_spi_transfer_one()
1001 drv_data->write = drv_data->tx ? u16_writer : null_writer; in pxa2xx_spi_transfer_one()
1003 drv_data->n_bytes = 4; in pxa2xx_spi_transfer_one()
1004 drv_data->read = drv_data->rx ? u32_reader : null_reader; in pxa2xx_spi_transfer_one()
1005 drv_data->write = drv_data->tx ? u32_writer : null_writer; in pxa2xx_spi_transfer_one()
1026 drv_data->transfer_handler = pxa2xx_spi_dma_transfer; in pxa2xx_spi_transfer_one()
1028 err = pxa2xx_spi_dma_prepare(drv_data, transfer); in pxa2xx_spi_transfer_one()
1033 cr1 = chip->cr1 | dma_thresh | drv_data->dma_cr1; in pxa2xx_spi_transfer_one()
1034 pxa2xx_spi_write(drv_data, SSSR, drv_data->clear_sr); in pxa2xx_spi_transfer_one()
1036 pxa2xx_spi_dma_start(drv_data); in pxa2xx_spi_transfer_one()
1039 drv_data->transfer_handler = interrupt_transfer; in pxa2xx_spi_transfer_one()
1042 cr1 = chip->cr1 | chip->threshold | drv_data->int_cr1; in pxa2xx_spi_transfer_one()
1043 write_SSSR_CS(drv_data, drv_data->clear_sr); in pxa2xx_spi_transfer_one()
1047 cr0 = pxa2xx_configure_sscr0(drv_data, clk_div, bits); in pxa2xx_spi_transfer_one()
1048 if (!pxa25x_ssp_comp(drv_data)) in pxa2xx_spi_transfer_one()
1059 if (is_lpss_ssp(drv_data)) { in pxa2xx_spi_transfer_one()
1060 pxa2xx_spi_update(drv_data, SSIRF, GENMASK(7, 0), chip->lpss_rx_threshold); in pxa2xx_spi_transfer_one()
1061 pxa2xx_spi_update(drv_data, SSITF, GENMASK(15, 0), chip->lpss_tx_threshold); in pxa2xx_spi_transfer_one()
1064 if (is_mrfld_ssp(drv_data)) { in pxa2xx_spi_transfer_one()
1071 pxa2xx_spi_update(drv_data, SFIFOTT, mask, thresh); in pxa2xx_spi_transfer_one()
1074 if (is_quark_x1000_ssp(drv_data)) in pxa2xx_spi_transfer_one()
1075 pxa2xx_spi_update(drv_data, DDS_RATE, GENMASK(23, 0), chip->dds_rate); in pxa2xx_spi_transfer_one()
1078 if (!is_mmp2_ssp(drv_data)) in pxa2xx_spi_transfer_one()
1079 pxa_ssp_disable(drv_data->ssp); in pxa2xx_spi_transfer_one()
1081 if (!pxa25x_ssp_comp(drv_data)) in pxa2xx_spi_transfer_one()
1082 pxa2xx_spi_write(drv_data, SSTO, chip->timeout); in pxa2xx_spi_transfer_one()
1085 pxa2xx_spi_update(drv_data, SSCR1, change_mask, cr1); in pxa2xx_spi_transfer_one()
1088 pxa2xx_spi_update(drv_data, SSCR0, GENMASK(31, 0), cr0); in pxa2xx_spi_transfer_one()
1091 pxa_ssp_enable(drv_data->ssp); in pxa2xx_spi_transfer_one()
1093 if (is_mmp2_ssp(drv_data)) { in pxa2xx_spi_transfer_one()
1094 u8 tx_level = read_SSSR_bits(drv_data, SSSR_TFL_MASK) >> 8; in pxa2xx_spi_transfer_one()
1101 drv_data->tx += tx_level; in pxa2xx_spi_transfer_one()
1106 while (drv_data->write(drv_data)) in pxa2xx_spi_transfer_one()
1108 if (drv_data->gpiod_ready) { in pxa2xx_spi_transfer_one()
1109 gpiod_set_value(drv_data->gpiod_ready, 1); in pxa2xx_spi_transfer_one()
1111 gpiod_set_value(drv_data->gpiod_ready, 0); in pxa2xx_spi_transfer_one()
1119 pxa2xx_spi_write(drv_data, SSCR1, cr1); in pxa2xx_spi_transfer_one()
1126 struct driver_data *drv_data = spi_controller_get_devdata(controller); in pxa2xx_spi_target_abort() local
1128 int_error_stop(drv_data, "transfer aborted", -EINTR); in pxa2xx_spi_target_abort()
1136 struct driver_data *drv_data = spi_controller_get_devdata(controller); in pxa2xx_spi_handle_err() local
1138 int_stop_and_reset(drv_data); in pxa2xx_spi_handle_err()
1141 pxa2xx_spi_off(drv_data); in pxa2xx_spi_handle_err()
1150 if (atomic_read(&drv_data->dma_running)) in pxa2xx_spi_handle_err()
1151 pxa2xx_spi_dma_stop(drv_data); in pxa2xx_spi_handle_err()
1156 struct driver_data *drv_data = spi_controller_get_devdata(controller); in pxa2xx_spi_unprepare_transfer() local
1159 pxa2xx_spi_off(drv_data); in pxa2xx_spi_unprepare_transfer()
1169 struct driver_data *drv_data = in setup() local
1173 switch (drv_data->ssp_type) { in setup()
1195 config = lpss_get_config(drv_data); in setup()
1202 if (spi_controller_is_target(drv_data->controller)) { in setup()
1219 if (drv_data->ssp_type == CE4100_SSP) { in setup()
1227 chip->enable_dma = drv_data->controller_info->enable_dma; in setup()
1251 if (spi_controller_is_target(drv_data->controller)) { in setup()
1258 if (is_lpss_ssp(drv_data)) { in setup()
1264 if (is_mrfld_ssp(drv_data)) { in setup()
1288 switch (drv_data->ssp_type) { in setup()
1409 struct driver_data *drv_data = spi_controller_get_devdata(controller); in pxa2xx_spi_fw_translate_cs() local
1411 if (has_acpi_companion(drv_data->ssp->dev)) { in pxa2xx_spi_fw_translate_cs()
1412 switch (drv_data->ssp_type) { in pxa2xx_spi_fw_translate_cs()
1440 struct driver_data *drv_data; in pxa2xx_spi_probe() local
1465 controller = devm_spi_alloc_target(dev, sizeof(*drv_data)); in pxa2xx_spi_probe()
1467 controller = devm_spi_alloc_host(dev, sizeof(*drv_data)); in pxa2xx_spi_probe()
1474 drv_data = spi_controller_get_devdata(controller); in pxa2xx_spi_probe()
1475 drv_data->controller = controller; in pxa2xx_spi_probe()
1476 drv_data->controller_info = platform_info; in pxa2xx_spi_probe()
1477 drv_data->ssp = ssp; in pxa2xx_spi_probe()
1497 drv_data->ssp_type = ssp->type; 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 in pxa2xx_spi_probe()
1523 drv_data); in pxa2xx_spi_probe()
1531 status = pxa2xx_spi_dma_setup(drv_data); in pxa2xx_spi_probe()
1553 if (!pxa25x_ssp_comp(drv_data)) in pxa2xx_spi_probe()
1556 else if (!is_quark_x1000_ssp(drv_data)) in pxa2xx_spi_probe()
1563 switch (drv_data->ssp_type) { in pxa2xx_spi_probe()
1567 pxa2xx_spi_write(drv_data, SSCR1, tmp); in pxa2xx_spi_probe()
1571 pxa2xx_spi_write(drv_data, SSCR0, tmp); in pxa2xx_spi_probe()
1576 pxa2xx_spi_write(drv_data, SSCR1, tmp); in pxa2xx_spi_probe()
1578 pxa2xx_spi_write(drv_data, SSCR0, tmp); in pxa2xx_spi_probe()
1593 pxa2xx_spi_write(drv_data, SSCR1, tmp); in pxa2xx_spi_probe()
1597 pxa2xx_spi_write(drv_data, SSCR0, tmp); in pxa2xx_spi_probe()
1601 if (!pxa25x_ssp_comp(drv_data)) in pxa2xx_spi_probe()
1602 pxa2xx_spi_write(drv_data, SSTO, 0); in pxa2xx_spi_probe()
1604 if (!is_quark_x1000_ssp(drv_data)) in pxa2xx_spi_probe()
1605 pxa2xx_spi_write(drv_data, SSPSP, 0); in pxa2xx_spi_probe()
1607 if (is_lpss_ssp(drv_data)) { in pxa2xx_spi_probe()
1608 lpss_ssp_setup(drv_data); in pxa2xx_spi_probe()
1609 config = lpss_get_config(drv_data); in pxa2xx_spi_probe()
1611 tmp = __lpss_ssp_read_priv(drv_data, in pxa2xx_spi_probe()
1624 drv_data->gpiod_ready = devm_gpiod_get_optional(dev, in pxa2xx_spi_probe()
1626 if (IS_ERR(drv_data->gpiod_ready)) { in pxa2xx_spi_probe()
1627 status = PTR_ERR(drv_data->gpiod_ready); in pxa2xx_spi_probe()
1638 platform_set_drvdata(pdev, drv_data); in pxa2xx_spi_probe()
1654 pxa2xx_spi_dma_release(drv_data); in pxa2xx_spi_probe()
1655 free_irq(ssp->irq, drv_data); in pxa2xx_spi_probe()
1664 struct driver_data *drv_data = platform_get_drvdata(pdev); in pxa2xx_spi_remove() local
1665 struct ssp_device *ssp = drv_data->ssp; in pxa2xx_spi_remove()
1669 spi_unregister_controller(drv_data->controller); in pxa2xx_spi_remove()
1676 if (drv_data->controller_info->enable_dma) in pxa2xx_spi_remove()
1677 pxa2xx_spi_dma_release(drv_data); in pxa2xx_spi_remove()
1683 free_irq(ssp->irq, drv_data); in pxa2xx_spi_remove()
1691 struct driver_data *drv_data = dev_get_drvdata(dev); in pxa2xx_spi_suspend() local
1692 struct ssp_device *ssp = drv_data->ssp; in pxa2xx_spi_suspend()
1695 status = spi_controller_suspend(drv_data->controller); in pxa2xx_spi_suspend()
1709 struct driver_data *drv_data = dev_get_drvdata(dev); in pxa2xx_spi_resume() local
1710 struct ssp_device *ssp = drv_data->ssp; in pxa2xx_spi_resume()
1721 return spi_controller_resume(drv_data->controller); in pxa2xx_spi_resume()
1726 struct driver_data *drv_data = dev_get_drvdata(dev); in pxa2xx_spi_runtime_suspend() local
1728 clk_disable_unprepare(drv_data->ssp->clk); in pxa2xx_spi_runtime_suspend()
1734 struct driver_data *drv_data = dev_get_drvdata(dev); in pxa2xx_spi_runtime_resume() local
1736 return clk_prepare_enable(drv_data->ssp->clk); in pxa2xx_spi_runtime_resume()