sspi              300 drivers/spi/spi-sirf.c 	void (*hwinit)(struct sirfsoc_spi *sspi);
sspi              303 drivers/spi/spi-sirf.c static void sirfsoc_usp_hwinit(struct sirfsoc_spi *sspi)
sspi              306 drivers/spi/spi-sirf.c 	writel(readl(sspi->base + sspi->regs->usp_mode1) &
sspi              307 drivers/spi/spi-sirf.c 		~SIRFSOC_USP_EN, sspi->base + sspi->regs->usp_mode1);
sspi              308 drivers/spi/spi-sirf.c 	writel(readl(sspi->base + sspi->regs->usp_mode1) |
sspi              309 drivers/spi/spi-sirf.c 		SIRFSOC_USP_EN, sspi->base + sspi->regs->usp_mode1);
sspi              312 drivers/spi/spi-sirf.c static void spi_sirfsoc_rx_word_u8(struct sirfsoc_spi *sspi)
sspi              315 drivers/spi/spi-sirf.c 	u8 *rx = sspi->rx;
sspi              317 drivers/spi/spi-sirf.c 	data = readl(sspi->base + sspi->regs->rxfifo_data);
sspi              321 drivers/spi/spi-sirf.c 		sspi->rx = rx;
sspi              324 drivers/spi/spi-sirf.c 	sspi->left_rx_word--;
sspi              327 drivers/spi/spi-sirf.c static void spi_sirfsoc_tx_word_u8(struct sirfsoc_spi *sspi)
sspi              330 drivers/spi/spi-sirf.c 	const u8 *tx = sspi->tx;
sspi              334 drivers/spi/spi-sirf.c 		sspi->tx = tx;
sspi              336 drivers/spi/spi-sirf.c 	writel(data, sspi->base + sspi->regs->txfifo_data);
sspi              337 drivers/spi/spi-sirf.c 	sspi->left_tx_word--;
sspi              340 drivers/spi/spi-sirf.c static void spi_sirfsoc_rx_word_u16(struct sirfsoc_spi *sspi)
sspi              343 drivers/spi/spi-sirf.c 	u16 *rx = sspi->rx;
sspi              345 drivers/spi/spi-sirf.c 	data = readl(sspi->base + sspi->regs->rxfifo_data);
sspi              349 drivers/spi/spi-sirf.c 		sspi->rx = rx;
sspi              352 drivers/spi/spi-sirf.c 	sspi->left_rx_word--;
sspi              355 drivers/spi/spi-sirf.c static void spi_sirfsoc_tx_word_u16(struct sirfsoc_spi *sspi)
sspi              358 drivers/spi/spi-sirf.c 	const u16 *tx = sspi->tx;
sspi              362 drivers/spi/spi-sirf.c 		sspi->tx = tx;
sspi              365 drivers/spi/spi-sirf.c 	writel(data, sspi->base + sspi->regs->txfifo_data);
sspi              366 drivers/spi/spi-sirf.c 	sspi->left_tx_word--;
sspi              369 drivers/spi/spi-sirf.c static void spi_sirfsoc_rx_word_u32(struct sirfsoc_spi *sspi)
sspi              372 drivers/spi/spi-sirf.c 	u32 *rx = sspi->rx;
sspi              374 drivers/spi/spi-sirf.c 	data = readl(sspi->base + sspi->regs->rxfifo_data);
sspi              378 drivers/spi/spi-sirf.c 		sspi->rx = rx;
sspi              381 drivers/spi/spi-sirf.c 	sspi->left_rx_word--;
sspi              385 drivers/spi/spi-sirf.c static void spi_sirfsoc_tx_word_u32(struct sirfsoc_spi *sspi)
sspi              388 drivers/spi/spi-sirf.c 	const u32 *tx = sspi->tx;
sspi              392 drivers/spi/spi-sirf.c 		sspi->tx = tx;
sspi              395 drivers/spi/spi-sirf.c 	writel(data, sspi->base + sspi->regs->txfifo_data);
sspi              396 drivers/spi/spi-sirf.c 	sspi->left_tx_word--;
sspi              401 drivers/spi/spi-sirf.c 	struct sirfsoc_spi *sspi = dev_id;
sspi              404 drivers/spi/spi-sirf.c 	spi_stat = readl(sspi->base + sspi->regs->int_st);
sspi              405 drivers/spi/spi-sirf.c 	if (sspi->tx_by_cmd && sspi->type == SIRF_REAL_SPI
sspi              407 drivers/spi/spi-sirf.c 		complete(&sspi->tx_done);
sspi              408 drivers/spi/spi-sirf.c 		writel(0x0, sspi->base + sspi->regs->int_en);
sspi              409 drivers/spi/spi-sirf.c 		writel(readl(sspi->base + sspi->regs->int_st),
sspi              410 drivers/spi/spi-sirf.c 				sspi->base + sspi->regs->int_st);
sspi              416 drivers/spi/spi-sirf.c 		complete(&sspi->tx_done);
sspi              417 drivers/spi/spi-sirf.c 		complete(&sspi->rx_done);
sspi              418 drivers/spi/spi-sirf.c 		switch (sspi->type) {
sspi              421 drivers/spi/spi-sirf.c 			writel(0x0, sspi->base + sspi->regs->int_en);
sspi              424 drivers/spi/spi-sirf.c 			writel(~0UL, sspi->base + sspi->regs->usp_int_en_clr);
sspi              427 drivers/spi/spi-sirf.c 		writel(readl(sspi->base + sspi->regs->int_st),
sspi              428 drivers/spi/spi-sirf.c 				sspi->base + sspi->regs->int_st);
sspi              432 drivers/spi/spi-sirf.c 		complete(&sspi->tx_done);
sspi              433 drivers/spi/spi-sirf.c 	while (!(readl(sspi->base + sspi->regs->int_st) &
sspi              436 drivers/spi/spi-sirf.c 	complete(&sspi->rx_done);
sspi              437 drivers/spi/spi-sirf.c 	switch (sspi->type) {
sspi              440 drivers/spi/spi-sirf.c 		writel(0x0, sspi->base + sspi->regs->int_en);
sspi              443 drivers/spi/spi-sirf.c 		writel(~0UL, sspi->base + sspi->regs->usp_int_en_clr);
sspi              446 drivers/spi/spi-sirf.c 	writel(readl(sspi->base + sspi->regs->int_st),
sspi              447 drivers/spi/spi-sirf.c 			sspi->base + sspi->regs->int_st);
sspi              462 drivers/spi/spi-sirf.c 	struct sirfsoc_spi *sspi;
sspi              466 drivers/spi/spi-sirf.c 	sspi = spi_master_get_devdata(spi->master);
sspi              467 drivers/spi/spi-sirf.c 	writel(SIRFSOC_SPI_FIFO_RESET, sspi->base + sspi->regs->txfifo_op);
sspi              468 drivers/spi/spi-sirf.c 	writel(SIRFSOC_SPI_FIFO_START, sspi->base + sspi->regs->txfifo_op);
sspi              469 drivers/spi/spi-sirf.c 	memcpy(&cmd, sspi->tx, t->len);
sspi              470 drivers/spi/spi-sirf.c 	if (sspi->word_width == 1 && !(spi->mode & SPI_LSB_FIRST))
sspi              473 drivers/spi/spi-sirf.c 	if (sspi->word_width == 2 && t->len == 4 &&
sspi              476 drivers/spi/spi-sirf.c 	writel(cmd, sspi->base + sspi->regs->spi_cmd);
sspi              478 drivers/spi/spi-sirf.c 		sspi->base + sspi->regs->int_en);
sspi              480 drivers/spi/spi-sirf.c 		sspi->base + sspi->regs->tx_rx_en);
sspi              481 drivers/spi/spi-sirf.c 	if (wait_for_completion_timeout(&sspi->tx_done, timeout) == 0) {
sspi              485 drivers/spi/spi-sirf.c 	sspi->left_rx_word -= t->len;
sspi              491 drivers/spi/spi-sirf.c 	struct sirfsoc_spi *sspi;
sspi              495 drivers/spi/spi-sirf.c 	sspi = spi_master_get_devdata(spi->master);
sspi              496 drivers/spi/spi-sirf.c 	writel(SIRFSOC_SPI_FIFO_RESET, sspi->base + sspi->regs->rxfifo_op);
sspi              497 drivers/spi/spi-sirf.c 	writel(SIRFSOC_SPI_FIFO_RESET, sspi->base + sspi->regs->txfifo_op);
sspi              498 drivers/spi/spi-sirf.c 	switch (sspi->type) {
sspi              501 drivers/spi/spi-sirf.c 			sspi->base + sspi->regs->rxfifo_op);
sspi              503 drivers/spi/spi-sirf.c 			sspi->base + sspi->regs->txfifo_op);
sspi              504 drivers/spi/spi-sirf.c 		writel(0, sspi->base + sspi->regs->int_en);
sspi              507 drivers/spi/spi-sirf.c 		writel(0x0, sspi->base + sspi->regs->rxfifo_op);
sspi              508 drivers/spi/spi-sirf.c 		writel(0x0, sspi->base + sspi->regs->txfifo_op);
sspi              509 drivers/spi/spi-sirf.c 		writel(0, sspi->base + sspi->regs->int_en);
sspi              512 drivers/spi/spi-sirf.c 		writel(0x0, sspi->base + sspi->regs->rxfifo_op);
sspi              513 drivers/spi/spi-sirf.c 		writel(0x0, sspi->base + sspi->regs->txfifo_op);
sspi              514 drivers/spi/spi-sirf.c 		writel(~0UL, sspi->base + sspi->regs->usp_int_en_clr);
sspi              517 drivers/spi/spi-sirf.c 	writel(readl(sspi->base + sspi->regs->int_st),
sspi              518 drivers/spi/spi-sirf.c 		sspi->base + sspi->regs->int_st);
sspi              519 drivers/spi/spi-sirf.c 	if (sspi->left_tx_word < sspi->dat_max_frm_len) {
sspi              520 drivers/spi/spi-sirf.c 		switch (sspi->type) {
sspi              522 drivers/spi/spi-sirf.c 			writel(readl(sspi->base + sspi->regs->spi_ctrl) |
sspi              525 drivers/spi/spi-sirf.c 				sspi->base + sspi->regs->spi_ctrl);
sspi              526 drivers/spi/spi-sirf.c 			writel(sspi->left_tx_word - 1,
sspi              527 drivers/spi/spi-sirf.c 				sspi->base + sspi->regs->tx_dma_io_len);
sspi              528 drivers/spi/spi-sirf.c 			writel(sspi->left_tx_word - 1,
sspi              529 drivers/spi/spi-sirf.c 				sspi->base + sspi->regs->rx_dma_io_len);
sspi              534 drivers/spi/spi-sirf.c 			writel(sspi->left_tx_word * sspi->word_width,
sspi              535 drivers/spi/spi-sirf.c 				sspi->base + sspi->regs->tx_dma_io_len);
sspi              536 drivers/spi/spi-sirf.c 			writel(sspi->left_tx_word * sspi->word_width,
sspi              537 drivers/spi/spi-sirf.c 				sspi->base + sspi->regs->rx_dma_io_len);
sspi              541 drivers/spi/spi-sirf.c 		if (sspi->type == SIRF_REAL_SPI)
sspi              542 drivers/spi/spi-sirf.c 			writel(readl(sspi->base + sspi->regs->spi_ctrl),
sspi              543 drivers/spi/spi-sirf.c 				sspi->base + sspi->regs->spi_ctrl);
sspi              544 drivers/spi/spi-sirf.c 		writel(0, sspi->base + sspi->regs->tx_dma_io_len);
sspi              545 drivers/spi/spi-sirf.c 		writel(0, sspi->base + sspi->regs->rx_dma_io_len);
sspi              547 drivers/spi/spi-sirf.c 	sspi->dst_start = dma_map_single(&spi->dev, sspi->rx, t->len,
sspi              550 drivers/spi/spi-sirf.c 	rx_desc = dmaengine_prep_slave_single(sspi->rx_chan,
sspi              551 drivers/spi/spi-sirf.c 		sspi->dst_start, t->len, DMA_DEV_TO_MEM,
sspi              554 drivers/spi/spi-sirf.c 	rx_desc->callback_param = &sspi->rx_done;
sspi              556 drivers/spi/spi-sirf.c 	sspi->src_start = dma_map_single(&spi->dev, (void *)sspi->tx, t->len,
sspi              559 drivers/spi/spi-sirf.c 	tx_desc = dmaengine_prep_slave_single(sspi->tx_chan,
sspi              560 drivers/spi/spi-sirf.c 		sspi->src_start, t->len, DMA_MEM_TO_DEV,
sspi              563 drivers/spi/spi-sirf.c 	tx_desc->callback_param = &sspi->tx_done;
sspi              567 drivers/spi/spi-sirf.c 	dma_async_issue_pending(sspi->tx_chan);
sspi              568 drivers/spi/spi-sirf.c 	dma_async_issue_pending(sspi->rx_chan);
sspi              570 drivers/spi/spi-sirf.c 			sspi->base + sspi->regs->tx_rx_en);
sspi              571 drivers/spi/spi-sirf.c 	if (sspi->type == SIRF_USP_SPI_P2 ||
sspi              572 drivers/spi/spi-sirf.c 		sspi->type == SIRF_USP_SPI_A7) {
sspi              574 drivers/spi/spi-sirf.c 			sspi->base + sspi->regs->rxfifo_op);
sspi              576 drivers/spi/spi-sirf.c 			sspi->base + sspi->regs->txfifo_op);
sspi              578 drivers/spi/spi-sirf.c 	if (wait_for_completion_timeout(&sspi->rx_done, timeout) == 0) {
sspi              580 drivers/spi/spi-sirf.c 		dmaengine_terminate_all(sspi->rx_chan);
sspi              582 drivers/spi/spi-sirf.c 		sspi->left_rx_word = 0;
sspi              588 drivers/spi/spi-sirf.c 	if (wait_for_completion_timeout(&sspi->tx_done, timeout) == 0) {
sspi              590 drivers/spi/spi-sirf.c 		if (sspi->type == SIRF_USP_SPI_P2 ||
sspi              591 drivers/spi/spi-sirf.c 			sspi->type == SIRF_USP_SPI_A7)
sspi              592 drivers/spi/spi-sirf.c 			writel(0, sspi->base + sspi->regs->tx_rx_en);
sspi              593 drivers/spi/spi-sirf.c 		dmaengine_terminate_all(sspi->tx_chan);
sspi              595 drivers/spi/spi-sirf.c 	dma_unmap_single(&spi->dev, sspi->src_start, t->len, DMA_TO_DEVICE);
sspi              596 drivers/spi/spi-sirf.c 	dma_unmap_single(&spi->dev, sspi->dst_start, t->len, DMA_FROM_DEVICE);
sspi              598 drivers/spi/spi-sirf.c 	writel(0, sspi->base + sspi->regs->rxfifo_op);
sspi              599 drivers/spi/spi-sirf.c 	writel(0, sspi->base + sspi->regs->txfifo_op);
sspi              600 drivers/spi/spi-sirf.c 	if (sspi->left_tx_word >= sspi->dat_max_frm_len)
sspi              601 drivers/spi/spi-sirf.c 		writel(0, sspi->base + sspi->regs->tx_rx_en);
sspi              602 drivers/spi/spi-sirf.c 	if (sspi->type == SIRF_USP_SPI_P2 ||
sspi              603 drivers/spi/spi-sirf.c 		sspi->type == SIRF_USP_SPI_A7)
sspi              604 drivers/spi/spi-sirf.c 		writel(0, sspi->base + sspi->regs->tx_rx_en);
sspi              610 drivers/spi/spi-sirf.c 	struct sirfsoc_spi *sspi;
sspi              614 drivers/spi/spi-sirf.c 	sspi = spi_master_get_devdata(spi->master);
sspi              617 drivers/spi/spi-sirf.c 			sspi->base + sspi->regs->rxfifo_op);
sspi              619 drivers/spi/spi-sirf.c 			sspi->base + sspi->regs->txfifo_op);
sspi              620 drivers/spi/spi-sirf.c 		switch (sspi->type) {
sspi              622 drivers/spi/spi-sirf.c 			writel(0x0, sspi->base + sspi->regs->rxfifo_op);
sspi              623 drivers/spi/spi-sirf.c 			writel(0x0, sspi->base + sspi->regs->txfifo_op);
sspi              624 drivers/spi/spi-sirf.c 			writel(0, sspi->base + sspi->regs->int_en);
sspi              625 drivers/spi/spi-sirf.c 			writel(readl(sspi->base + sspi->regs->int_st),
sspi              626 drivers/spi/spi-sirf.c 				sspi->base + sspi->regs->int_st);
sspi              627 drivers/spi/spi-sirf.c 			writel(min((sspi->left_tx_word * sspi->word_width),
sspi              628 drivers/spi/spi-sirf.c 				sspi->fifo_size),
sspi              629 drivers/spi/spi-sirf.c 				sspi->base + sspi->regs->tx_dma_io_len);
sspi              630 drivers/spi/spi-sirf.c 			writel(min((sspi->left_rx_word * sspi->word_width),
sspi              631 drivers/spi/spi-sirf.c 				sspi->fifo_size),
sspi              632 drivers/spi/spi-sirf.c 				sspi->base + sspi->regs->rx_dma_io_len);
sspi              635 drivers/spi/spi-sirf.c 			writel(0x0, sspi->base + sspi->regs->rxfifo_op);
sspi              636 drivers/spi/spi-sirf.c 			writel(0x0, sspi->base + sspi->regs->txfifo_op);
sspi              637 drivers/spi/spi-sirf.c 			writel(~0UL, sspi->base + sspi->regs->usp_int_en_clr);
sspi              638 drivers/spi/spi-sirf.c 			writel(readl(sspi->base + sspi->regs->int_st),
sspi              639 drivers/spi/spi-sirf.c 				sspi->base + sspi->regs->int_st);
sspi              640 drivers/spi/spi-sirf.c 			writel(min((sspi->left_tx_word * sspi->word_width),
sspi              641 drivers/spi/spi-sirf.c 				sspi->fifo_size),
sspi              642 drivers/spi/spi-sirf.c 				sspi->base + sspi->regs->tx_dma_io_len);
sspi              643 drivers/spi/spi-sirf.c 			writel(min((sspi->left_rx_word * sspi->word_width),
sspi              644 drivers/spi/spi-sirf.c 				sspi->fifo_size),
sspi              645 drivers/spi/spi-sirf.c 				sspi->base + sspi->regs->rx_dma_io_len);
sspi              649 drivers/spi/spi-sirf.c 				sspi->base + sspi->regs->rxfifo_op);
sspi              651 drivers/spi/spi-sirf.c 				sspi->base + sspi->regs->txfifo_op);
sspi              652 drivers/spi/spi-sirf.c 			writel(0, sspi->base + sspi->regs->int_en);
sspi              653 drivers/spi/spi-sirf.c 			writel(readl(sspi->base + sspi->regs->int_st),
sspi              654 drivers/spi/spi-sirf.c 				sspi->base + sspi->regs->int_st);
sspi              655 drivers/spi/spi-sirf.c 			writel(readl(sspi->base + sspi->regs->spi_ctrl) |
sspi              658 drivers/spi/spi-sirf.c 				sspi->base + sspi->regs->spi_ctrl);
sspi              659 drivers/spi/spi-sirf.c 			data_units = sspi->fifo_size / sspi->word_width;
sspi              660 drivers/spi/spi-sirf.c 			writel(min(sspi->left_tx_word, data_units) - 1,
sspi              661 drivers/spi/spi-sirf.c 				sspi->base + sspi->regs->tx_dma_io_len);
sspi              662 drivers/spi/spi-sirf.c 			writel(min(sspi->left_rx_word, data_units) - 1,
sspi              663 drivers/spi/spi-sirf.c 				sspi->base + sspi->regs->rx_dma_io_len);
sspi              666 drivers/spi/spi-sirf.c 		while (!((readl(sspi->base + sspi->regs->txfifo_st)
sspi              667 drivers/spi/spi-sirf.c 			& SIRFSOC_SPI_FIFO_FULL_MASK(sspi))) &&
sspi              668 drivers/spi/spi-sirf.c 			sspi->left_tx_word)
sspi              669 drivers/spi/spi-sirf.c 			sspi->tx_word(sspi);
sspi              674 drivers/spi/spi-sirf.c 			sspi->base + sspi->regs->int_en);
sspi              676 drivers/spi/spi-sirf.c 			sspi->base + sspi->regs->tx_rx_en);
sspi              677 drivers/spi/spi-sirf.c 		if (sspi->type == SIRF_USP_SPI_P2 ||
sspi              678 drivers/spi/spi-sirf.c 			sspi->type == SIRF_USP_SPI_A7) {
sspi              680 drivers/spi/spi-sirf.c 				sspi->base + sspi->regs->rxfifo_op);
sspi              682 drivers/spi/spi-sirf.c 				sspi->base + sspi->regs->txfifo_op);
sspi              684 drivers/spi/spi-sirf.c 		if (!wait_for_completion_timeout(&sspi->tx_done, timeout) ||
sspi              685 drivers/spi/spi-sirf.c 			!wait_for_completion_timeout(&sspi->rx_done, timeout)) {
sspi              687 drivers/spi/spi-sirf.c 			if (sspi->type == SIRF_USP_SPI_P2 ||
sspi              688 drivers/spi/spi-sirf.c 				sspi->type == SIRF_USP_SPI_A7)
sspi              689 drivers/spi/spi-sirf.c 				writel(0, sspi->base + sspi->regs->tx_rx_en);
sspi              692 drivers/spi/spi-sirf.c 		while (!((readl(sspi->base + sspi->regs->rxfifo_st)
sspi              693 drivers/spi/spi-sirf.c 			& SIRFSOC_SPI_FIFO_EMPTY_MASK(sspi))) &&
sspi              694 drivers/spi/spi-sirf.c 			sspi->left_rx_word)
sspi              695 drivers/spi/spi-sirf.c 			sspi->rx_word(sspi);
sspi              696 drivers/spi/spi-sirf.c 		if (sspi->type == SIRF_USP_SPI_P2 ||
sspi              697 drivers/spi/spi-sirf.c 			sspi->type == SIRF_USP_SPI_A7)
sspi              698 drivers/spi/spi-sirf.c 			writel(0, sspi->base + sspi->regs->tx_rx_en);
sspi              699 drivers/spi/spi-sirf.c 		writel(0, sspi->base + sspi->regs->rxfifo_op);
sspi              700 drivers/spi/spi-sirf.c 		writel(0, sspi->base + sspi->regs->txfifo_op);
sspi              701 drivers/spi/spi-sirf.c 	} while (sspi->left_tx_word != 0 || sspi->left_rx_word != 0);
sspi              706 drivers/spi/spi-sirf.c 	struct sirfsoc_spi *sspi;
sspi              708 drivers/spi/spi-sirf.c 	sspi = spi_master_get_devdata(spi->master);
sspi              709 drivers/spi/spi-sirf.c 	sspi->tx = t->tx_buf;
sspi              710 drivers/spi/spi-sirf.c 	sspi->rx = t->rx_buf;
sspi              711 drivers/spi/spi-sirf.c 	sspi->left_tx_word = sspi->left_rx_word = t->len / sspi->word_width;
sspi              712 drivers/spi/spi-sirf.c 	reinit_completion(&sspi->rx_done);
sspi              713 drivers/spi/spi-sirf.c 	reinit_completion(&sspi->tx_done);
sspi              719 drivers/spi/spi-sirf.c 	if (sspi->type == SIRF_REAL_SPI && sspi->tx_by_cmd)
sspi              726 drivers/spi/spi-sirf.c 	return t->len - sspi->left_rx_word * sspi->word_width;
sspi              731 drivers/spi/spi-sirf.c 	struct sirfsoc_spi *sspi = spi_master_get_devdata(spi->master);
sspi              733 drivers/spi/spi-sirf.c 	if (sspi->hw_cs) {
sspi              736 drivers/spi/spi-sirf.c 		switch (sspi->type) {
sspi              738 drivers/spi/spi-sirf.c 			regval = readl(sspi->base + sspi->regs->spi_ctrl);
sspi              753 drivers/spi/spi-sirf.c 			writel(regval, sspi->base + sspi->regs->spi_ctrl);
sspi              757 drivers/spi/spi-sirf.c 			regval = readl(sspi->base +
sspi              758 drivers/spi/spi-sirf.c 					sspi->regs->usp_pin_io_data);
sspi              774 drivers/spi/spi-sirf.c 				sspi->base + sspi->regs->usp_pin_io_data);
sspi              793 drivers/spi/spi-sirf.c 	struct sirfsoc_spi *sspi;
sspi              796 drivers/spi/spi-sirf.c 	sspi = spi_master_get_devdata(spi->master);
sspi              797 drivers/spi/spi-sirf.c 	regval = readl(sspi->base + sspi->regs->spi_ctrl);
sspi              798 drivers/spi/spi-sirf.c 	usp_mode1 = readl(sspi->base + sspi->regs->usp_mode1);
sspi              834 drivers/spi/spi-sirf.c 	writel((SIRFSOC_SPI_FIFO_LEVEL_CHK_MASK(sspi, sspi->fifo_size - 2) <<
sspi              836 drivers/spi/spi-sirf.c 		(SIRFSOC_SPI_FIFO_LEVEL_CHK_MASK(sspi, sspi->fifo_size / 2) <<
sspi              838 drivers/spi/spi-sirf.c 		(SIRFSOC_SPI_FIFO_LEVEL_CHK_MASK(sspi, 2) <<
sspi              840 drivers/spi/spi-sirf.c 		sspi->base + sspi->regs->txfifo_level_chk);
sspi              841 drivers/spi/spi-sirf.c 	writel((SIRFSOC_SPI_FIFO_LEVEL_CHK_MASK(sspi, 2) <<
sspi              843 drivers/spi/spi-sirf.c 		(SIRFSOC_SPI_FIFO_LEVEL_CHK_MASK(sspi, sspi->fifo_size / 2) <<
sspi              845 drivers/spi/spi-sirf.c 		(SIRFSOC_SPI_FIFO_LEVEL_CHK_MASK(sspi, sspi->fifo_size - 2) <<
sspi              847 drivers/spi/spi-sirf.c 		sspi->base + sspi->regs->rxfifo_level_chk);
sspi              852 drivers/spi/spi-sirf.c 	switch (sspi->type) {
sspi              855 drivers/spi/spi-sirf.c 		writel(regval, sspi->base + sspi->regs->spi_ctrl);
sspi              862 drivers/spi/spi-sirf.c 		writel(usp_mode1, sspi->base + sspi->regs->usp_mode1);
sspi              872 drivers/spi/spi-sirf.c 	struct sirfsoc_spi *sspi;
sspi              877 drivers/spi/spi-sirf.c 	sspi = spi_master_get_devdata(spi->master);
sspi              882 drivers/spi/spi-sirf.c 	usp_mode2 = regval = (sspi->ctrl_freq / (2 * hz)) - 1;
sspi              890 drivers/spi/spi-sirf.c 		sspi->rx_word = spi_sirfsoc_rx_word_u8;
sspi              891 drivers/spi/spi-sirf.c 		sspi->tx_word = spi_sirfsoc_tx_word_u8;
sspi              898 drivers/spi/spi-sirf.c 		sspi->rx_word = spi_sirfsoc_rx_word_u16;
sspi              899 drivers/spi/spi-sirf.c 		sspi->tx_word = spi_sirfsoc_tx_word_u16;
sspi              903 drivers/spi/spi-sirf.c 		sspi->rx_word = spi_sirfsoc_rx_word_u32;
sspi              904 drivers/spi/spi-sirf.c 		sspi->tx_word = spi_sirfsoc_tx_word_u32;
sspi              910 drivers/spi/spi-sirf.c 	sspi->word_width = DIV_ROUND_UP(bits_per_word, 8);
sspi              911 drivers/spi/spi-sirf.c 	txfifo_ctrl = (((sspi->fifo_size / 2) &
sspi              912 drivers/spi/spi-sirf.c 			SIRFSOC_SPI_FIFO_THD_MASK(sspi))
sspi              914 drivers/spi/spi-sirf.c 			(sspi->word_width >> 1);
sspi              915 drivers/spi/spi-sirf.c 	rxfifo_ctrl = (((sspi->fifo_size / 2) &
sspi              916 drivers/spi/spi-sirf.c 			SIRFSOC_SPI_FIFO_THD_MASK(sspi))
sspi              918 drivers/spi/spi-sirf.c 			(sspi->word_width >> 1);
sspi              919 drivers/spi/spi-sirf.c 	writel(txfifo_ctrl, sspi->base + sspi->regs->txfifo_ctrl);
sspi              920 drivers/spi/spi-sirf.c 	writel(rxfifo_ctrl, sspi->base + sspi->regs->rxfifo_ctrl);
sspi              921 drivers/spi/spi-sirf.c 	if (sspi->type == SIRF_USP_SPI_P2 ||
sspi              922 drivers/spi/spi-sirf.c 		sspi->type == SIRF_USP_SPI_A7) {
sspi              947 drivers/spi/spi-sirf.c 			sspi->base + sspi->regs->usp_tx_frame_ctrl);
sspi              951 drivers/spi/spi-sirf.c 			sspi->base + sspi->regs->usp_rx_frame_ctrl);
sspi              952 drivers/spi/spi-sirf.c 		writel(readl(sspi->base + sspi->regs->usp_mode2) |
sspi              959 drivers/spi/spi-sirf.c 			sspi->base + sspi->regs->usp_mode2);
sspi              961 drivers/spi/spi-sirf.c 	if (sspi->type == SIRF_REAL_SPI)
sspi              962 drivers/spi/spi-sirf.c 		writel(regval, sspi->base + sspi->regs->spi_ctrl);
sspi              964 drivers/spi/spi-sirf.c 	if (sspi->type == SIRF_REAL_SPI) {
sspi              967 drivers/spi/spi-sirf.c 			sspi->tx_by_cmd = true;
sspi              968 drivers/spi/spi-sirf.c 			writel(readl(sspi->base + sspi->regs->spi_ctrl) |
sspi              971 drivers/spi/spi-sirf.c 				sspi->base + sspi->regs->spi_ctrl);
sspi              973 drivers/spi/spi-sirf.c 			sspi->tx_by_cmd = false;
sspi              974 drivers/spi/spi-sirf.c 			writel(readl(sspi->base + sspi->regs->spi_ctrl) &
sspi              976 drivers/spi/spi-sirf.c 				sspi->base + sspi->regs->spi_ctrl);
sspi              981 drivers/spi/spi-sirf.c 		writel(0, sspi->base + sspi->regs->tx_dma_io_ctrl);
sspi              983 drivers/spi/spi-sirf.c 			sspi->base + sspi->regs->rx_dma_io_ctrl);
sspi              987 drivers/spi/spi-sirf.c 			sspi->base + sspi->regs->tx_dma_io_ctrl);
sspi              989 drivers/spi/spi-sirf.c 			sspi->base + sspi->regs->rx_dma_io_ctrl);
sspi              996 drivers/spi/spi-sirf.c 	struct sirfsoc_spi *sspi;
sspi              999 drivers/spi/spi-sirf.c 	sspi = spi_master_get_devdata(spi->master);
sspi             1001 drivers/spi/spi-sirf.c 		sspi->hw_cs = true;
sspi             1003 drivers/spi/spi-sirf.c 		sspi->hw_cs = false;
sspi             1071 drivers/spi/spi-sirf.c 	struct sirfsoc_spi *sspi;
sspi             1084 drivers/spi/spi-sirf.c 	master = spi_alloc_master(&pdev->dev, sizeof(*sspi));
sspi             1091 drivers/spi/spi-sirf.c 	sspi = spi_master_get_devdata(master);
sspi             1092 drivers/spi/spi-sirf.c 	sspi->fifo_full_offset = ilog2(sspi->fifo_size);
sspi             1094 drivers/spi/spi-sirf.c 	sspi->regs = spi_comp_data->regs;
sspi             1095 drivers/spi/spi-sirf.c 	sspi->type = spi_comp_data->type;
sspi             1096 drivers/spi/spi-sirf.c 	sspi->fifo_level_chk_mask = (sspi->fifo_size / 4) - 1;
sspi             1097 drivers/spi/spi-sirf.c 	sspi->dat_max_frm_len = spi_comp_data->dat_max_frm_len;
sspi             1098 drivers/spi/spi-sirf.c 	sspi->fifo_size = spi_comp_data->fifo_size;
sspi             1099 drivers/spi/spi-sirf.c 	sspi->base = devm_platform_ioremap_resource(pdev, 0);
sspi             1100 drivers/spi/spi-sirf.c 	if (IS_ERR(sspi->base)) {
sspi             1101 drivers/spi/spi-sirf.c 		ret = PTR_ERR(sspi->base);
sspi             1110 drivers/spi/spi-sirf.c 				DRIVER_NAME, sspi);
sspi             1114 drivers/spi/spi-sirf.c 	sspi->bitbang.master = master;
sspi             1115 drivers/spi/spi-sirf.c 	sspi->bitbang.chipselect = spi_sirfsoc_chipselect;
sspi             1116 drivers/spi/spi-sirf.c 	sspi->bitbang.setup_transfer = spi_sirfsoc_setup_transfer;
sspi             1117 drivers/spi/spi-sirf.c 	sspi->bitbang.txrx_bufs = spi_sirfsoc_transfer;
sspi             1118 drivers/spi/spi-sirf.c 	sspi->bitbang.master->setup = spi_sirfsoc_setup;
sspi             1119 drivers/spi/spi-sirf.c 	sspi->bitbang.master->cleanup = spi_sirfsoc_cleanup;
sspi             1126 drivers/spi/spi-sirf.c 	sspi->bitbang.master->dev.of_node = pdev->dev.of_node;
sspi             1129 drivers/spi/spi-sirf.c 	sspi->rx_chan = dma_request_slave_channel(&pdev->dev, "rx");
sspi             1130 drivers/spi/spi-sirf.c 	if (!sspi->rx_chan) {
sspi             1135 drivers/spi/spi-sirf.c 	sspi->tx_chan = dma_request_slave_channel(&pdev->dev, "tx");
sspi             1136 drivers/spi/spi-sirf.c 	if (!sspi->tx_chan) {
sspi             1142 drivers/spi/spi-sirf.c 	sspi->clk = clk_get(&pdev->dev, NULL);
sspi             1143 drivers/spi/spi-sirf.c 	if (IS_ERR(sspi->clk)) {
sspi             1144 drivers/spi/spi-sirf.c 		ret = PTR_ERR(sspi->clk);
sspi             1147 drivers/spi/spi-sirf.c 	clk_prepare_enable(sspi->clk);
sspi             1149 drivers/spi/spi-sirf.c 		spi_comp_data->hwinit(sspi);
sspi             1150 drivers/spi/spi-sirf.c 	sspi->ctrl_freq = clk_get_rate(sspi->clk);
sspi             1152 drivers/spi/spi-sirf.c 	init_completion(&sspi->rx_done);
sspi             1153 drivers/spi/spi-sirf.c 	init_completion(&sspi->tx_done);
sspi             1155 drivers/spi/spi-sirf.c 	ret = spi_bitbang_start(&sspi->bitbang);
sspi             1162 drivers/spi/spi-sirf.c 	clk_disable_unprepare(sspi->clk);
sspi             1163 drivers/spi/spi-sirf.c 	clk_put(sspi->clk);
sspi             1165 drivers/spi/spi-sirf.c 	dma_release_channel(sspi->tx_chan);
sspi             1167 drivers/spi/spi-sirf.c 	dma_release_channel(sspi->rx_chan);
sspi             1177 drivers/spi/spi-sirf.c 	struct sirfsoc_spi *sspi;
sspi             1180 drivers/spi/spi-sirf.c 	sspi = spi_master_get_devdata(master);
sspi             1181 drivers/spi/spi-sirf.c 	spi_bitbang_stop(&sspi->bitbang);
sspi             1182 drivers/spi/spi-sirf.c 	clk_disable_unprepare(sspi->clk);
sspi             1183 drivers/spi/spi-sirf.c 	clk_put(sspi->clk);
sspi             1184 drivers/spi/spi-sirf.c 	dma_release_channel(sspi->rx_chan);
sspi             1185 drivers/spi/spi-sirf.c 	dma_release_channel(sspi->tx_chan);
sspi             1194 drivers/spi/spi-sirf.c 	struct sirfsoc_spi *sspi = spi_master_get_devdata(master);
sspi             1201 drivers/spi/spi-sirf.c 	clk_disable(sspi->clk);
sspi             1208 drivers/spi/spi-sirf.c 	struct sirfsoc_spi *sspi = spi_master_get_devdata(master);
sspi             1210 drivers/spi/spi-sirf.c 	clk_enable(sspi->clk);
sspi             1211 drivers/spi/spi-sirf.c 	writel(SIRFSOC_SPI_FIFO_RESET, sspi->base + sspi->regs->txfifo_op);
sspi             1212 drivers/spi/spi-sirf.c 	writel(SIRFSOC_SPI_FIFO_RESET, sspi->base + sspi->regs->rxfifo_op);
sspi             1213 drivers/spi/spi-sirf.c 	writel(SIRFSOC_SPI_FIFO_START, sspi->base + sspi->regs->txfifo_op);
sspi             1214 drivers/spi/spi-sirf.c 	writel(SIRFSOC_SPI_FIFO_START, sspi->base + sspi->regs->rxfifo_op);
sspi               90 drivers/spi/spi-sun4i.c static inline u32 sun4i_spi_read(struct sun4i_spi *sspi, u32 reg)
sspi               92 drivers/spi/spi-sun4i.c 	return readl(sspi->base_addr + reg);
sspi               95 drivers/spi/spi-sun4i.c static inline void sun4i_spi_write(struct sun4i_spi *sspi, u32 reg, u32 value)
sspi               97 drivers/spi/spi-sun4i.c 	writel(value, sspi->base_addr + reg);
sspi              100 drivers/spi/spi-sun4i.c static inline u32 sun4i_spi_get_tx_fifo_count(struct sun4i_spi *sspi)
sspi              102 drivers/spi/spi-sun4i.c 	u32 reg = sun4i_spi_read(sspi, SUN4I_FIFO_STA_REG);
sspi              109 drivers/spi/spi-sun4i.c static inline void sun4i_spi_enable_interrupt(struct sun4i_spi *sspi, u32 mask)
sspi              111 drivers/spi/spi-sun4i.c 	u32 reg = sun4i_spi_read(sspi, SUN4I_INT_CTL_REG);
sspi              114 drivers/spi/spi-sun4i.c 	sun4i_spi_write(sspi, SUN4I_INT_CTL_REG, reg);
sspi              117 drivers/spi/spi-sun4i.c static inline void sun4i_spi_disable_interrupt(struct sun4i_spi *sspi, u32 mask)
sspi              119 drivers/spi/spi-sun4i.c 	u32 reg = sun4i_spi_read(sspi, SUN4I_INT_CTL_REG);
sspi              122 drivers/spi/spi-sun4i.c 	sun4i_spi_write(sspi, SUN4I_INT_CTL_REG, reg);
sspi              125 drivers/spi/spi-sun4i.c static inline void sun4i_spi_drain_fifo(struct sun4i_spi *sspi, int len)
sspi              131 drivers/spi/spi-sun4i.c 	reg = sun4i_spi_read(sspi, SUN4I_FIFO_STA_REG);
sspi              139 drivers/spi/spi-sun4i.c 		byte = readb(sspi->base_addr + SUN4I_RXDATA_REG);
sspi              140 drivers/spi/spi-sun4i.c 		if (sspi->rx_buf)
sspi              141 drivers/spi/spi-sun4i.c 			*sspi->rx_buf++ = byte;
sspi              145 drivers/spi/spi-sun4i.c static inline void sun4i_spi_fill_fifo(struct sun4i_spi *sspi, int len)
sspi              151 drivers/spi/spi-sun4i.c 	cnt = SUN4I_FIFO_DEPTH - sun4i_spi_get_tx_fifo_count(sspi);
sspi              153 drivers/spi/spi-sun4i.c 	len = min3(len, (int)cnt, sspi->len);
sspi              156 drivers/spi/spi-sun4i.c 		byte = sspi->tx_buf ? *sspi->tx_buf++ : 0;
sspi              157 drivers/spi/spi-sun4i.c 		writeb(byte, sspi->base_addr + SUN4I_TXDATA_REG);
sspi              158 drivers/spi/spi-sun4i.c 		sspi->len--;
sspi              164 drivers/spi/spi-sun4i.c 	struct sun4i_spi *sspi = spi_master_get_devdata(spi->master);
sspi              167 drivers/spi/spi-sun4i.c 	reg = sun4i_spi_read(sspi, SUN4I_CTL_REG);
sspi              196 drivers/spi/spi-sun4i.c 	sun4i_spi_write(sspi, SUN4I_CTL_REG, reg);
sspi              208 drivers/spi/spi-sun4i.c 	struct sun4i_spi *sspi = spi_master_get_devdata(master);
sspi              222 drivers/spi/spi-sun4i.c 	reinit_completion(&sspi->done);
sspi              223 drivers/spi/spi-sun4i.c 	sspi->tx_buf = tfr->tx_buf;
sspi              224 drivers/spi/spi-sun4i.c 	sspi->rx_buf = tfr->rx_buf;
sspi              225 drivers/spi/spi-sun4i.c 	sspi->len = tfr->len;
sspi              228 drivers/spi/spi-sun4i.c 	sun4i_spi_write(sspi, SUN4I_INT_STA_REG, ~0);
sspi              231 drivers/spi/spi-sun4i.c 	reg = sun4i_spi_read(sspi, SUN4I_CTL_REG);
sspi              234 drivers/spi/spi-sun4i.c 	sun4i_spi_write(sspi, SUN4I_CTL_REG,
sspi              261 drivers/spi/spi-sun4i.c 	if (sspi->rx_buf)
sspi              266 drivers/spi/spi-sun4i.c 	sun4i_spi_write(sspi, SUN4I_CTL_REG, reg);
sspi              269 drivers/spi/spi-sun4i.c 	mclk_rate = clk_get_rate(sspi->mclk);
sspi              271 drivers/spi/spi-sun4i.c 		clk_set_rate(sspi->mclk, 2 * tfr->speed_hz);
sspi              272 drivers/spi/spi-sun4i.c 		mclk_rate = clk_get_rate(sspi->mclk);
sspi              300 drivers/spi/spi-sun4i.c 	sun4i_spi_write(sspi, SUN4I_CLK_CTL_REG, reg);
sspi              303 drivers/spi/spi-sun4i.c 	if (sspi->tx_buf)
sspi              307 drivers/spi/spi-sun4i.c 	sun4i_spi_write(sspi, SUN4I_BURST_CNT_REG, SUN4I_BURST_CNT(tfr->len));
sspi              308 drivers/spi/spi-sun4i.c 	sun4i_spi_write(sspi, SUN4I_XMIT_CNT_REG, SUN4I_XMIT_CNT(tx_len));
sspi              315 drivers/spi/spi-sun4i.c 	sun4i_spi_fill_fifo(sspi, SUN4I_FIFO_DEPTH - 1);
sspi              318 drivers/spi/spi-sun4i.c 	sun4i_spi_enable_interrupt(sspi, SUN4I_INT_CTL_TC |
sspi              322 drivers/spi/spi-sun4i.c 		sun4i_spi_enable_interrupt(sspi, SUN4I_INT_CTL_TF_E34);
sspi              325 drivers/spi/spi-sun4i.c 	reg = sun4i_spi_read(sspi, SUN4I_CTL_REG);
sspi              326 drivers/spi/spi-sun4i.c 	sun4i_spi_write(sspi, SUN4I_CTL_REG, reg | SUN4I_CTL_XCH);
sspi              330 drivers/spi/spi-sun4i.c 	timeout = wait_for_completion_timeout(&sspi->done,
sspi              344 drivers/spi/spi-sun4i.c 	sun4i_spi_write(sspi, SUN4I_INT_CTL_REG, 0);
sspi              351 drivers/spi/spi-sun4i.c 	struct sun4i_spi *sspi = dev_id;
sspi              352 drivers/spi/spi-sun4i.c 	u32 status = sun4i_spi_read(sspi, SUN4I_INT_STA_REG);
sspi              356 drivers/spi/spi-sun4i.c 		sun4i_spi_write(sspi, SUN4I_INT_STA_REG, SUN4I_INT_CTL_TC);
sspi              357 drivers/spi/spi-sun4i.c 		sun4i_spi_drain_fifo(sspi, SUN4I_FIFO_DEPTH);
sspi              358 drivers/spi/spi-sun4i.c 		complete(&sspi->done);
sspi              364 drivers/spi/spi-sun4i.c 		sun4i_spi_drain_fifo(sspi, SUN4I_FIFO_DEPTH);
sspi              366 drivers/spi/spi-sun4i.c 		sun4i_spi_write(sspi, SUN4I_INT_STA_REG, SUN4I_INT_CTL_RF_F34);
sspi              372 drivers/spi/spi-sun4i.c 		sun4i_spi_fill_fifo(sspi, SUN4I_FIFO_DEPTH);
sspi              374 drivers/spi/spi-sun4i.c 		if (!sspi->len)
sspi              376 drivers/spi/spi-sun4i.c 			sun4i_spi_disable_interrupt(sspi, SUN4I_INT_CTL_TF_E34);
sspi              379 drivers/spi/spi-sun4i.c 		sun4i_spi_write(sspi, SUN4I_INT_STA_REG, SUN4I_INT_CTL_TF_E34);
sspi              390 drivers/spi/spi-sun4i.c 	struct sun4i_spi *sspi = spi_master_get_devdata(master);
sspi              393 drivers/spi/spi-sun4i.c 	ret = clk_prepare_enable(sspi->hclk);
sspi              399 drivers/spi/spi-sun4i.c 	ret = clk_prepare_enable(sspi->mclk);
sspi              405 drivers/spi/spi-sun4i.c 	sun4i_spi_write(sspi, SUN4I_CTL_REG,
sspi              411 drivers/spi/spi-sun4i.c 	clk_disable_unprepare(sspi->hclk);
sspi              419 drivers/spi/spi-sun4i.c 	struct sun4i_spi *sspi = spi_master_get_devdata(master);
sspi              421 drivers/spi/spi-sun4i.c 	clk_disable_unprepare(sspi->mclk);
sspi              422 drivers/spi/spi-sun4i.c 	clk_disable_unprepare(sspi->hclk);
sspi              430 drivers/spi/spi-sun4i.c 	struct sun4i_spi *sspi;
sspi              440 drivers/spi/spi-sun4i.c 	sspi = spi_master_get_devdata(master);
sspi              442 drivers/spi/spi-sun4i.c 	sspi->base_addr = devm_platform_ioremap_resource(pdev, 0);
sspi              443 drivers/spi/spi-sun4i.c 	if (IS_ERR(sspi->base_addr)) {
sspi              444 drivers/spi/spi-sun4i.c 		ret = PTR_ERR(sspi->base_addr);
sspi              455 drivers/spi/spi-sun4i.c 			       0, "sun4i-spi", sspi);
sspi              461 drivers/spi/spi-sun4i.c 	sspi->master = master;
sspi              473 drivers/spi/spi-sun4i.c 	sspi->hclk = devm_clk_get(&pdev->dev, "ahb");
sspi              474 drivers/spi/spi-sun4i.c 	if (IS_ERR(sspi->hclk)) {
sspi              476 drivers/spi/spi-sun4i.c 		ret = PTR_ERR(sspi->hclk);
sspi              480 drivers/spi/spi-sun4i.c 	sspi->mclk = devm_clk_get(&pdev->dev, "mod");
sspi              481 drivers/spi/spi-sun4i.c 	if (IS_ERR(sspi->mclk)) {
sspi              483 drivers/spi/spi-sun4i.c 		ret = PTR_ERR(sspi->mclk);
sspi              487 drivers/spi/spi-sun4i.c 	init_completion(&sspi->done);
sspi              102 drivers/spi/spi-sun6i.c static inline u32 sun6i_spi_read(struct sun6i_spi *sspi, u32 reg)
sspi              104 drivers/spi/spi-sun6i.c 	return readl(sspi->base_addr + reg);
sspi              107 drivers/spi/spi-sun6i.c static inline void sun6i_spi_write(struct sun6i_spi *sspi, u32 reg, u32 value)
sspi              109 drivers/spi/spi-sun6i.c 	writel(value, sspi->base_addr + reg);
sspi              112 drivers/spi/spi-sun6i.c static inline u32 sun6i_spi_get_tx_fifo_count(struct sun6i_spi *sspi)
sspi              114 drivers/spi/spi-sun6i.c 	u32 reg = sun6i_spi_read(sspi, SUN6I_FIFO_STA_REG);
sspi              121 drivers/spi/spi-sun6i.c static inline void sun6i_spi_enable_interrupt(struct sun6i_spi *sspi, u32 mask)
sspi              123 drivers/spi/spi-sun6i.c 	u32 reg = sun6i_spi_read(sspi, SUN6I_INT_CTL_REG);
sspi              126 drivers/spi/spi-sun6i.c 	sun6i_spi_write(sspi, SUN6I_INT_CTL_REG, reg);
sspi              129 drivers/spi/spi-sun6i.c static inline void sun6i_spi_disable_interrupt(struct sun6i_spi *sspi, u32 mask)
sspi              131 drivers/spi/spi-sun6i.c 	u32 reg = sun6i_spi_read(sspi, SUN6I_INT_CTL_REG);
sspi              134 drivers/spi/spi-sun6i.c 	sun6i_spi_write(sspi, SUN6I_INT_CTL_REG, reg);
sspi              137 drivers/spi/spi-sun6i.c static inline void sun6i_spi_drain_fifo(struct sun6i_spi *sspi, int len)
sspi              143 drivers/spi/spi-sun6i.c 	reg = sun6i_spi_read(sspi, SUN6I_FIFO_STA_REG);
sspi              151 drivers/spi/spi-sun6i.c 		byte = readb(sspi->base_addr + SUN6I_RXDATA_REG);
sspi              152 drivers/spi/spi-sun6i.c 		if (sspi->rx_buf)
sspi              153 drivers/spi/spi-sun6i.c 			*sspi->rx_buf++ = byte;
sspi              157 drivers/spi/spi-sun6i.c static inline void sun6i_spi_fill_fifo(struct sun6i_spi *sspi, int len)
sspi              163 drivers/spi/spi-sun6i.c 	cnt = sspi->fifo_depth - sun6i_spi_get_tx_fifo_count(sspi);
sspi              165 drivers/spi/spi-sun6i.c 	len = min3(len, (int)cnt, sspi->len);
sspi              168 drivers/spi/spi-sun6i.c 		byte = sspi->tx_buf ? *sspi->tx_buf++ : 0;
sspi              169 drivers/spi/spi-sun6i.c 		writeb(byte, sspi->base_addr + SUN6I_TXDATA_REG);
sspi              170 drivers/spi/spi-sun6i.c 		sspi->len--;
sspi              176 drivers/spi/spi-sun6i.c 	struct sun6i_spi *sspi = spi_master_get_devdata(spi->master);
sspi              179 drivers/spi/spi-sun6i.c 	reg = sun6i_spi_read(sspi, SUN6I_TFR_CTL_REG);
sspi              188 drivers/spi/spi-sun6i.c 	sun6i_spi_write(sspi, SUN6I_TFR_CTL_REG, reg);
sspi              200 drivers/spi/spi-sun6i.c 	struct sun6i_spi *sspi = spi_master_get_devdata(master);
sspi              211 drivers/spi/spi-sun6i.c 	reinit_completion(&sspi->done);
sspi              212 drivers/spi/spi-sun6i.c 	sspi->tx_buf = tfr->tx_buf;
sspi              213 drivers/spi/spi-sun6i.c 	sspi->rx_buf = tfr->rx_buf;
sspi              214 drivers/spi/spi-sun6i.c 	sspi->len = tfr->len;
sspi              217 drivers/spi/spi-sun6i.c 	sun6i_spi_write(sspi, SUN6I_INT_STA_REG, ~0);
sspi              220 drivers/spi/spi-sun6i.c 	sun6i_spi_write(sspi, SUN6I_FIFO_CTL_REG,
sspi              229 drivers/spi/spi-sun6i.c 	trig_level = sspi->fifo_depth / 4 * 3;
sspi              230 drivers/spi/spi-sun6i.c 	sun6i_spi_write(sspi, SUN6I_FIFO_CTL_REG,
sspi              238 drivers/spi/spi-sun6i.c 	reg = sun6i_spi_read(sspi, SUN6I_TFR_CTL_REG);
sspi              259 drivers/spi/spi-sun6i.c 	if (sspi->rx_buf)
sspi              267 drivers/spi/spi-sun6i.c 	sun6i_spi_write(sspi, SUN6I_TFR_CTL_REG, reg);
sspi              270 drivers/spi/spi-sun6i.c 	mclk_rate = clk_get_rate(sspi->mclk);
sspi              272 drivers/spi/spi-sun6i.c 		clk_set_rate(sspi->mclk, 2 * tfr->speed_hz);
sspi              273 drivers/spi/spi-sun6i.c 		mclk_rate = clk_get_rate(sspi->mclk);
sspi              301 drivers/spi/spi-sun6i.c 	sun6i_spi_write(sspi, SUN6I_CLK_CTL_REG, reg);
sspi              304 drivers/spi/spi-sun6i.c 	if (sspi->tx_buf)
sspi              308 drivers/spi/spi-sun6i.c 	sun6i_spi_write(sspi, SUN6I_BURST_CNT_REG, SUN6I_BURST_CNT(tfr->len));
sspi              309 drivers/spi/spi-sun6i.c 	sun6i_spi_write(sspi, SUN6I_XMIT_CNT_REG, SUN6I_XMIT_CNT(tx_len));
sspi              310 drivers/spi/spi-sun6i.c 	sun6i_spi_write(sspi, SUN6I_BURST_CTL_CNT_REG,
sspi              314 drivers/spi/spi-sun6i.c 	sun6i_spi_fill_fifo(sspi, sspi->fifo_depth);
sspi              317 drivers/spi/spi-sun6i.c 	sun6i_spi_write(sspi, SUN6I_INT_CTL_REG, SUN6I_INT_CTL_TC);
sspi              318 drivers/spi/spi-sun6i.c 	sun6i_spi_enable_interrupt(sspi, SUN6I_INT_CTL_TC |
sspi              320 drivers/spi/spi-sun6i.c 	if (tx_len > sspi->fifo_depth)
sspi              321 drivers/spi/spi-sun6i.c 		sun6i_spi_enable_interrupt(sspi, SUN6I_INT_CTL_TF_ERQ);
sspi              324 drivers/spi/spi-sun6i.c 	reg = sun6i_spi_read(sspi, SUN6I_TFR_CTL_REG);
sspi              325 drivers/spi/spi-sun6i.c 	sun6i_spi_write(sspi, SUN6I_TFR_CTL_REG, reg | SUN6I_TFR_CTL_XCH);
sspi              329 drivers/spi/spi-sun6i.c 	timeout = wait_for_completion_timeout(&sspi->done,
sspi              342 drivers/spi/spi-sun6i.c 	sun6i_spi_write(sspi, SUN6I_INT_CTL_REG, 0);
sspi              349 drivers/spi/spi-sun6i.c 	struct sun6i_spi *sspi = dev_id;
sspi              350 drivers/spi/spi-sun6i.c 	u32 status = sun6i_spi_read(sspi, SUN6I_INT_STA_REG);
sspi              354 drivers/spi/spi-sun6i.c 		sun6i_spi_write(sspi, SUN6I_INT_STA_REG, SUN6I_INT_CTL_TC);
sspi              355 drivers/spi/spi-sun6i.c 		sun6i_spi_drain_fifo(sspi, sspi->fifo_depth);
sspi              356 drivers/spi/spi-sun6i.c 		complete(&sspi->done);
sspi              362 drivers/spi/spi-sun6i.c 		sun6i_spi_drain_fifo(sspi, SUN6I_FIFO_DEPTH);
sspi              364 drivers/spi/spi-sun6i.c 		sun6i_spi_write(sspi, SUN6I_INT_STA_REG, SUN6I_INT_CTL_RF_RDY);
sspi              370 drivers/spi/spi-sun6i.c 		sun6i_spi_fill_fifo(sspi, SUN6I_FIFO_DEPTH);
sspi              372 drivers/spi/spi-sun6i.c 		if (!sspi->len)
sspi              374 drivers/spi/spi-sun6i.c 			sun6i_spi_disable_interrupt(sspi, SUN6I_INT_CTL_TF_ERQ);
sspi              377 drivers/spi/spi-sun6i.c 		sun6i_spi_write(sspi, SUN6I_INT_STA_REG, SUN6I_INT_CTL_TF_ERQ);
sspi              388 drivers/spi/spi-sun6i.c 	struct sun6i_spi *sspi = spi_master_get_devdata(master);
sspi              391 drivers/spi/spi-sun6i.c 	ret = clk_prepare_enable(sspi->hclk);
sspi              397 drivers/spi/spi-sun6i.c 	ret = clk_prepare_enable(sspi->mclk);
sspi              403 drivers/spi/spi-sun6i.c 	ret = reset_control_deassert(sspi->rstc);
sspi              409 drivers/spi/spi-sun6i.c 	sun6i_spi_write(sspi, SUN6I_GBL_CTL_REG,
sspi              415 drivers/spi/spi-sun6i.c 	clk_disable_unprepare(sspi->mclk);
sspi              417 drivers/spi/spi-sun6i.c 	clk_disable_unprepare(sspi->hclk);
sspi              425 drivers/spi/spi-sun6i.c 	struct sun6i_spi *sspi = spi_master_get_devdata(master);
sspi              427 drivers/spi/spi-sun6i.c 	reset_control_assert(sspi->rstc);
sspi              428 drivers/spi/spi-sun6i.c 	clk_disable_unprepare(sspi->mclk);
sspi              429 drivers/spi/spi-sun6i.c 	clk_disable_unprepare(sspi->hclk);
sspi              437 drivers/spi/spi-sun6i.c 	struct sun6i_spi *sspi;
sspi              447 drivers/spi/spi-sun6i.c 	sspi = spi_master_get_devdata(master);
sspi              449 drivers/spi/spi-sun6i.c 	sspi->base_addr = devm_platform_ioremap_resource(pdev, 0);
sspi              450 drivers/spi/spi-sun6i.c 	if (IS_ERR(sspi->base_addr)) {
sspi              451 drivers/spi/spi-sun6i.c 		ret = PTR_ERR(sspi->base_addr);
sspi              462 drivers/spi/spi-sun6i.c 			       0, "sun6i-spi", sspi);
sspi              468 drivers/spi/spi-sun6i.c 	sspi->master = master;
sspi              469 drivers/spi/spi-sun6i.c 	sspi->fifo_depth = (unsigned long)of_device_get_match_data(&pdev->dev);
sspi              482 drivers/spi/spi-sun6i.c 	sspi->hclk = devm_clk_get(&pdev->dev, "ahb");
sspi              483 drivers/spi/spi-sun6i.c 	if (IS_ERR(sspi->hclk)) {
sspi              485 drivers/spi/spi-sun6i.c 		ret = PTR_ERR(sspi->hclk);
sspi              489 drivers/spi/spi-sun6i.c 	sspi->mclk = devm_clk_get(&pdev->dev, "mod");
sspi              490 drivers/spi/spi-sun6i.c 	if (IS_ERR(sspi->mclk)) {
sspi              492 drivers/spi/spi-sun6i.c 		ret = PTR_ERR(sspi->mclk);
sspi              496 drivers/spi/spi-sun6i.c 	init_completion(&sspi->done);
sspi              498 drivers/spi/spi-sun6i.c 	sspi->rstc = devm_reset_control_get_exclusive(&pdev->dev, NULL);
sspi              499 drivers/spi/spi-sun6i.c 	if (IS_ERR(sspi->rstc)) {
sspi              501 drivers/spi/spi-sun6i.c 		ret = PTR_ERR(sspi->rstc);
sspi              141 drivers/spi/spi-synquacer.c static int read_fifo(struct synquacer_spi *sspi)
sspi              143 drivers/spi/spi-synquacer.c 	u32 len = readl(sspi->regs + SYNQUACER_HSSPI_REG_DMSTATUS);
sspi              147 drivers/spi/spi-synquacer.c 	len = min(len, sspi->rx_words);
sspi              149 drivers/spi/spi-synquacer.c 	switch (sspi->bpw) {
sspi              151 drivers/spi/spi-synquacer.c 		u8 *buf = sspi->rx_buf;
sspi              153 drivers/spi/spi-synquacer.c 		ioread8_rep(sspi->regs + SYNQUACER_HSSPI_REG_RX_FIFO,
sspi              155 drivers/spi/spi-synquacer.c 		sspi->rx_buf = buf + len;
sspi              159 drivers/spi/spi-synquacer.c 		u16 *buf = sspi->rx_buf;
sspi              161 drivers/spi/spi-synquacer.c 		ioread16_rep(sspi->regs + SYNQUACER_HSSPI_REG_RX_FIFO,
sspi              163 drivers/spi/spi-synquacer.c 		sspi->rx_buf = buf + len;
sspi              169 drivers/spi/spi-synquacer.c 		u32 *buf = sspi->rx_buf;
sspi              171 drivers/spi/spi-synquacer.c 		ioread32_rep(sspi->regs + SYNQUACER_HSSPI_REG_RX_FIFO,
sspi              173 drivers/spi/spi-synquacer.c 		sspi->rx_buf = buf + len;
sspi              180 drivers/spi/spi-synquacer.c 	sspi->rx_words -= len;
sspi              184 drivers/spi/spi-synquacer.c static int write_fifo(struct synquacer_spi *sspi)
sspi              186 drivers/spi/spi-synquacer.c 	u32 len = readl(sspi->regs + SYNQUACER_HSSPI_REG_DMSTATUS);
sspi              191 drivers/spi/spi-synquacer.c 		    sspi->tx_words);
sspi              193 drivers/spi/spi-synquacer.c 	switch (sspi->bpw) {
sspi              195 drivers/spi/spi-synquacer.c 		const u8 *buf = sspi->tx_buf;
sspi              197 drivers/spi/spi-synquacer.c 		iowrite8_rep(sspi->regs + SYNQUACER_HSSPI_REG_TX_FIFO,
sspi              199 drivers/spi/spi-synquacer.c 		sspi->tx_buf = buf + len;
sspi              203 drivers/spi/spi-synquacer.c 		const u16 *buf = sspi->tx_buf;
sspi              205 drivers/spi/spi-synquacer.c 		iowrite16_rep(sspi->regs + SYNQUACER_HSSPI_REG_TX_FIFO,
sspi              207 drivers/spi/spi-synquacer.c 		sspi->tx_buf = buf + len;
sspi              213 drivers/spi/spi-synquacer.c 		const u32 *buf = sspi->tx_buf;
sspi              215 drivers/spi/spi-synquacer.c 		iowrite32_rep(sspi->regs + SYNQUACER_HSSPI_REG_TX_FIFO,
sspi              217 drivers/spi/spi-synquacer.c 		sspi->tx_buf = buf + len;
sspi              224 drivers/spi/spi-synquacer.c 	sspi->tx_words -= len;
sspi              232 drivers/spi/spi-synquacer.c 	struct synquacer_spi *sspi = spi_master_get_devdata(master);
sspi              239 drivers/spi/spi-synquacer.c 		dev_err(sspi->dev,
sspi              258 drivers/spi/spi-synquacer.c 	if (speed == sspi->speed &&
sspi              259 drivers/spi/spi-synquacer.c 		bus_width == sspi->bus_width && bpw == sspi->bpw &&
sspi              260 drivers/spi/spi-synquacer.c 		mode == sspi->mode && cs == sspi->cs &&
sspi              261 drivers/spi/spi-synquacer.c 		transfer_mode == sspi->transfer_mode) {
sspi              265 drivers/spi/spi-synquacer.c 	sspi->transfer_mode = transfer_mode;
sspi              270 drivers/spi/spi-synquacer.c 		dev_err(sspi->dev, "Requested rate too low (%u)\n",
sspi              271 drivers/spi/spi-synquacer.c 			sspi->speed);
sspi              275 drivers/spi/spi-synquacer.c 	val = readl(sspi->regs + SYNQUACER_HSSPI_REG_PCC(cs));
sspi              304 drivers/spi/spi-synquacer.c 	if (sspi->aces)
sspi              309 drivers/spi/spi-synquacer.c 	if (sspi->rtm)
sspi              321 drivers/spi/spi-synquacer.c 	writel(val, sspi->regs + SYNQUACER_HSSPI_REG_PCC(cs));
sspi              323 drivers/spi/spi-synquacer.c 	val = readl(sspi->regs + SYNQUACER_HSSPI_REG_FIFOCFG);
sspi              327 drivers/spi/spi-synquacer.c 	writel(val, sspi->regs + SYNQUACER_HSSPI_REG_FIFOCFG);
sspi              329 drivers/spi/spi-synquacer.c 	val = readl(sspi->regs + SYNQUACER_HSSPI_REG_DMSTART);
sspi              342 drivers/spi/spi-synquacer.c 	writel(val, sspi->regs + SYNQUACER_HSSPI_REG_DMSTART);
sspi              344 drivers/spi/spi-synquacer.c 	sspi->bpw = bpw;
sspi              345 drivers/spi/spi-synquacer.c 	sspi->mode = mode;
sspi              346 drivers/spi/spi-synquacer.c 	sspi->speed = speed;
sspi              347 drivers/spi/spi-synquacer.c 	sspi->cs = spi->chip_select;
sspi              348 drivers/spi/spi-synquacer.c 	sspi->bus_width = bus_width;
sspi              357 drivers/spi/spi-synquacer.c 	struct synquacer_spi *sspi = spi_master_get_devdata(master);
sspi              364 drivers/spi/spi-synquacer.c 	val = readl(sspi->regs + SYNQUACER_HSSPI_REG_DMSTART);
sspi              366 drivers/spi/spi-synquacer.c 	writel(val, sspi->regs + SYNQUACER_HSSPI_REG_DMSTART);
sspi              368 drivers/spi/spi-synquacer.c 	val = readl(sspi->regs + SYNQUACER_HSSPI_REG_FIFOCFG);
sspi              371 drivers/spi/spi-synquacer.c 	writel(val, sspi->regs + SYNQUACER_HSSPI_REG_FIFOCFG);
sspi              389 drivers/spi/spi-synquacer.c 	reinit_completion(&sspi->transfer_done);
sspi              391 drivers/spi/spi-synquacer.c 	sspi->tx_buf = xfer->tx_buf;
sspi              392 drivers/spi/spi-synquacer.c 	sspi->rx_buf = xfer->rx_buf;
sspi              394 drivers/spi/spi-synquacer.c 	switch (sspi->bpw) {
sspi              407 drivers/spi/spi-synquacer.c 		dev_err(sspi->dev, "unsupported bpw: %d\n", sspi->bpw);
sspi              412 drivers/spi/spi-synquacer.c 		sspi->tx_words = words;
sspi              414 drivers/spi/spi-synquacer.c 		sspi->tx_words = 0;
sspi              417 drivers/spi/spi-synquacer.c 		sspi->rx_words = words;
sspi              419 drivers/spi/spi-synquacer.c 		sspi->rx_words = 0;
sspi              422 drivers/spi/spi-synquacer.c 		status = write_fifo(sspi);
sspi              424 drivers/spi/spi-synquacer.c 			dev_err(sspi->dev, "failed write_fifo. status: 0x%x\n",
sspi              431 drivers/spi/spi-synquacer.c 		val = readl(sspi->regs + SYNQUACER_HSSPI_REG_FIFOCFG);
sspi              434 drivers/spi/spi-synquacer.c 		val |= ((sspi->rx_words > SYNQUACER_HSSPI_FIFO_DEPTH ?
sspi              435 drivers/spi/spi-synquacer.c 			SYNQUACER_HSSPI_FIFO_RX_THRESHOLD : sspi->rx_words) <<
sspi              437 drivers/spi/spi-synquacer.c 		writel(val, sspi->regs + SYNQUACER_HSSPI_REG_FIFOCFG);
sspi              440 drivers/spi/spi-synquacer.c 	writel(~0, sspi->regs + SYNQUACER_HSSPI_REG_TXC);
sspi              441 drivers/spi/spi-synquacer.c 	writel(~0, sspi->regs + SYNQUACER_HSSPI_REG_RXC);
sspi              444 drivers/spi/spi-synquacer.c 	val = readl(sspi->regs + SYNQUACER_HSSPI_REG_DMSTART);
sspi              446 drivers/spi/spi-synquacer.c 	writel(val, sspi->regs + SYNQUACER_HSSPI_REG_DMSTART);
sspi              450 drivers/spi/spi-synquacer.c 		writel(val, sspi->regs + SYNQUACER_HSSPI_REG_TXE);
sspi              451 drivers/spi/spi-synquacer.c 		status = wait_for_completion_timeout(&sspi->transfer_done,
sspi              453 drivers/spi/spi-synquacer.c 		writel(0, sspi->regs + SYNQUACER_HSSPI_REG_TXE);
sspi              461 drivers/spi/spi-synquacer.c 		writel(val, sspi->regs + SYNQUACER_HSSPI_REG_RXE);
sspi              462 drivers/spi/spi-synquacer.c 		status = wait_for_completion_timeout(&sspi->transfer_done,
sspi              464 drivers/spi/spi-synquacer.c 		writel(0, sspi->regs + SYNQUACER_HSSPI_REG_RXE);
sspi              467 drivers/spi/spi-synquacer.c 		val = readl(sspi->regs + SYNQUACER_HSSPI_REG_DMSTART);
sspi              469 drivers/spi/spi-synquacer.c 		writel(val, sspi->regs + SYNQUACER_HSSPI_REG_DMSTART);
sspi              470 drivers/spi/spi-synquacer.c 		sspi->rx_buf = buf;
sspi              471 drivers/spi/spi-synquacer.c 		sspi->rx_words = SYNQUACER_HSSPI_FIFO_DEPTH;
sspi              472 drivers/spi/spi-synquacer.c 		read_fifo(sspi);
sspi              476 drivers/spi/spi-synquacer.c 		dev_err(sspi->dev, "failed to transfer. status: 0x%x\n",
sspi              486 drivers/spi/spi-synquacer.c 	struct synquacer_spi *sspi = spi_master_get_devdata(spi->master);
sspi              489 drivers/spi/spi-synquacer.c 	val = readl(sspi->regs + SYNQUACER_HSSPI_REG_DMSTART);
sspi              493 drivers/spi/spi-synquacer.c 	writel(val, sspi->regs + SYNQUACER_HSSPI_REG_DMSTART);
sspi              496 drivers/spi/spi-synquacer.c static int synquacer_spi_wait_status_update(struct synquacer_spi *sspi,
sspi              505 drivers/spi/spi-synquacer.c 		val = readl(sspi->regs + SYNQUACER_HSSPI_REG_MCTRL) &
sspi              513 drivers/spi/spi-synquacer.c 	dev_err(sspi->dev, "timeout occurs in updating Module Enable Status\n");
sspi              521 drivers/spi/spi-synquacer.c 	struct synquacer_spi *sspi = spi_master_get_devdata(master);
sspi              524 drivers/spi/spi-synquacer.c 	writel(0, sspi->regs + SYNQUACER_HSSPI_REG_MCTRL);
sspi              525 drivers/spi/spi-synquacer.c 	status = synquacer_spi_wait_status_update(sspi, false);
sspi              529 drivers/spi/spi-synquacer.c 	writel(0, sspi->regs + SYNQUACER_HSSPI_REG_TXE);
sspi              530 drivers/spi/spi-synquacer.c 	writel(0, sspi->regs + SYNQUACER_HSSPI_REG_RXE);
sspi              531 drivers/spi/spi-synquacer.c 	writel(~0, sspi->regs + SYNQUACER_HSSPI_REG_TXC);
sspi              532 drivers/spi/spi-synquacer.c 	writel(~0, sspi->regs + SYNQUACER_HSSPI_REG_RXC);
sspi              533 drivers/spi/spi-synquacer.c 	writel(~0, sspi->regs + SYNQUACER_HSSPI_REG_FAULTC);
sspi              535 drivers/spi/spi-synquacer.c 	val = readl(sspi->regs + SYNQUACER_HSSPI_REG_DMCFG);
sspi              538 drivers/spi/spi-synquacer.c 	writel(val, sspi->regs + SYNQUACER_HSSPI_REG_DMCFG);
sspi              540 drivers/spi/spi-synquacer.c 	val = readl(sspi->regs + SYNQUACER_HSSPI_REG_MCTRL);
sspi              541 drivers/spi/spi-synquacer.c 	if (sspi->clk_src_type == SYNQUACER_HSSPI_CLOCK_SRC_IPCLK)
sspi              551 drivers/spi/spi-synquacer.c 	writel(val, sspi->regs + SYNQUACER_HSSPI_REG_MCTRL);
sspi              552 drivers/spi/spi-synquacer.c 	status = synquacer_spi_wait_status_update(sspi, true);
sspi              562 drivers/spi/spi-synquacer.c 	struct synquacer_spi *sspi = priv;
sspi              564 drivers/spi/spi-synquacer.c 	val = readl(sspi->regs + SYNQUACER_HSSPI_REG_RXF);
sspi              567 drivers/spi/spi-synquacer.c 		read_fifo(sspi);
sspi              569 drivers/spi/spi-synquacer.c 		if (sspi->rx_words == 0) {
sspi              570 drivers/spi/spi-synquacer.c 			writel(0, sspi->regs + SYNQUACER_HSSPI_REG_RXE);
sspi              571 drivers/spi/spi-synquacer.c 			complete(&sspi->transfer_done);
sspi              582 drivers/spi/spi-synquacer.c 	struct synquacer_spi *sspi = priv;
sspi              584 drivers/spi/spi-synquacer.c 	val = readl(sspi->regs + SYNQUACER_HSSPI_REG_TXF);
sspi              586 drivers/spi/spi-synquacer.c 		if (sspi->tx_words == 0) {
sspi              587 drivers/spi/spi-synquacer.c 			writel(0, sspi->regs + SYNQUACER_HSSPI_REG_TXE);
sspi              588 drivers/spi/spi-synquacer.c 			complete(&sspi->transfer_done);
sspi              590 drivers/spi/spi-synquacer.c 			write_fifo(sspi);
sspi              602 drivers/spi/spi-synquacer.c 	struct synquacer_spi *sspi;
sspi              606 drivers/spi/spi-synquacer.c 	master = spi_alloc_master(&pdev->dev, sizeof(*sspi));
sspi              612 drivers/spi/spi-synquacer.c 	sspi = spi_master_get_devdata(master);
sspi              613 drivers/spi/spi-synquacer.c 	sspi->dev = &pdev->dev;
sspi              615 drivers/spi/spi-synquacer.c 	init_completion(&sspi->transfer_done);
sspi              617 drivers/spi/spi-synquacer.c 	sspi->regs = devm_platform_ioremap_resource(pdev, 0);
sspi              618 drivers/spi/spi-synquacer.c 	if (IS_ERR(sspi->regs)) {
sspi              619 drivers/spi/spi-synquacer.c 		ret = PTR_ERR(sspi->regs);
sspi              623 drivers/spi/spi-synquacer.c 	sspi->clk_src_type = SYNQUACER_HSSPI_CLOCK_SRC_IHCLK; /* Default */
sspi              630 drivers/spi/spi-synquacer.c 			sspi->clk_src_type = SYNQUACER_HSSPI_CLOCK_SRC_IHCLK;
sspi              631 drivers/spi/spi-synquacer.c 			sspi->clk = devm_clk_get(sspi->dev, "iHCLK");
sspi              634 drivers/spi/spi-synquacer.c 			sspi->clk_src_type = SYNQUACER_HSSPI_CLOCK_SRC_IPCLK;
sspi              635 drivers/spi/spi-synquacer.c 			sspi->clk = devm_clk_get(sspi->dev, "iPCLK");
sspi              642 drivers/spi/spi-synquacer.c 		if (IS_ERR(sspi->clk)) {
sspi              643 drivers/spi/spi-synquacer.c 			if (!(PTR_ERR(sspi->clk) == -EPROBE_DEFER))
sspi              645 drivers/spi/spi-synquacer.c 			ret = PTR_ERR(sspi->clk);
sspi              649 drivers/spi/spi-synquacer.c 		ret = clk_prepare_enable(sspi->clk);
sspi              656 drivers/spi/spi-synquacer.c 		master->max_speed_hz = clk_get_rate(sspi->clk);
sspi              665 drivers/spi/spi-synquacer.c 	sspi->aces = device_property_read_bool(&pdev->dev,
sspi              667 drivers/spi/spi-synquacer.c 	sspi->rtm = device_property_read_bool(&pdev->dev, "socionext,use-rtm");
sspi              676 drivers/spi/spi-synquacer.c 	snprintf(sspi->rx_irq_name, SYNQUACER_HSSPI_IRQ_NAME_MAX, "%s-rx",
sspi              679 drivers/spi/spi-synquacer.c 				0, sspi->rx_irq_name, sspi);
sspi              690 drivers/spi/spi-synquacer.c 	snprintf(sspi->tx_irq_name, SYNQUACER_HSSPI_IRQ_NAME_MAX, "%s-tx",
sspi              693 drivers/spi/spi-synquacer.c 				0, sspi->tx_irq_name, sspi);
sspi              716 drivers/spi/spi-synquacer.c 	pm_runtime_set_active(sspi->dev);
sspi              717 drivers/spi/spi-synquacer.c 	pm_runtime_enable(sspi->dev);
sspi              719 drivers/spi/spi-synquacer.c 	ret = devm_spi_register_master(sspi->dev, master);
sspi              726 drivers/spi/spi-synquacer.c 	pm_runtime_disable(sspi->dev);
sspi              728 drivers/spi/spi-synquacer.c 	clk_disable_unprepare(sspi->clk);
sspi              738 drivers/spi/spi-synquacer.c 	struct synquacer_spi *sspi = spi_master_get_devdata(master);
sspi              740 drivers/spi/spi-synquacer.c 	pm_runtime_disable(sspi->dev);
sspi              742 drivers/spi/spi-synquacer.c 	clk_disable_unprepare(sspi->clk);
sspi              750 drivers/spi/spi-synquacer.c 	struct synquacer_spi *sspi = spi_master_get_devdata(master);
sspi              758 drivers/spi/spi-synquacer.c 		clk_disable_unprepare(sspi->clk);
sspi              766 drivers/spi/spi-synquacer.c 	struct synquacer_spi *sspi = spi_master_get_devdata(master);
sspi              771 drivers/spi/spi-synquacer.c 		sspi->speed = 0;
sspi              773 drivers/spi/spi-synquacer.c 		ret = clk_prepare_enable(sspi->clk);
sspi              789 drivers/spi/spi-synquacer.c 		clk_disable_unprepare(sspi->clk);