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