1/* 2 * Copyright (C) 2009 Texas Instruments. 3 * Copyright (C) 2010 EF Johnson Technologies 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation; either version 2 of the License, or 8 * (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this program; if not, write to the Free Software 17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 */ 19 20#include <linux/interrupt.h> 21#include <linux/io.h> 22#include <linux/gpio.h> 23#include <linux/module.h> 24#include <linux/delay.h> 25#include <linux/platform_device.h> 26#include <linux/err.h> 27#include <linux/clk.h> 28#include <linux/dmaengine.h> 29#include <linux/dma-mapping.h> 30#include <linux/edma.h> 31#include <linux/of.h> 32#include <linux/of_device.h> 33#include <linux/of_gpio.h> 34#include <linux/spi/spi.h> 35#include <linux/spi/spi_bitbang.h> 36#include <linux/slab.h> 37 38#include <linux/platform_data/spi-davinci.h> 39 40#define SPI_NO_RESOURCE ((resource_size_t)-1) 41 42#define CS_DEFAULT 0xFF 43 44#define SPIFMT_PHASE_MASK BIT(16) 45#define SPIFMT_POLARITY_MASK BIT(17) 46#define SPIFMT_DISTIMER_MASK BIT(18) 47#define SPIFMT_SHIFTDIR_MASK BIT(20) 48#define SPIFMT_WAITENA_MASK BIT(21) 49#define SPIFMT_PARITYENA_MASK BIT(22) 50#define SPIFMT_ODD_PARITY_MASK BIT(23) 51#define SPIFMT_WDELAY_MASK 0x3f000000u 52#define SPIFMT_WDELAY_SHIFT 24 53#define SPIFMT_PRESCALE_SHIFT 8 54 55/* SPIPC0 */ 56#define SPIPC0_DIFUN_MASK BIT(11) /* MISO */ 57#define SPIPC0_DOFUN_MASK BIT(10) /* MOSI */ 58#define SPIPC0_CLKFUN_MASK BIT(9) /* CLK */ 59#define SPIPC0_SPIENA_MASK BIT(8) /* nREADY */ 60 61#define SPIINT_MASKALL 0x0101035F 62#define SPIINT_MASKINT 0x0000015F 63#define SPI_INTLVL_1 0x000001FF 64#define SPI_INTLVL_0 0x00000000 65 66/* SPIDAT1 (upper 16 bit defines) */ 67#define SPIDAT1_CSHOLD_MASK BIT(12) 68#define SPIDAT1_WDEL BIT(10) 69 70/* SPIGCR1 */ 71#define SPIGCR1_CLKMOD_MASK BIT(1) 72#define SPIGCR1_MASTER_MASK BIT(0) 73#define SPIGCR1_POWERDOWN_MASK BIT(8) 74#define SPIGCR1_LOOPBACK_MASK BIT(16) 75#define SPIGCR1_SPIENA_MASK BIT(24) 76 77/* SPIBUF */ 78#define SPIBUF_TXFULL_MASK BIT(29) 79#define SPIBUF_RXEMPTY_MASK BIT(31) 80 81/* SPIDELAY */ 82#define SPIDELAY_C2TDELAY_SHIFT 24 83#define SPIDELAY_C2TDELAY_MASK (0xFF << SPIDELAY_C2TDELAY_SHIFT) 84#define SPIDELAY_T2CDELAY_SHIFT 16 85#define SPIDELAY_T2CDELAY_MASK (0xFF << SPIDELAY_T2CDELAY_SHIFT) 86#define SPIDELAY_T2EDELAY_SHIFT 8 87#define SPIDELAY_T2EDELAY_MASK (0xFF << SPIDELAY_T2EDELAY_SHIFT) 88#define SPIDELAY_C2EDELAY_SHIFT 0 89#define SPIDELAY_C2EDELAY_MASK 0xFF 90 91/* Error Masks */ 92#define SPIFLG_DLEN_ERR_MASK BIT(0) 93#define SPIFLG_TIMEOUT_MASK BIT(1) 94#define SPIFLG_PARERR_MASK BIT(2) 95#define SPIFLG_DESYNC_MASK BIT(3) 96#define SPIFLG_BITERR_MASK BIT(4) 97#define SPIFLG_OVRRUN_MASK BIT(6) 98#define SPIFLG_BUF_INIT_ACTIVE_MASK BIT(24) 99#define SPIFLG_ERROR_MASK (SPIFLG_DLEN_ERR_MASK \ 100 | SPIFLG_TIMEOUT_MASK | SPIFLG_PARERR_MASK \ 101 | SPIFLG_DESYNC_MASK | SPIFLG_BITERR_MASK \ 102 | SPIFLG_OVRRUN_MASK) 103 104#define SPIINT_DMA_REQ_EN BIT(16) 105 106/* SPI Controller registers */ 107#define SPIGCR0 0x00 108#define SPIGCR1 0x04 109#define SPIINT 0x08 110#define SPILVL 0x0c 111#define SPIFLG 0x10 112#define SPIPC0 0x14 113#define SPIDAT1 0x3c 114#define SPIBUF 0x40 115#define SPIDELAY 0x48 116#define SPIDEF 0x4c 117#define SPIFMT0 0x50 118 119/* SPI Controller driver's private data. */ 120struct davinci_spi { 121 struct spi_bitbang bitbang; 122 struct clk *clk; 123 124 u8 version; 125 resource_size_t pbase; 126 void __iomem *base; 127 u32 irq; 128 struct completion done; 129 130 const void *tx; 131 void *rx; 132 int rcount; 133 int wcount; 134 135 struct dma_chan *dma_rx; 136 struct dma_chan *dma_tx; 137 int dma_rx_chnum; 138 int dma_tx_chnum; 139 140 struct davinci_spi_platform_data pdata; 141 142 void (*get_rx)(u32 rx_data, struct davinci_spi *); 143 u32 (*get_tx)(struct davinci_spi *); 144 145 u8 *bytes_per_word; 146}; 147 148static struct davinci_spi_config davinci_spi_default_cfg; 149 150static void davinci_spi_rx_buf_u8(u32 data, struct davinci_spi *dspi) 151{ 152 if (dspi->rx) { 153 u8 *rx = dspi->rx; 154 *rx++ = (u8)data; 155 dspi->rx = rx; 156 } 157} 158 159static void davinci_spi_rx_buf_u16(u32 data, struct davinci_spi *dspi) 160{ 161 if (dspi->rx) { 162 u16 *rx = dspi->rx; 163 *rx++ = (u16)data; 164 dspi->rx = rx; 165 } 166} 167 168static u32 davinci_spi_tx_buf_u8(struct davinci_spi *dspi) 169{ 170 u32 data = 0; 171 172 if (dspi->tx) { 173 const u8 *tx = dspi->tx; 174 175 data = *tx++; 176 dspi->tx = tx; 177 } 178 return data; 179} 180 181static u32 davinci_spi_tx_buf_u16(struct davinci_spi *dspi) 182{ 183 u32 data = 0; 184 185 if (dspi->tx) { 186 const u16 *tx = dspi->tx; 187 188 data = *tx++; 189 dspi->tx = tx; 190 } 191 return data; 192} 193 194static inline void set_io_bits(void __iomem *addr, u32 bits) 195{ 196 u32 v = ioread32(addr); 197 198 v |= bits; 199 iowrite32(v, addr); 200} 201 202static inline void clear_io_bits(void __iomem *addr, u32 bits) 203{ 204 u32 v = ioread32(addr); 205 206 v &= ~bits; 207 iowrite32(v, addr); 208} 209 210/* 211 * Interface to control the chip select signal 212 */ 213static void davinci_spi_chipselect(struct spi_device *spi, int value) 214{ 215 struct davinci_spi *dspi; 216 struct davinci_spi_platform_data *pdata; 217 struct davinci_spi_config *spicfg = spi->controller_data; 218 u8 chip_sel = spi->chip_select; 219 u16 spidat1 = CS_DEFAULT; 220 bool gpio_chipsel = false; 221 int gpio; 222 223 dspi = spi_master_get_devdata(spi->master); 224 pdata = &dspi->pdata; 225 226 if (spi->cs_gpio >= 0) { 227 /* SPI core parse and update master->cs_gpio */ 228 gpio_chipsel = true; 229 gpio = spi->cs_gpio; 230 } 231 232 /* program delay transfers if tx_delay is non zero */ 233 if (spicfg->wdelay) 234 spidat1 |= SPIDAT1_WDEL; 235 236 /* 237 * Board specific chip select logic decides the polarity and cs 238 * line for the controller 239 */ 240 if (gpio_chipsel) { 241 if (value == BITBANG_CS_ACTIVE) 242 gpio_set_value(gpio, spi->mode & SPI_CS_HIGH); 243 else 244 gpio_set_value(gpio, !(spi->mode & SPI_CS_HIGH)); 245 } else { 246 if (value == BITBANG_CS_ACTIVE) { 247 spidat1 |= SPIDAT1_CSHOLD_MASK; 248 spidat1 &= ~(0x1 << chip_sel); 249 } 250 } 251 252 iowrite16(spidat1, dspi->base + SPIDAT1 + 2); 253} 254 255/** 256 * davinci_spi_get_prescale - Calculates the correct prescale value 257 * @maxspeed_hz: the maximum rate the SPI clock can run at 258 * 259 * This function calculates the prescale value that generates a clock rate 260 * less than or equal to the specified maximum. 261 * 262 * Returns: calculated prescale - 1 for easy programming into SPI registers 263 * or negative error number if valid prescalar cannot be updated. 264 */ 265static inline int davinci_spi_get_prescale(struct davinci_spi *dspi, 266 u32 max_speed_hz) 267{ 268 int ret; 269 270 ret = DIV_ROUND_UP(clk_get_rate(dspi->clk), max_speed_hz); 271 272 if (ret < 3 || ret > 256) 273 return -EINVAL; 274 275 return ret - 1; 276} 277 278/** 279 * davinci_spi_setup_transfer - This functions will determine transfer method 280 * @spi: spi device on which data transfer to be done 281 * @t: spi transfer in which transfer info is filled 282 * 283 * This function determines data transfer method (8/16/32 bit transfer). 284 * It will also set the SPI Clock Control register according to 285 * SPI slave device freq. 286 */ 287static int davinci_spi_setup_transfer(struct spi_device *spi, 288 struct spi_transfer *t) 289{ 290 291 struct davinci_spi *dspi; 292 struct davinci_spi_config *spicfg; 293 u8 bits_per_word = 0; 294 u32 hz = 0, spifmt = 0; 295 int prescale; 296 297 dspi = spi_master_get_devdata(spi->master); 298 spicfg = spi->controller_data; 299 if (!spicfg) 300 spicfg = &davinci_spi_default_cfg; 301 302 if (t) { 303 bits_per_word = t->bits_per_word; 304 hz = t->speed_hz; 305 } 306 307 /* if bits_per_word is not set then set it default */ 308 if (!bits_per_word) 309 bits_per_word = spi->bits_per_word; 310 311 /* 312 * Assign function pointer to appropriate transfer method 313 * 8bit, 16bit or 32bit transfer 314 */ 315 if (bits_per_word <= 8) { 316 dspi->get_rx = davinci_spi_rx_buf_u8; 317 dspi->get_tx = davinci_spi_tx_buf_u8; 318 dspi->bytes_per_word[spi->chip_select] = 1; 319 } else { 320 dspi->get_rx = davinci_spi_rx_buf_u16; 321 dspi->get_tx = davinci_spi_tx_buf_u16; 322 dspi->bytes_per_word[spi->chip_select] = 2; 323 } 324 325 if (!hz) 326 hz = spi->max_speed_hz; 327 328 /* Set up SPIFMTn register, unique to this chipselect. */ 329 330 prescale = davinci_spi_get_prescale(dspi, hz); 331 if (prescale < 0) 332 return prescale; 333 334 spifmt = (prescale << SPIFMT_PRESCALE_SHIFT) | (bits_per_word & 0x1f); 335 336 if (spi->mode & SPI_LSB_FIRST) 337 spifmt |= SPIFMT_SHIFTDIR_MASK; 338 339 if (spi->mode & SPI_CPOL) 340 spifmt |= SPIFMT_POLARITY_MASK; 341 342 if (!(spi->mode & SPI_CPHA)) 343 spifmt |= SPIFMT_PHASE_MASK; 344 345 /* 346 * Assume wdelay is used only on SPI peripherals that has this field 347 * in SPIFMTn register and when it's configured from board file or DT. 348 */ 349 if (spicfg->wdelay) 350 spifmt |= ((spicfg->wdelay << SPIFMT_WDELAY_SHIFT) 351 & SPIFMT_WDELAY_MASK); 352 353 /* 354 * Version 1 hardware supports two basic SPI modes: 355 * - Standard SPI mode uses 4 pins, with chipselect 356 * - 3 pin SPI is a 4 pin variant without CS (SPI_NO_CS) 357 * (distinct from SPI_3WIRE, with just one data wire; 358 * or similar variants without MOSI or without MISO) 359 * 360 * Version 2 hardware supports an optional handshaking signal, 361 * so it can support two more modes: 362 * - 5 pin SPI variant is standard SPI plus SPI_READY 363 * - 4 pin with enable is (SPI_READY | SPI_NO_CS) 364 */ 365 366 if (dspi->version == SPI_VERSION_2) { 367 368 u32 delay = 0; 369 370 if (spicfg->odd_parity) 371 spifmt |= SPIFMT_ODD_PARITY_MASK; 372 373 if (spicfg->parity_enable) 374 spifmt |= SPIFMT_PARITYENA_MASK; 375 376 if (spicfg->timer_disable) { 377 spifmt |= SPIFMT_DISTIMER_MASK; 378 } else { 379 delay |= (spicfg->c2tdelay << SPIDELAY_C2TDELAY_SHIFT) 380 & SPIDELAY_C2TDELAY_MASK; 381 delay |= (spicfg->t2cdelay << SPIDELAY_T2CDELAY_SHIFT) 382 & SPIDELAY_T2CDELAY_MASK; 383 } 384 385 if (spi->mode & SPI_READY) { 386 spifmt |= SPIFMT_WAITENA_MASK; 387 delay |= (spicfg->t2edelay << SPIDELAY_T2EDELAY_SHIFT) 388 & SPIDELAY_T2EDELAY_MASK; 389 delay |= (spicfg->c2edelay << SPIDELAY_C2EDELAY_SHIFT) 390 & SPIDELAY_C2EDELAY_MASK; 391 } 392 393 iowrite32(delay, dspi->base + SPIDELAY); 394 } 395 396 iowrite32(spifmt, dspi->base + SPIFMT0); 397 398 return 0; 399} 400 401static int davinci_spi_of_setup(struct spi_device *spi) 402{ 403 struct davinci_spi_config *spicfg = spi->controller_data; 404 struct device_node *np = spi->dev.of_node; 405 u32 prop; 406 407 if (spicfg == NULL && np) { 408 spicfg = kzalloc(sizeof(*spicfg), GFP_KERNEL); 409 if (!spicfg) 410 return -ENOMEM; 411 *spicfg = davinci_spi_default_cfg; 412 /* override with dt configured values */ 413 if (!of_property_read_u32(np, "ti,spi-wdelay", &prop)) 414 spicfg->wdelay = (u8)prop; 415 spi->controller_data = spicfg; 416 } 417 418 return 0; 419} 420 421/** 422 * davinci_spi_setup - This functions will set default transfer method 423 * @spi: spi device on which data transfer to be done 424 * 425 * This functions sets the default transfer method. 426 */ 427static int davinci_spi_setup(struct spi_device *spi) 428{ 429 int retval = 0; 430 struct davinci_spi *dspi; 431 struct davinci_spi_platform_data *pdata; 432 struct spi_master *master = spi->master; 433 struct device_node *np = spi->dev.of_node; 434 bool internal_cs = true; 435 436 dspi = spi_master_get_devdata(spi->master); 437 pdata = &dspi->pdata; 438 439 if (!(spi->mode & SPI_NO_CS)) { 440 if (np && (master->cs_gpios != NULL) && (spi->cs_gpio >= 0)) { 441 retval = gpio_direction_output( 442 spi->cs_gpio, !(spi->mode & SPI_CS_HIGH)); 443 internal_cs = false; 444 } else if (pdata->chip_sel && 445 spi->chip_select < pdata->num_chipselect && 446 pdata->chip_sel[spi->chip_select] != SPI_INTERN_CS) { 447 spi->cs_gpio = pdata->chip_sel[spi->chip_select]; 448 retval = gpio_direction_output( 449 spi->cs_gpio, !(spi->mode & SPI_CS_HIGH)); 450 internal_cs = false; 451 } 452 453 if (retval) { 454 dev_err(&spi->dev, "GPIO %d setup failed (%d)\n", 455 spi->cs_gpio, retval); 456 return retval; 457 } 458 459 if (internal_cs) 460 set_io_bits(dspi->base + SPIPC0, 1 << spi->chip_select); 461 } 462 463 if (spi->mode & SPI_READY) 464 set_io_bits(dspi->base + SPIPC0, SPIPC0_SPIENA_MASK); 465 466 if (spi->mode & SPI_LOOP) 467 set_io_bits(dspi->base + SPIGCR1, SPIGCR1_LOOPBACK_MASK); 468 else 469 clear_io_bits(dspi->base + SPIGCR1, SPIGCR1_LOOPBACK_MASK); 470 471 return davinci_spi_of_setup(spi); 472} 473 474static void davinci_spi_cleanup(struct spi_device *spi) 475{ 476 struct davinci_spi_config *spicfg = spi->controller_data; 477 478 spi->controller_data = NULL; 479 if (spi->dev.of_node) 480 kfree(spicfg); 481} 482 483static int davinci_spi_check_error(struct davinci_spi *dspi, int int_status) 484{ 485 struct device *sdev = dspi->bitbang.master->dev.parent; 486 487 if (int_status & SPIFLG_TIMEOUT_MASK) { 488 dev_dbg(sdev, "SPI Time-out Error\n"); 489 return -ETIMEDOUT; 490 } 491 if (int_status & SPIFLG_DESYNC_MASK) { 492 dev_dbg(sdev, "SPI Desynchronization Error\n"); 493 return -EIO; 494 } 495 if (int_status & SPIFLG_BITERR_MASK) { 496 dev_dbg(sdev, "SPI Bit error\n"); 497 return -EIO; 498 } 499 500 if (dspi->version == SPI_VERSION_2) { 501 if (int_status & SPIFLG_DLEN_ERR_MASK) { 502 dev_dbg(sdev, "SPI Data Length Error\n"); 503 return -EIO; 504 } 505 if (int_status & SPIFLG_PARERR_MASK) { 506 dev_dbg(sdev, "SPI Parity Error\n"); 507 return -EIO; 508 } 509 if (int_status & SPIFLG_OVRRUN_MASK) { 510 dev_dbg(sdev, "SPI Data Overrun error\n"); 511 return -EIO; 512 } 513 if (int_status & SPIFLG_BUF_INIT_ACTIVE_MASK) { 514 dev_dbg(sdev, "SPI Buffer Init Active\n"); 515 return -EBUSY; 516 } 517 } 518 519 return 0; 520} 521 522/** 523 * davinci_spi_process_events - check for and handle any SPI controller events 524 * @dspi: the controller data 525 * 526 * This function will check the SPIFLG register and handle any events that are 527 * detected there 528 */ 529static int davinci_spi_process_events(struct davinci_spi *dspi) 530{ 531 u32 buf, status, errors = 0, spidat1; 532 533 buf = ioread32(dspi->base + SPIBUF); 534 535 if (dspi->rcount > 0 && !(buf & SPIBUF_RXEMPTY_MASK)) { 536 dspi->get_rx(buf & 0xFFFF, dspi); 537 dspi->rcount--; 538 } 539 540 status = ioread32(dspi->base + SPIFLG); 541 542 if (unlikely(status & SPIFLG_ERROR_MASK)) { 543 errors = status & SPIFLG_ERROR_MASK; 544 goto out; 545 } 546 547 if (dspi->wcount > 0 && !(buf & SPIBUF_TXFULL_MASK)) { 548 spidat1 = ioread32(dspi->base + SPIDAT1); 549 dspi->wcount--; 550 spidat1 &= ~0xFFFF; 551 spidat1 |= 0xFFFF & dspi->get_tx(dspi); 552 iowrite32(spidat1, dspi->base + SPIDAT1); 553 } 554 555out: 556 return errors; 557} 558 559static void davinci_spi_dma_rx_callback(void *data) 560{ 561 struct davinci_spi *dspi = (struct davinci_spi *)data; 562 563 dspi->rcount = 0; 564 565 if (!dspi->wcount && !dspi->rcount) 566 complete(&dspi->done); 567} 568 569static void davinci_spi_dma_tx_callback(void *data) 570{ 571 struct davinci_spi *dspi = (struct davinci_spi *)data; 572 573 dspi->wcount = 0; 574 575 if (!dspi->wcount && !dspi->rcount) 576 complete(&dspi->done); 577} 578 579/** 580 * davinci_spi_bufs - functions which will handle transfer data 581 * @spi: spi device on which data transfer to be done 582 * @t: spi transfer in which transfer info is filled 583 * 584 * This function will put data to be transferred into data register 585 * of SPI controller and then wait until the completion will be marked 586 * by the IRQ Handler. 587 */ 588static int davinci_spi_bufs(struct spi_device *spi, struct spi_transfer *t) 589{ 590 struct davinci_spi *dspi; 591 int data_type, ret = -ENOMEM; 592 u32 tx_data, spidat1; 593 u32 errors = 0; 594 struct davinci_spi_config *spicfg; 595 struct davinci_spi_platform_data *pdata; 596 unsigned uninitialized_var(rx_buf_count); 597 void *dummy_buf = NULL; 598 struct scatterlist sg_rx, sg_tx; 599 600 dspi = spi_master_get_devdata(spi->master); 601 pdata = &dspi->pdata; 602 spicfg = (struct davinci_spi_config *)spi->controller_data; 603 if (!spicfg) 604 spicfg = &davinci_spi_default_cfg; 605 606 /* convert len to words based on bits_per_word */ 607 data_type = dspi->bytes_per_word[spi->chip_select]; 608 609 dspi->tx = t->tx_buf; 610 dspi->rx = t->rx_buf; 611 dspi->wcount = t->len / data_type; 612 dspi->rcount = dspi->wcount; 613 614 spidat1 = ioread32(dspi->base + SPIDAT1); 615 616 clear_io_bits(dspi->base + SPIGCR1, SPIGCR1_POWERDOWN_MASK); 617 set_io_bits(dspi->base + SPIGCR1, SPIGCR1_SPIENA_MASK); 618 619 reinit_completion(&dspi->done); 620 621 if (spicfg->io_type == SPI_IO_TYPE_INTR) 622 set_io_bits(dspi->base + SPIINT, SPIINT_MASKINT); 623 624 if (spicfg->io_type != SPI_IO_TYPE_DMA) { 625 /* start the transfer */ 626 dspi->wcount--; 627 tx_data = dspi->get_tx(dspi); 628 spidat1 &= 0xFFFF0000; 629 spidat1 |= tx_data & 0xFFFF; 630 iowrite32(spidat1, dspi->base + SPIDAT1); 631 } else { 632 struct dma_slave_config dma_rx_conf = { 633 .direction = DMA_DEV_TO_MEM, 634 .src_addr = (unsigned long)dspi->pbase + SPIBUF, 635 .src_addr_width = data_type, 636 .src_maxburst = 1, 637 }; 638 struct dma_slave_config dma_tx_conf = { 639 .direction = DMA_MEM_TO_DEV, 640 .dst_addr = (unsigned long)dspi->pbase + SPIDAT1, 641 .dst_addr_width = data_type, 642 .dst_maxburst = 1, 643 }; 644 struct dma_async_tx_descriptor *rxdesc; 645 struct dma_async_tx_descriptor *txdesc; 646 void *buf; 647 648 dummy_buf = kzalloc(t->len, GFP_KERNEL); 649 if (!dummy_buf) 650 goto err_alloc_dummy_buf; 651 652 dmaengine_slave_config(dspi->dma_rx, &dma_rx_conf); 653 dmaengine_slave_config(dspi->dma_tx, &dma_tx_conf); 654 655 sg_init_table(&sg_rx, 1); 656 if (!t->rx_buf) 657 buf = dummy_buf; 658 else 659 buf = t->rx_buf; 660 t->rx_dma = dma_map_single(&spi->dev, buf, 661 t->len, DMA_FROM_DEVICE); 662 if (!t->rx_dma) { 663 ret = -EFAULT; 664 goto err_rx_map; 665 } 666 sg_dma_address(&sg_rx) = t->rx_dma; 667 sg_dma_len(&sg_rx) = t->len; 668 669 sg_init_table(&sg_tx, 1); 670 if (!t->tx_buf) 671 buf = dummy_buf; 672 else 673 buf = (void *)t->tx_buf; 674 t->tx_dma = dma_map_single(&spi->dev, buf, 675 t->len, DMA_TO_DEVICE); 676 if (!t->tx_dma) { 677 ret = -EFAULT; 678 goto err_tx_map; 679 } 680 sg_dma_address(&sg_tx) = t->tx_dma; 681 sg_dma_len(&sg_tx) = t->len; 682 683 rxdesc = dmaengine_prep_slave_sg(dspi->dma_rx, 684 &sg_rx, 1, DMA_DEV_TO_MEM, 685 DMA_PREP_INTERRUPT | DMA_CTRL_ACK); 686 if (!rxdesc) 687 goto err_desc; 688 689 txdesc = dmaengine_prep_slave_sg(dspi->dma_tx, 690 &sg_tx, 1, DMA_MEM_TO_DEV, 691 DMA_PREP_INTERRUPT | DMA_CTRL_ACK); 692 if (!txdesc) 693 goto err_desc; 694 695 rxdesc->callback = davinci_spi_dma_rx_callback; 696 rxdesc->callback_param = (void *)dspi; 697 txdesc->callback = davinci_spi_dma_tx_callback; 698 txdesc->callback_param = (void *)dspi; 699 700 if (pdata->cshold_bug) 701 iowrite16(spidat1 >> 16, dspi->base + SPIDAT1 + 2); 702 703 dmaengine_submit(rxdesc); 704 dmaengine_submit(txdesc); 705 706 dma_async_issue_pending(dspi->dma_rx); 707 dma_async_issue_pending(dspi->dma_tx); 708 709 set_io_bits(dspi->base + SPIINT, SPIINT_DMA_REQ_EN); 710 } 711 712 /* Wait for the transfer to complete */ 713 if (spicfg->io_type != SPI_IO_TYPE_POLL) { 714 wait_for_completion_interruptible(&(dspi->done)); 715 } else { 716 while (dspi->rcount > 0 || dspi->wcount > 0) { 717 errors = davinci_spi_process_events(dspi); 718 if (errors) 719 break; 720 cpu_relax(); 721 } 722 } 723 724 clear_io_bits(dspi->base + SPIINT, SPIINT_MASKALL); 725 if (spicfg->io_type == SPI_IO_TYPE_DMA) { 726 clear_io_bits(dspi->base + SPIINT, SPIINT_DMA_REQ_EN); 727 728 dma_unmap_single(&spi->dev, t->rx_dma, 729 t->len, DMA_FROM_DEVICE); 730 dma_unmap_single(&spi->dev, t->tx_dma, 731 t->len, DMA_TO_DEVICE); 732 kfree(dummy_buf); 733 } 734 735 clear_io_bits(dspi->base + SPIGCR1, SPIGCR1_SPIENA_MASK); 736 set_io_bits(dspi->base + SPIGCR1, SPIGCR1_POWERDOWN_MASK); 737 738 /* 739 * Check for bit error, desync error,parity error,timeout error and 740 * receive overflow errors 741 */ 742 if (errors) { 743 ret = davinci_spi_check_error(dspi, errors); 744 WARN(!ret, "%s: error reported but no error found!\n", 745 dev_name(&spi->dev)); 746 return ret; 747 } 748 749 if (dspi->rcount != 0 || dspi->wcount != 0) { 750 dev_err(&spi->dev, "SPI data transfer error\n"); 751 return -EIO; 752 } 753 754 return t->len; 755 756err_desc: 757 dma_unmap_single(&spi->dev, t->tx_dma, t->len, DMA_TO_DEVICE); 758err_tx_map: 759 dma_unmap_single(&spi->dev, t->rx_dma, t->len, DMA_FROM_DEVICE); 760err_rx_map: 761 kfree(dummy_buf); 762err_alloc_dummy_buf: 763 return ret; 764} 765 766/** 767 * dummy_thread_fn - dummy thread function 768 * @irq: IRQ number for this SPI Master 769 * @context_data: structure for SPI Master controller davinci_spi 770 * 771 * This is to satisfy the request_threaded_irq() API so that the irq 772 * handler is called in interrupt context. 773 */ 774static irqreturn_t dummy_thread_fn(s32 irq, void *data) 775{ 776 return IRQ_HANDLED; 777} 778 779/** 780 * davinci_spi_irq - Interrupt handler for SPI Master Controller 781 * @irq: IRQ number for this SPI Master 782 * @context_data: structure for SPI Master controller davinci_spi 783 * 784 * ISR will determine that interrupt arrives either for READ or WRITE command. 785 * According to command it will do the appropriate action. It will check 786 * transfer length and if it is not zero then dispatch transfer command again. 787 * If transfer length is zero then it will indicate the COMPLETION so that 788 * davinci_spi_bufs function can go ahead. 789 */ 790static irqreturn_t davinci_spi_irq(s32 irq, void *data) 791{ 792 struct davinci_spi *dspi = data; 793 int status; 794 795 status = davinci_spi_process_events(dspi); 796 if (unlikely(status != 0)) 797 clear_io_bits(dspi->base + SPIINT, SPIINT_MASKINT); 798 799 if ((!dspi->rcount && !dspi->wcount) || status) 800 complete(&dspi->done); 801 802 return IRQ_HANDLED; 803} 804 805static int davinci_spi_request_dma(struct davinci_spi *dspi) 806{ 807 dma_cap_mask_t mask; 808 struct device *sdev = dspi->bitbang.master->dev.parent; 809 int r; 810 811 dma_cap_zero(mask); 812 dma_cap_set(DMA_SLAVE, mask); 813 814 dspi->dma_rx = dma_request_channel(mask, edma_filter_fn, 815 &dspi->dma_rx_chnum); 816 if (!dspi->dma_rx) { 817 dev_err(sdev, "request RX DMA channel failed\n"); 818 r = -ENODEV; 819 goto rx_dma_failed; 820 } 821 822 dspi->dma_tx = dma_request_channel(mask, edma_filter_fn, 823 &dspi->dma_tx_chnum); 824 if (!dspi->dma_tx) { 825 dev_err(sdev, "request TX DMA channel failed\n"); 826 r = -ENODEV; 827 goto tx_dma_failed; 828 } 829 830 return 0; 831 832tx_dma_failed: 833 dma_release_channel(dspi->dma_rx); 834rx_dma_failed: 835 return r; 836} 837 838#if defined(CONFIG_OF) 839static const struct of_device_id davinci_spi_of_match[] = { 840 { 841 .compatible = "ti,dm6441-spi", 842 }, 843 { 844 .compatible = "ti,da830-spi", 845 .data = (void *)SPI_VERSION_2, 846 }, 847 { }, 848}; 849MODULE_DEVICE_TABLE(of, davinci_spi_of_match); 850 851/** 852 * spi_davinci_get_pdata - Get platform data from DTS binding 853 * @pdev: ptr to platform data 854 * @dspi: ptr to driver data 855 * 856 * Parses and populates pdata in dspi from device tree bindings. 857 * 858 * NOTE: Not all platform data params are supported currently. 859 */ 860static int spi_davinci_get_pdata(struct platform_device *pdev, 861 struct davinci_spi *dspi) 862{ 863 struct device_node *node = pdev->dev.of_node; 864 struct davinci_spi_platform_data *pdata; 865 unsigned int num_cs, intr_line = 0; 866 const struct of_device_id *match; 867 868 pdata = &dspi->pdata; 869 870 pdata->version = SPI_VERSION_1; 871 match = of_match_device(davinci_spi_of_match, &pdev->dev); 872 if (!match) 873 return -ENODEV; 874 875 /* match data has the SPI version number for SPI_VERSION_2 */ 876 if (match->data == (void *)SPI_VERSION_2) 877 pdata->version = SPI_VERSION_2; 878 879 /* 880 * default num_cs is 1 and all chipsel are internal to the chip 881 * indicated by chip_sel being NULL or cs_gpios being NULL or 882 * set to -ENOENT. num-cs includes internal as well as gpios. 883 * indicated by chip_sel being NULL. GPIO based CS is not 884 * supported yet in DT bindings. 885 */ 886 num_cs = 1; 887 of_property_read_u32(node, "num-cs", &num_cs); 888 pdata->num_chipselect = num_cs; 889 of_property_read_u32(node, "ti,davinci-spi-intr-line", &intr_line); 890 pdata->intr_line = intr_line; 891 return 0; 892} 893#else 894static struct davinci_spi_platform_data 895 *spi_davinci_get_pdata(struct platform_device *pdev, 896 struct davinci_spi *dspi) 897{ 898 return -ENODEV; 899} 900#endif 901 902/** 903 * davinci_spi_probe - probe function for SPI Master Controller 904 * @pdev: platform_device structure which contains plateform specific data 905 * 906 * According to Linux Device Model this function will be invoked by Linux 907 * with platform_device struct which contains the device specific info. 908 * This function will map the SPI controller's memory, register IRQ, 909 * Reset SPI controller and setting its registers to default value. 910 * It will invoke spi_bitbang_start to create work queue so that client driver 911 * can register transfer method to work queue. 912 */ 913static int davinci_spi_probe(struct platform_device *pdev) 914{ 915 struct spi_master *master; 916 struct davinci_spi *dspi; 917 struct davinci_spi_platform_data *pdata; 918 struct resource *r; 919 resource_size_t dma_rx_chan = SPI_NO_RESOURCE; 920 resource_size_t dma_tx_chan = SPI_NO_RESOURCE; 921 int ret = 0; 922 u32 spipc0; 923 924 master = spi_alloc_master(&pdev->dev, sizeof(struct davinci_spi)); 925 if (master == NULL) { 926 ret = -ENOMEM; 927 goto err; 928 } 929 930 platform_set_drvdata(pdev, master); 931 932 dspi = spi_master_get_devdata(master); 933 934 if (dev_get_platdata(&pdev->dev)) { 935 pdata = dev_get_platdata(&pdev->dev); 936 dspi->pdata = *pdata; 937 } else { 938 /* update dspi pdata with that from the DT */ 939 ret = spi_davinci_get_pdata(pdev, dspi); 940 if (ret < 0) 941 goto free_master; 942 } 943 944 /* pdata in dspi is now updated and point pdata to that */ 945 pdata = &dspi->pdata; 946 947 dspi->bytes_per_word = devm_kzalloc(&pdev->dev, 948 sizeof(*dspi->bytes_per_word) * 949 pdata->num_chipselect, GFP_KERNEL); 950 if (dspi->bytes_per_word == NULL) { 951 ret = -ENOMEM; 952 goto free_master; 953 } 954 955 r = platform_get_resource(pdev, IORESOURCE_MEM, 0); 956 if (r == NULL) { 957 ret = -ENOENT; 958 goto free_master; 959 } 960 961 dspi->pbase = r->start; 962 963 dspi->base = devm_ioremap_resource(&pdev->dev, r); 964 if (IS_ERR(dspi->base)) { 965 ret = PTR_ERR(dspi->base); 966 goto free_master; 967 } 968 969 dspi->irq = platform_get_irq(pdev, 0); 970 if (dspi->irq <= 0) { 971 ret = -EINVAL; 972 goto free_master; 973 } 974 975 ret = devm_request_threaded_irq(&pdev->dev, dspi->irq, davinci_spi_irq, 976 dummy_thread_fn, 0, dev_name(&pdev->dev), dspi); 977 if (ret) 978 goto free_master; 979 980 dspi->bitbang.master = master; 981 982 dspi->clk = devm_clk_get(&pdev->dev, NULL); 983 if (IS_ERR(dspi->clk)) { 984 ret = -ENODEV; 985 goto free_master; 986 } 987 clk_prepare_enable(dspi->clk); 988 989 master->dev.of_node = pdev->dev.of_node; 990 master->bus_num = pdev->id; 991 master->num_chipselect = pdata->num_chipselect; 992 master->bits_per_word_mask = SPI_BPW_RANGE_MASK(2, 16); 993 master->setup = davinci_spi_setup; 994 master->cleanup = davinci_spi_cleanup; 995 996 dspi->bitbang.chipselect = davinci_spi_chipselect; 997 dspi->bitbang.setup_transfer = davinci_spi_setup_transfer; 998 999 dspi->version = pdata->version; 1000 1001 dspi->bitbang.flags = SPI_NO_CS | SPI_LSB_FIRST | SPI_LOOP; 1002 if (dspi->version == SPI_VERSION_2) 1003 dspi->bitbang.flags |= SPI_READY; 1004 1005 if (pdev->dev.of_node) { 1006 int i; 1007 1008 for (i = 0; i < pdata->num_chipselect; i++) { 1009 int cs_gpio = of_get_named_gpio(pdev->dev.of_node, 1010 "cs-gpios", i); 1011 1012 if (cs_gpio == -EPROBE_DEFER) { 1013 ret = cs_gpio; 1014 goto free_clk; 1015 } 1016 1017 if (gpio_is_valid(cs_gpio)) { 1018 ret = devm_gpio_request(&pdev->dev, cs_gpio, 1019 dev_name(&pdev->dev)); 1020 if (ret) 1021 goto free_clk; 1022 } 1023 } 1024 } 1025 1026 r = platform_get_resource(pdev, IORESOURCE_DMA, 0); 1027 if (r) 1028 dma_rx_chan = r->start; 1029 r = platform_get_resource(pdev, IORESOURCE_DMA, 1); 1030 if (r) 1031 dma_tx_chan = r->start; 1032 1033 dspi->bitbang.txrx_bufs = davinci_spi_bufs; 1034 if (dma_rx_chan != SPI_NO_RESOURCE && 1035 dma_tx_chan != SPI_NO_RESOURCE) { 1036 dspi->dma_rx_chnum = dma_rx_chan; 1037 dspi->dma_tx_chnum = dma_tx_chan; 1038 1039 ret = davinci_spi_request_dma(dspi); 1040 if (ret) 1041 goto free_clk; 1042 1043 dev_info(&pdev->dev, "DMA: supported\n"); 1044 dev_info(&pdev->dev, "DMA: RX channel: %pa, TX channel: %pa, event queue: %d\n", 1045 &dma_rx_chan, &dma_tx_chan, 1046 pdata->dma_event_q); 1047 } 1048 1049 dspi->get_rx = davinci_spi_rx_buf_u8; 1050 dspi->get_tx = davinci_spi_tx_buf_u8; 1051 1052 init_completion(&dspi->done); 1053 1054 /* Reset In/OUT SPI module */ 1055 iowrite32(0, dspi->base + SPIGCR0); 1056 udelay(100); 1057 iowrite32(1, dspi->base + SPIGCR0); 1058 1059 /* Set up SPIPC0. CS and ENA init is done in davinci_spi_setup */ 1060 spipc0 = SPIPC0_DIFUN_MASK | SPIPC0_DOFUN_MASK | SPIPC0_CLKFUN_MASK; 1061 iowrite32(spipc0, dspi->base + SPIPC0); 1062 1063 if (pdata->intr_line) 1064 iowrite32(SPI_INTLVL_1, dspi->base + SPILVL); 1065 else 1066 iowrite32(SPI_INTLVL_0, dspi->base + SPILVL); 1067 1068 iowrite32(CS_DEFAULT, dspi->base + SPIDEF); 1069 1070 /* master mode default */ 1071 set_io_bits(dspi->base + SPIGCR1, SPIGCR1_CLKMOD_MASK); 1072 set_io_bits(dspi->base + SPIGCR1, SPIGCR1_MASTER_MASK); 1073 set_io_bits(dspi->base + SPIGCR1, SPIGCR1_POWERDOWN_MASK); 1074 1075 ret = spi_bitbang_start(&dspi->bitbang); 1076 if (ret) 1077 goto free_dma; 1078 1079 dev_info(&pdev->dev, "Controller at 0x%p\n", dspi->base); 1080 1081 return ret; 1082 1083free_dma: 1084 dma_release_channel(dspi->dma_rx); 1085 dma_release_channel(dspi->dma_tx); 1086free_clk: 1087 clk_disable_unprepare(dspi->clk); 1088free_master: 1089 spi_master_put(master); 1090err: 1091 return ret; 1092} 1093 1094/** 1095 * davinci_spi_remove - remove function for SPI Master Controller 1096 * @pdev: platform_device structure which contains plateform specific data 1097 * 1098 * This function will do the reverse action of davinci_spi_probe function 1099 * It will free the IRQ and SPI controller's memory region. 1100 * It will also call spi_bitbang_stop to destroy the work queue which was 1101 * created by spi_bitbang_start. 1102 */ 1103static int davinci_spi_remove(struct platform_device *pdev) 1104{ 1105 struct davinci_spi *dspi; 1106 struct spi_master *master; 1107 1108 master = platform_get_drvdata(pdev); 1109 dspi = spi_master_get_devdata(master); 1110 1111 spi_bitbang_stop(&dspi->bitbang); 1112 1113 clk_disable_unprepare(dspi->clk); 1114 spi_master_put(master); 1115 1116 return 0; 1117} 1118 1119static struct platform_driver davinci_spi_driver = { 1120 .driver = { 1121 .name = "spi_davinci", 1122 .owner = THIS_MODULE, 1123 .of_match_table = of_match_ptr(davinci_spi_of_match), 1124 }, 1125 .probe = davinci_spi_probe, 1126 .remove = davinci_spi_remove, 1127}; 1128module_platform_driver(davinci_spi_driver); 1129 1130MODULE_DESCRIPTION("TI DaVinci SPI Master Controller Driver"); 1131MODULE_LICENSE("GPL"); 1132