a3700_spi         117 drivers/spi/spi-armada-3700.c static u32 spireg_read(struct a3700_spi *a3700_spi, u32 offset)
a3700_spi         119 drivers/spi/spi-armada-3700.c 	return readl(a3700_spi->base + offset);
a3700_spi         122 drivers/spi/spi-armada-3700.c static void spireg_write(struct a3700_spi *a3700_spi, u32 offset, u32 data)
a3700_spi         124 drivers/spi/spi-armada-3700.c 	writel(data, a3700_spi->base + offset);
a3700_spi         127 drivers/spi/spi-armada-3700.c static void a3700_spi_auto_cs_unset(struct a3700_spi *a3700_spi)
a3700_spi         131 drivers/spi/spi-armada-3700.c 	val = spireg_read(a3700_spi, A3700_SPI_IF_CFG_REG);
a3700_spi         133 drivers/spi/spi-armada-3700.c 	spireg_write(a3700_spi, A3700_SPI_IF_CFG_REG, val);
a3700_spi         136 drivers/spi/spi-armada-3700.c static void a3700_spi_activate_cs(struct a3700_spi *a3700_spi, unsigned int cs)
a3700_spi         140 drivers/spi/spi-armada-3700.c 	val = spireg_read(a3700_spi, A3700_SPI_IF_CTRL_REG);
a3700_spi         142 drivers/spi/spi-armada-3700.c 	spireg_write(a3700_spi, A3700_SPI_IF_CTRL_REG, val);
a3700_spi         145 drivers/spi/spi-armada-3700.c static void a3700_spi_deactivate_cs(struct a3700_spi *a3700_spi,
a3700_spi         150 drivers/spi/spi-armada-3700.c 	val = spireg_read(a3700_spi, A3700_SPI_IF_CTRL_REG);
a3700_spi         152 drivers/spi/spi-armada-3700.c 	spireg_write(a3700_spi, A3700_SPI_IF_CTRL_REG, val);
a3700_spi         155 drivers/spi/spi-armada-3700.c static int a3700_spi_pin_mode_set(struct a3700_spi *a3700_spi,
a3700_spi         160 drivers/spi/spi-armada-3700.c 	val = spireg_read(a3700_spi, A3700_SPI_IF_CFG_REG);
a3700_spi         177 drivers/spi/spi-armada-3700.c 		dev_err(&a3700_spi->master->dev, "wrong pin mode %u", pin_mode);
a3700_spi         181 drivers/spi/spi-armada-3700.c 	spireg_write(a3700_spi, A3700_SPI_IF_CFG_REG, val);
a3700_spi         186 drivers/spi/spi-armada-3700.c static void a3700_spi_fifo_mode_set(struct a3700_spi *a3700_spi, bool enable)
a3700_spi         190 drivers/spi/spi-armada-3700.c 	val = spireg_read(a3700_spi, A3700_SPI_IF_CFG_REG);
a3700_spi         195 drivers/spi/spi-armada-3700.c 	spireg_write(a3700_spi, A3700_SPI_IF_CFG_REG, val);
a3700_spi         198 drivers/spi/spi-armada-3700.c static void a3700_spi_mode_set(struct a3700_spi *a3700_spi,
a3700_spi         203 drivers/spi/spi-armada-3700.c 	val = spireg_read(a3700_spi, A3700_SPI_IF_CFG_REG);
a3700_spi         215 drivers/spi/spi-armada-3700.c 	spireg_write(a3700_spi, A3700_SPI_IF_CFG_REG, val);
a3700_spi         218 drivers/spi/spi-armada-3700.c static void a3700_spi_clock_set(struct a3700_spi *a3700_spi,
a3700_spi         224 drivers/spi/spi-armada-3700.c 	prescale = DIV_ROUND_UP(clk_get_rate(a3700_spi->clk), speed_hz);
a3700_spi         233 drivers/spi/spi-armada-3700.c 	val = spireg_read(a3700_spi, A3700_SPI_IF_CFG_REG);
a3700_spi         237 drivers/spi/spi-armada-3700.c 	spireg_write(a3700_spi, A3700_SPI_IF_CFG_REG, val);
a3700_spi         240 drivers/spi/spi-armada-3700.c 		val = spireg_read(a3700_spi, A3700_SPI_IF_TIME_REG);
a3700_spi         242 drivers/spi/spi-armada-3700.c 		spireg_write(a3700_spi, A3700_SPI_IF_TIME_REG, val);
a3700_spi         246 drivers/spi/spi-armada-3700.c static void a3700_spi_bytelen_set(struct a3700_spi *a3700_spi, unsigned int len)
a3700_spi         250 drivers/spi/spi-armada-3700.c 	val = spireg_read(a3700_spi, A3700_SPI_IF_CFG_REG);
a3700_spi         255 drivers/spi/spi-armada-3700.c 	spireg_write(a3700_spi, A3700_SPI_IF_CFG_REG, val);
a3700_spi         257 drivers/spi/spi-armada-3700.c 	a3700_spi->byte_len = len;
a3700_spi         260 drivers/spi/spi-armada-3700.c static int a3700_spi_fifo_flush(struct a3700_spi *a3700_spi)
a3700_spi         265 drivers/spi/spi-armada-3700.c 	val = spireg_read(a3700_spi, A3700_SPI_IF_CFG_REG);
a3700_spi         267 drivers/spi/spi-armada-3700.c 	spireg_write(a3700_spi, A3700_SPI_IF_CFG_REG, val);
a3700_spi         270 drivers/spi/spi-armada-3700.c 		val = spireg_read(a3700_spi, A3700_SPI_IF_CFG_REG);
a3700_spi         279 drivers/spi/spi-armada-3700.c static int a3700_spi_init(struct a3700_spi *a3700_spi)
a3700_spi         281 drivers/spi/spi-armada-3700.c 	struct spi_master *master = a3700_spi->master;
a3700_spi         286 drivers/spi/spi-armada-3700.c 	val = spireg_read(a3700_spi, A3700_SPI_IF_CFG_REG);
a3700_spi         288 drivers/spi/spi-armada-3700.c 	spireg_write(a3700_spi, A3700_SPI_IF_CFG_REG, val);
a3700_spi         292 drivers/spi/spi-armada-3700.c 	val = spireg_read(a3700_spi, A3700_SPI_IF_CFG_REG);
a3700_spi         294 drivers/spi/spi-armada-3700.c 	spireg_write(a3700_spi, A3700_SPI_IF_CFG_REG, val);
a3700_spi         297 drivers/spi/spi-armada-3700.c 	a3700_spi_auto_cs_unset(a3700_spi);
a3700_spi         299 drivers/spi/spi-armada-3700.c 		a3700_spi_deactivate_cs(a3700_spi, i);
a3700_spi         302 drivers/spi/spi-armada-3700.c 	a3700_spi_fifo_mode_set(a3700_spi, true);
a3700_spi         305 drivers/spi/spi-armada-3700.c 	a3700_spi_mode_set(a3700_spi, master->mode_bits);
a3700_spi         308 drivers/spi/spi-armada-3700.c 	spireg_write(a3700_spi, A3700_SPI_IF_HDR_CNT_REG, 0);
a3700_spi         309 drivers/spi/spi-armada-3700.c 	spireg_write(a3700_spi, A3700_SPI_IF_DIN_CNT_REG, 0);
a3700_spi         312 drivers/spi/spi-armada-3700.c 	spireg_write(a3700_spi, A3700_SPI_INT_MASK_REG, 0);
a3700_spi         313 drivers/spi/spi-armada-3700.c 	spireg_write(a3700_spi, A3700_SPI_INT_STAT_REG, ~0U);
a3700_spi         321 drivers/spi/spi-armada-3700.c 	struct a3700_spi *a3700_spi;
a3700_spi         324 drivers/spi/spi-armada-3700.c 	a3700_spi = spi_master_get_devdata(master);
a3700_spi         327 drivers/spi/spi-armada-3700.c 	cause = spireg_read(a3700_spi, A3700_SPI_INT_STAT_REG);
a3700_spi         329 drivers/spi/spi-armada-3700.c 	if (!cause || !(a3700_spi->wait_mask & cause))
a3700_spi         333 drivers/spi/spi-armada-3700.c 	spireg_write(a3700_spi, A3700_SPI_INT_MASK_REG, 0);
a3700_spi         334 drivers/spi/spi-armada-3700.c 	spireg_write(a3700_spi, A3700_SPI_INT_STAT_REG, cause);
a3700_spi         337 drivers/spi/spi-armada-3700.c 	complete(&a3700_spi->done);
a3700_spi         344 drivers/spi/spi-armada-3700.c 	struct a3700_spi *a3700_spi;
a3700_spi         349 drivers/spi/spi-armada-3700.c 	a3700_spi = spi_master_get_devdata(spi->master);
a3700_spi         357 drivers/spi/spi-armada-3700.c 	ctrl_reg = spireg_read(a3700_spi, A3700_SPI_IF_CTRL_REG);
a3700_spi         358 drivers/spi/spi-armada-3700.c 	if (a3700_spi->wait_mask & ctrl_reg)
a3700_spi         361 drivers/spi/spi-armada-3700.c 	reinit_completion(&a3700_spi->done);
a3700_spi         363 drivers/spi/spi-armada-3700.c 	spireg_write(a3700_spi, A3700_SPI_INT_MASK_REG,
a3700_spi         364 drivers/spi/spi-armada-3700.c 		     a3700_spi->wait_mask);
a3700_spi         367 drivers/spi/spi-armada-3700.c 	timeout = wait_for_completion_timeout(&a3700_spi->done,
a3700_spi         370 drivers/spi/spi-armada-3700.c 	a3700_spi->wait_mask = 0;
a3700_spi         383 drivers/spi/spi-armada-3700.c 	ctrl_reg = spireg_read(a3700_spi, A3700_SPI_IF_CTRL_REG);
a3700_spi         384 drivers/spi/spi-armada-3700.c 	if (a3700_spi->wait_mask & ctrl_reg)
a3700_spi         387 drivers/spi/spi-armada-3700.c 	spireg_write(a3700_spi, A3700_SPI_INT_MASK_REG, 0);
a3700_spi         396 drivers/spi/spi-armada-3700.c 	struct a3700_spi *a3700_spi;
a3700_spi         398 drivers/spi/spi-armada-3700.c 	a3700_spi = spi_master_get_devdata(spi->master);
a3700_spi         399 drivers/spi/spi-armada-3700.c 	a3700_spi->wait_mask = bit_mask;
a3700_spi         404 drivers/spi/spi-armada-3700.c static void a3700_spi_fifo_thres_set(struct a3700_spi *a3700_spi,
a3700_spi         409 drivers/spi/spi-armada-3700.c 	val = spireg_read(a3700_spi, A3700_SPI_IF_CFG_REG);
a3700_spi         414 drivers/spi/spi-armada-3700.c 	spireg_write(a3700_spi, A3700_SPI_IF_CFG_REG, val);
a3700_spi         420 drivers/spi/spi-armada-3700.c 	struct a3700_spi *a3700_spi;
a3700_spi         422 drivers/spi/spi-armada-3700.c 	a3700_spi = spi_master_get_devdata(spi->master);
a3700_spi         424 drivers/spi/spi-armada-3700.c 	a3700_spi_clock_set(a3700_spi, xfer->speed_hz);
a3700_spi         429 drivers/spi/spi-armada-3700.c 	a3700_spi_bytelen_set(a3700_spi, 4);
a3700_spi         432 drivers/spi/spi-armada-3700.c 	a3700_spi->tx_buf  = xfer->tx_buf;
a3700_spi         433 drivers/spi/spi-armada-3700.c 	a3700_spi->rx_buf  = xfer->rx_buf;
a3700_spi         434 drivers/spi/spi-armada-3700.c 	a3700_spi->buf_len = xfer->len;
a3700_spi         439 drivers/spi/spi-armada-3700.c 	struct a3700_spi *a3700_spi = spi_master_get_devdata(spi->master);
a3700_spi         442 drivers/spi/spi-armada-3700.c 		a3700_spi_activate_cs(a3700_spi, spi->chip_select);
a3700_spi         444 drivers/spi/spi-armada-3700.c 		a3700_spi_deactivate_cs(a3700_spi, spi->chip_select);
a3700_spi         447 drivers/spi/spi-armada-3700.c static void a3700_spi_header_set(struct a3700_spi *a3700_spi)
a3700_spi         453 drivers/spi/spi-armada-3700.c 	spireg_write(a3700_spi, A3700_SPI_IF_INST_REG, 0);
a3700_spi         454 drivers/spi/spi-armada-3700.c 	spireg_write(a3700_spi, A3700_SPI_IF_ADDR_REG, 0);
a3700_spi         455 drivers/spi/spi-armada-3700.c 	spireg_write(a3700_spi, A3700_SPI_IF_RMODE_REG, 0);
a3700_spi         456 drivers/spi/spi-armada-3700.c 	spireg_write(a3700_spi, A3700_SPI_IF_HDR_CNT_REG, 0);
a3700_spi         459 drivers/spi/spi-armada-3700.c 	if (a3700_spi->tx_buf) {
a3700_spi         468 drivers/spi/spi-armada-3700.c 		addr_cnt = a3700_spi->buf_len % 4;
a3700_spi         472 drivers/spi/spi-armada-3700.c 			spireg_write(a3700_spi, A3700_SPI_IF_HDR_CNT_REG, val);
a3700_spi         475 drivers/spi/spi-armada-3700.c 			a3700_spi->buf_len -= addr_cnt;
a3700_spi         480 drivers/spi/spi-armada-3700.c 				val = (val << 8) | a3700_spi->tx_buf[0];
a3700_spi         481 drivers/spi/spi-armada-3700.c 				a3700_spi->tx_buf++;
a3700_spi         483 drivers/spi/spi-armada-3700.c 			spireg_write(a3700_spi, A3700_SPI_IF_ADDR_REG, val);
a3700_spi         488 drivers/spi/spi-armada-3700.c static int a3700_is_wfifo_full(struct a3700_spi *a3700_spi)
a3700_spi         492 drivers/spi/spi-armada-3700.c 	val = spireg_read(a3700_spi, A3700_SPI_IF_CTRL_REG);
a3700_spi         496 drivers/spi/spi-armada-3700.c static int a3700_spi_fifo_write(struct a3700_spi *a3700_spi)
a3700_spi         500 drivers/spi/spi-armada-3700.c 	while (!a3700_is_wfifo_full(a3700_spi) && a3700_spi->buf_len) {
a3700_spi         501 drivers/spi/spi-armada-3700.c 		val = *(u32 *)a3700_spi->tx_buf;
a3700_spi         502 drivers/spi/spi-armada-3700.c 		spireg_write(a3700_spi, A3700_SPI_DATA_OUT_REG, val);
a3700_spi         503 drivers/spi/spi-armada-3700.c 		a3700_spi->buf_len -= 4;
a3700_spi         504 drivers/spi/spi-armada-3700.c 		a3700_spi->tx_buf += 4;
a3700_spi         510 drivers/spi/spi-armada-3700.c static int a3700_is_rfifo_empty(struct a3700_spi *a3700_spi)
a3700_spi         512 drivers/spi/spi-armada-3700.c 	u32 val = spireg_read(a3700_spi, A3700_SPI_IF_CTRL_REG);
a3700_spi         517 drivers/spi/spi-armada-3700.c static int a3700_spi_fifo_read(struct a3700_spi *a3700_spi)
a3700_spi         521 drivers/spi/spi-armada-3700.c 	while (!a3700_is_rfifo_empty(a3700_spi) && a3700_spi->buf_len) {
a3700_spi         522 drivers/spi/spi-armada-3700.c 		val = spireg_read(a3700_spi, A3700_SPI_DATA_IN_REG);
a3700_spi         523 drivers/spi/spi-armada-3700.c 		if (a3700_spi->buf_len >= 4) {
a3700_spi         525 drivers/spi/spi-armada-3700.c 			memcpy(a3700_spi->rx_buf, &val, 4);
a3700_spi         527 drivers/spi/spi-armada-3700.c 			a3700_spi->buf_len -= 4;
a3700_spi         528 drivers/spi/spi-armada-3700.c 			a3700_spi->rx_buf += 4;
a3700_spi         535 drivers/spi/spi-armada-3700.c 			while (a3700_spi->buf_len) {
a3700_spi         536 drivers/spi/spi-armada-3700.c 				*a3700_spi->rx_buf = val & 0xff;
a3700_spi         539 drivers/spi/spi-armada-3700.c 				a3700_spi->buf_len--;
a3700_spi         540 drivers/spi/spi-armada-3700.c 				a3700_spi->rx_buf++;
a3700_spi         548 drivers/spi/spi-armada-3700.c static void a3700_spi_transfer_abort_fifo(struct a3700_spi *a3700_spi)
a3700_spi         553 drivers/spi/spi-armada-3700.c 	val = spireg_read(a3700_spi, A3700_SPI_IF_CFG_REG);
a3700_spi         555 drivers/spi/spi-armada-3700.c 	spireg_write(a3700_spi, A3700_SPI_IF_CFG_REG, val);
a3700_spi         558 drivers/spi/spi-armada-3700.c 		val = spireg_read(a3700_spi, A3700_SPI_IF_CFG_REG);
a3700_spi         564 drivers/spi/spi-armada-3700.c 	a3700_spi_fifo_flush(a3700_spi);
a3700_spi         567 drivers/spi/spi-armada-3700.c 	spireg_write(a3700_spi, A3700_SPI_IF_CFG_REG, val);
a3700_spi         573 drivers/spi/spi-armada-3700.c 	struct a3700_spi *a3700_spi = spi_master_get_devdata(master);
a3700_spi         577 drivers/spi/spi-armada-3700.c 	ret = clk_enable(a3700_spi->clk);
a3700_spi         584 drivers/spi/spi-armada-3700.c 	ret = a3700_spi_fifo_flush(a3700_spi);
a3700_spi         588 drivers/spi/spi-armada-3700.c 	a3700_spi_mode_set(a3700_spi, spi->mode);
a3700_spi         597 drivers/spi/spi-armada-3700.c 	struct a3700_spi *a3700_spi = spi_master_get_devdata(master);
a3700_spi         603 drivers/spi/spi-armada-3700.c 	a3700_spi_fifo_mode_set(a3700_spi, true);
a3700_spi         607 drivers/spi/spi-armada-3700.c 	a3700_spi_fifo_thres_set(a3700_spi, byte_len);
a3700_spi         614 drivers/spi/spi-armada-3700.c 	a3700_spi_pin_mode_set(a3700_spi, nbits, xfer->rx_buf ? true : false);
a3700_spi         617 drivers/spi/spi-armada-3700.c 	a3700_spi_fifo_flush(a3700_spi);
a3700_spi         620 drivers/spi/spi-armada-3700.c 	a3700_spi_header_set(a3700_spi);
a3700_spi         626 drivers/spi/spi-armada-3700.c 		spireg_write(a3700_spi, A3700_SPI_DATA_OUT_REG, 0);
a3700_spi         629 drivers/spi/spi-armada-3700.c 		spireg_write(a3700_spi, A3700_SPI_IF_DIN_CNT_REG,
a3700_spi         630 drivers/spi/spi-armada-3700.c 			     a3700_spi->buf_len);
a3700_spi         632 drivers/spi/spi-armada-3700.c 		val = spireg_read(a3700_spi, A3700_SPI_IF_CFG_REG);
a3700_spi         635 drivers/spi/spi-armada-3700.c 		spireg_write(a3700_spi, A3700_SPI_IF_CFG_REG, val);
a3700_spi         638 drivers/spi/spi-armada-3700.c 		val = spireg_read(a3700_spi, A3700_SPI_IF_CFG_REG);
a3700_spi         640 drivers/spi/spi-armada-3700.c 		spireg_write(a3700_spi, A3700_SPI_IF_CFG_REG, val);
a3700_spi         648 drivers/spi/spi-armada-3700.c 		a3700_spi->xmit_data = (a3700_spi->buf_len != 0);
a3700_spi         651 drivers/spi/spi-armada-3700.c 	while (a3700_spi->buf_len) {
a3700_spi         652 drivers/spi/spi-armada-3700.c 		if (a3700_spi->tx_buf) {
a3700_spi         662 drivers/spi/spi-armada-3700.c 			ret = a3700_spi_fifo_write(a3700_spi);
a3700_spi         665 drivers/spi/spi-armada-3700.c 		} else if (a3700_spi->rx_buf) {
a3700_spi         675 drivers/spi/spi-armada-3700.c 			ret = a3700_spi_fifo_read(a3700_spi);
a3700_spi         693 drivers/spi/spi-armada-3700.c 	if (a3700_spi->tx_buf) {
a3700_spi         694 drivers/spi/spi-armada-3700.c 		if (a3700_spi->xmit_data) {
a3700_spi         712 drivers/spi/spi-armada-3700.c 		val = spireg_read(a3700_spi, A3700_SPI_IF_CFG_REG);
a3700_spi         714 drivers/spi/spi-armada-3700.c 		spireg_write(a3700_spi, A3700_SPI_IF_CFG_REG, val);
a3700_spi         718 drivers/spi/spi-armada-3700.c 		val = spireg_read(a3700_spi, A3700_SPI_IF_CFG_REG);
a3700_spi         731 drivers/spi/spi-armada-3700.c 	spireg_write(a3700_spi, A3700_SPI_IF_CFG_REG, val);
a3700_spi         735 drivers/spi/spi-armada-3700.c 	a3700_spi_transfer_abort_fifo(a3700_spi);
a3700_spi         746 drivers/spi/spi-armada-3700.c 	struct a3700_spi *a3700_spi = spi_master_get_devdata(master);
a3700_spi         750 drivers/spi/spi-armada-3700.c 	a3700_spi_fifo_mode_set(a3700_spi, false);
a3700_spi         752 drivers/spi/spi-armada-3700.c 	while (a3700_spi->buf_len) {
a3700_spi         757 drivers/spi/spi-armada-3700.c 		if (a3700_spi->buf_len < 4)
a3700_spi         758 drivers/spi/spi-armada-3700.c 			a3700_spi_bytelen_set(a3700_spi, 1);
a3700_spi         760 drivers/spi/spi-armada-3700.c 		if (a3700_spi->byte_len == 1)
a3700_spi         761 drivers/spi/spi-armada-3700.c 			val = *a3700_spi->tx_buf;
a3700_spi         763 drivers/spi/spi-armada-3700.c 			val = *(u32 *)a3700_spi->tx_buf;
a3700_spi         765 drivers/spi/spi-armada-3700.c 		spireg_write(a3700_spi, A3700_SPI_DATA_OUT_REG, val);
a3700_spi         768 drivers/spi/spi-armada-3700.c 		while (!(spireg_read(a3700_spi, A3700_SPI_IF_CTRL_REG) &
a3700_spi         772 drivers/spi/spi-armada-3700.c 		val = spireg_read(a3700_spi, A3700_SPI_DATA_IN_REG);
a3700_spi         774 drivers/spi/spi-armada-3700.c 		memcpy(a3700_spi->rx_buf, &val, a3700_spi->byte_len);
a3700_spi         776 drivers/spi/spi-armada-3700.c 		a3700_spi->buf_len -= a3700_spi->byte_len;
a3700_spi         777 drivers/spi/spi-armada-3700.c 		a3700_spi->tx_buf += a3700_spi->byte_len;
a3700_spi         778 drivers/spi/spi-armada-3700.c 		a3700_spi->rx_buf += a3700_spi->byte_len;
a3700_spi         802 drivers/spi/spi-armada-3700.c 	struct a3700_spi *a3700_spi = spi_master_get_devdata(master);
a3700_spi         804 drivers/spi/spi-armada-3700.c 	clk_disable(a3700_spi->clk);
a3700_spi         821 drivers/spi/spi-armada-3700.c 	struct a3700_spi *spi;
a3700_spi         853 drivers/spi/spi-armada-3700.c 	memset(spi, 0, sizeof(struct a3700_spi));
a3700_spi         919 drivers/spi/spi-armada-3700.c 	struct a3700_spi *spi = spi_master_get_devdata(master);