Lines Matching refs:bs
130 struct bcmbca_hsspi *bs = spi_controller_get_devdata(ctrl);
132 return sprintf(buf, "%d\n", bs->wait_mode);
139 struct bcmbca_hsspi *bs = spi_controller_get_devdata(ctrl);
150 mutex_lock(&bs->msg_mutex);
151 bs->wait_mode = val;
154 __raw_writel(HSSPI_INT_CLEAR_ALL, bs->regs + HSSPI_INT_STATUS_REG);
155 mutex_unlock(&bs->msg_mutex);
171 static void bcmbca_hsspi_set_cs(struct bcmbca_hsspi *bs, unsigned int cs,
180 mutex_lock(&bs->bus_mutex);
182 reg = __raw_readl(bs->spim_ctrl);
188 __raw_writel(reg, bs->spim_ctrl);
190 mutex_unlock(&bs->bus_mutex);
193 static void bcmbca_hsspi_set_clk(struct bcmbca_hsspi *bs,
199 reg = DIV_ROUND_UP(2048, DIV_ROUND_UP(bs->speed_hz, hz));
201 bs->regs + HSSPI_PROFILE_CLK_CTRL_REG(profile));
203 reg = __raw_readl(bs->regs + HSSPI_PROFILE_SIGNAL_CTRL_REG(profile));
208 __raw_writel(reg, bs->regs + HSSPI_PROFILE_SIGNAL_CTRL_REG(profile));
210 mutex_lock(&bs->bus_mutex);
212 reg = __raw_readl(bs->regs + HSSPI_GLOBAL_CTRL_REG);
216 __raw_writel(reg, bs->regs + HSSPI_GLOBAL_CTRL_REG);
218 mutex_unlock(&bs->bus_mutex);
221 static int bcmbca_hsspi_wait_cmd(struct bcmbca_hsspi *bs, unsigned int cs)
227 if (bs->wait_mode == HSSPI_WAIT_MODE_INTR) {
228 if (wait_for_completion_timeout(&bs->done, HZ) == 0)
234 reg = __raw_readl(bs->regs + HSSPI_PINGPONG_STATUS_REG(0));
245 dev_err(&bs->pdev->dev, "transfer timed out!\n");
253 struct bcmbca_hsspi *bs = spi_controller_get_devdata(spi->controller);
262 bcmbca_hsspi_set_clk(bs, spi, t->speed_hz);
285 bs->regs + HSSPI_PROFILE_MODE_CTRL_REG(chip_select));
290 reinit_completion(&bs->done);
292 memcpy_toio(bs->fifo + HSSPI_OPCODE_LEN, tx, curr_step);
297 __raw_writew(val, bs->fifo);
300 if (bs->wait_mode == HSSPI_WAIT_MODE_INTR)
302 bs->regs + HSSPI_INT_MASK_REG);
306 bcmbca_hsspi_set_cs(bs, chip_select, true);
313 __raw_writel(reg, bs->regs + HSSPI_PINGPONG_COMMAND_REG(0));
315 if (bcmbca_hsspi_wait_cmd(bs, spi_get_chipselect(spi, 0)))
321 memcpy_fromio(rx, bs->fifo, curr_step);
331 struct bcmbca_hsspi *bs = spi_controller_get_devdata(spi->controller);
334 reg = __raw_readl(bs->regs +
341 __raw_writel(reg, bs->regs +
344 mutex_lock(&bs->bus_mutex);
345 reg = __raw_readl(bs->regs + HSSPI_GLOBAL_CTRL_REG);
351 __raw_writel(reg, bs->regs + HSSPI_GLOBAL_CTRL_REG);
354 bs->cs_polarity |= BIT(spi_get_chipselect(spi, 0));
356 bs->cs_polarity &= ~BIT(spi_get_chipselect(spi, 0));
358 reg = __raw_readl(bs->spim_ctrl);
362 __raw_writel(reg, bs->spim_ctrl);
364 mutex_unlock(&bs->bus_mutex);
372 struct bcmbca_hsspi *bs = spi_controller_get_devdata(host);
378 mutex_lock(&bs->msg_mutex);
391 bcmbca_hsspi_set_cs(bs, spi_get_chipselect(spi, 0), false);
396 bcmbca_hsspi_set_cs(bs, spi_get_chipselect(spi, 0), true);
400 bcmbca_hsspi_set_cs(bs, spi_get_chipselect(spi, 0), t->cs_off);
406 mutex_unlock(&bs->msg_mutex);
409 bcmbca_hsspi_set_cs(bs, spi_get_chipselect(spi, 0), false);
419 struct bcmbca_hsspi *bs = (struct bcmbca_hsspi *)dev_id;
421 if (__raw_readl(bs->regs + HSSPI_INT_STATUS_MASKED_REG) == 0)
424 __raw_writel(HSSPI_INT_CLEAR_ALL, bs->regs + HSSPI_INT_STATUS_REG);
425 __raw_writel(0, bs->regs + HSSPI_INT_MASK_REG);
427 complete(&bs->done);
435 struct bcmbca_hsspi *bs;
490 host = spi_alloc_host(&pdev->dev, sizeof(*bs));
496 bs = spi_controller_get_devdata(host);
497 bs->pdev = pdev;
498 bs->clk = clk;
499 bs->pll_clk = pll_clk;
500 bs->regs = regs;
501 bs->spim_ctrl = spim_ctrl;
502 bs->speed_hz = rate;
503 bs->fifo = (u8 __iomem *) (bs->regs + HSSPI_FIFO_REG(0));
504 bs->wait_mode = HSSPI_WAIT_MODE_POLLING;
506 mutex_init(&bs->bus_mutex);
507 mutex_init(&bs->msg_mutex);
508 init_completion(&bs->done);
531 __raw_writel(0, bs->regs + HSSPI_INT_MASK_REG);
534 __raw_writel(HSSPI_INT_CLEAR_ALL, bs->regs + HSSPI_INT_STATUS_REG);
537 reg = __raw_readl(bs->regs + HSSPI_GLOBAL_CTRL_REG);
538 bs->cs_polarity = reg & GLOBAL_CTRL_CS_POLARITY_MASK;
540 bs->regs + HSSPI_GLOBAL_CTRL_REG);
544 pdev->name, bs);
582 struct bcmbca_hsspi *bs = spi_controller_get_devdata(host);
585 __raw_writel(0, bs->regs + HSSPI_INT_MASK_REG);
586 clk_disable_unprepare(bs->pll_clk);
587 clk_disable_unprepare(bs->clk);
595 struct bcmbca_hsspi *bs = spi_controller_get_devdata(host);
598 clk_disable_unprepare(bs->pll_clk);
599 clk_disable_unprepare(bs->clk);
607 struct bcmbca_hsspi *bs = spi_controller_get_devdata(host);
610 ret = clk_prepare_enable(bs->clk);
614 if (bs->pll_clk) {
615 ret = clk_prepare_enable(bs->pll_clk);
617 clk_disable_unprepare(bs->clk);