Lines Matching defs:spi_st
54 struct spi_st {
70 static void ssc_write_tx_fifo(struct spi_st *spi_st)
75 if (spi_st->words_remaining > FIFO_SIZE)
78 count = spi_st->words_remaining;
81 if (spi_st->tx_ptr) {
82 if (spi_st->bytes_per_word == 1) {
83 word = *spi_st->tx_ptr++;
85 word = *spi_st->tx_ptr++;
86 word = *spi_st->tx_ptr++ | (word << 8);
89 writel_relaxed(word, spi_st->base + SSC_TBUF);
94 static void ssc_read_rx_fifo(struct spi_st *spi_st)
99 if (spi_st->words_remaining > FIFO_SIZE)
102 count = spi_st->words_remaining;
105 word = readl_relaxed(spi_st->base + SSC_RBUF);
107 if (spi_st->rx_ptr) {
108 if (spi_st->bytes_per_word == 1) {
109 *spi_st->rx_ptr++ = (uint8_t)word;
111 *spi_st->rx_ptr++ = (word >> 8);
112 *spi_st->rx_ptr++ = word & 0xff;
116 spi_st->words_remaining -= count;
122 struct spi_st *spi_st = spi_master_get_devdata(master);
126 spi_st->tx_ptr = t->tx_buf;
127 spi_st->rx_ptr = t->rx_buf;
134 spi_st->bytes_per_word = 2;
135 spi_st->words_remaining = t->len / 2;
142 spi_st->bytes_per_word = 2;
143 spi_st->words_remaining = t->len / 2;
146 ctl = readl_relaxed(spi_st->base + SSC_CTL);
147 writel_relaxed((ctl | 0xf), spi_st->base + SSC_CTL);
149 readl_relaxed(spi_st->base + SSC_RBUF);
152 spi_st->bytes_per_word = 1;
153 spi_st->words_remaining = t->len;
156 reinit_completion(&spi_st->done);
159 ssc_write_tx_fifo(spi_st);
160 writel_relaxed(SSC_IEN_TEEN, spi_st->base + SSC_IEN);
163 wait_for_completion(&spi_st->done);
167 writel_relaxed(ctl, spi_st->base + SSC_CTL);
183 struct spi_st *spi_st = spi_master_get_devdata(spi->master);
209 spi_st_clk = clk_get_rate(spi_st->clk);
220 spi_st->baud = spi_st_clk / (2 * sscbrg);
224 writel_relaxed(sscbrg, spi_st->base + SSC_BRG);
228 hz, spi_st->baud, sscbrg);
231 var = readl_relaxed(spi_st->base + SSC_CTL);
260 writel_relaxed(var, spi_st->base + SSC_CTL);
263 readl_relaxed(spi_st->base + SSC_RBUF);
275 struct spi_st *spi_st = (struct spi_st *)dev_id;
278 ssc_read_rx_fifo(spi_st);
281 if (spi_st->words_remaining) {
282 ssc_write_tx_fifo(spi_st);
285 writel_relaxed(0x0, spi_st->base + SSC_IEN);
290 readl(spi_st->base + SSC_IEN);
291 complete(&spi_st->done);
301 struct spi_st *spi_st;
305 master = spi_alloc_master(&pdev->dev, sizeof(*spi_st));
317 spi_st = spi_master_get_devdata(master);
319 spi_st->clk = devm_clk_get(&pdev->dev, "ssc");
320 if (IS_ERR(spi_st->clk)) {
322 ret = PTR_ERR(spi_st->clk);
326 ret = clk_prepare_enable(spi_st->clk);
330 init_completion(&spi_st->done);
333 spi_st->base = devm_platform_ioremap_resource(pdev, 0);
334 if (IS_ERR(spi_st->base)) {
335 ret = PTR_ERR(spi_st->base);
340 writel_relaxed(0x0, spi_st->base + SSC_I2C);
341 var = readw_relaxed(spi_st->base + SSC_CTL);
343 writel_relaxed(var, spi_st->base + SSC_CTL);
346 var = readl_relaxed(spi_st->base + SSC_CTL);
348 writel_relaxed(var, spi_st->base + SSC_CTL);
351 var = readl_relaxed(spi_st->base + SSC_CTL);
353 writel_relaxed(var, spi_st->base + SSC_CTL);
363 pdev->name, spi_st);
386 clk_disable_unprepare(spi_st->clk);
395 struct spi_st *spi_st = spi_master_get_devdata(master);
399 clk_disable_unprepare(spi_st->clk);
410 struct spi_st *spi_st = spi_master_get_devdata(master);
412 writel_relaxed(0, spi_st->base + SSC_IEN);
415 clk_disable_unprepare(spi_st->clk);
423 struct spi_st *spi_st = spi_master_get_devdata(master);
426 ret = clk_prepare_enable(spi_st->clk);