Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge remote-tracking branches 'spi/topic/fsl-espi', 'spi/topic/gpio', 'spi/topic/hspi', 'spi/topic/mpc512x', 'spi/topic/msiof', 'spi/topic/nuc900', 'spi/topic/oc-tiny', 'spi/topic/omap', 'spi/topic/orion' and 'spi/topic/pci' into spi-linus

+156 -197
+1 -1
Documentation/devicetree/bindings/spi/spi-bus.txt
··· 67 67 Dual/Quad mode is not allowed when 3-wire mode is used. 68 68 69 69 If a gpio chipselect is used for the SPI slave the gpio number will be passed 70 - via the cs_gpio 70 + via the SPI master node cs-gpios property. 71 71 72 72 SPI example for an MPC5200 SPI bus: 73 73 spi@f00 {
+3 -1
drivers/spi/Kconfig
··· 307 307 308 308 config SPI_OMAP24XX 309 309 tristate "McSPI driver for OMAP" 310 + depends on ARM || ARM64 || AVR32 || HEXAGON || MIPS || SH 310 311 depends on ARCH_OMAP2PLUS || COMPILE_TEST 311 312 help 312 313 SPI master controller for OMAP24XX and later Multichannel SPI ··· 414 413 415 414 config SPI_SH_MSIOF 416 415 tristate "SuperH MSIOF SPI controller" 417 - depends on (SUPERH || ARCH_SHMOBILE) && HAVE_CLK 416 + depends on HAVE_CLK 417 + depends on SUPERH || ARCH_SHMOBILE || COMPILE_TEST 418 418 select SPI_BITBANG 419 419 help 420 420 SPI driver for SuperH and SH Mobile MSIOF blocks.
+1 -1
drivers/spi/spi-dw-pci.c
··· 125 125 #define spi_resume NULL 126 126 #endif 127 127 128 - static DEFINE_PCI_DEVICE_TABLE(pci_ids) = { 128 + static const struct pci_device_id pci_ids[] = { 129 129 /* Intel MID platform SPI controller 0 */ 130 130 { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x0800) }, 131 131 {},
+62 -1
drivers/spi/spi-fsl-espi.c
··· 705 705 goto err; 706 706 707 707 irq = irq_of_parse_and_map(np, 0); 708 - if (!ret) { 708 + if (!irq) { 709 709 ret = -EINVAL; 710 710 goto err; 711 711 } ··· 727 727 return mpc8xxx_spi_remove(&dev->dev); 728 728 } 729 729 730 + #ifdef CONFIG_PM_SLEEP 731 + static int of_fsl_espi_suspend(struct device *dev) 732 + { 733 + struct spi_master *master = dev_get_drvdata(dev); 734 + struct mpc8xxx_spi *mpc8xxx_spi; 735 + struct fsl_espi_reg *reg_base; 736 + u32 regval; 737 + int ret; 738 + 739 + mpc8xxx_spi = spi_master_get_devdata(master); 740 + reg_base = mpc8xxx_spi->reg_base; 741 + 742 + ret = spi_master_suspend(master); 743 + if (ret) { 744 + dev_warn(dev, "cannot suspend master\n"); 745 + return ret; 746 + } 747 + 748 + regval = mpc8xxx_spi_read_reg(&reg_base->mode); 749 + regval &= ~SPMODE_ENABLE; 750 + mpc8xxx_spi_write_reg(&reg_base->mode, regval); 751 + 752 + return 0; 753 + } 754 + 755 + static int of_fsl_espi_resume(struct device *dev) 756 + { 757 + struct fsl_spi_platform_data *pdata = dev_get_platdata(dev); 758 + struct spi_master *master = dev_get_drvdata(dev); 759 + struct mpc8xxx_spi *mpc8xxx_spi; 760 + struct fsl_espi_reg *reg_base; 761 + u32 regval; 762 + int i; 763 + 764 + mpc8xxx_spi = spi_master_get_devdata(master); 765 + reg_base = mpc8xxx_spi->reg_base; 766 + 767 + /* SPI controller initializations */ 768 + mpc8xxx_spi_write_reg(&reg_base->mode, 0); 769 + mpc8xxx_spi_write_reg(&reg_base->mask, 0); 770 + mpc8xxx_spi_write_reg(&reg_base->command, 0); 771 + mpc8xxx_spi_write_reg(&reg_base->event, 0xffffffff); 772 + 773 + /* Init eSPI CS mode register */ 774 + for (i = 0; i < pdata->max_chipselect; i++) 775 + mpc8xxx_spi_write_reg(&reg_base->csmode[i], CSMODE_INIT_VAL); 776 + 777 + /* Enable SPI interface */ 778 + regval = pdata->initial_spmode | SPMODE_INIT_VAL | SPMODE_ENABLE; 779 + 780 + mpc8xxx_spi_write_reg(&reg_base->mode, regval); 781 + 782 + return spi_master_resume(master); 783 + } 784 + #endif /* CONFIG_PM_SLEEP */ 785 + 786 + static const struct dev_pm_ops espi_pm = { 787 + SET_SYSTEM_SLEEP_PM_OPS(of_fsl_espi_suspend, of_fsl_espi_resume) 788 + }; 789 + 730 790 static const struct of_device_id of_fsl_espi_match[] = { 731 791 { .compatible = "fsl,mpc8536-espi" }, 732 792 {} ··· 798 738 .name = "fsl_espi", 799 739 .owner = THIS_MODULE, 800 740 .of_match_table = of_fsl_espi_match, 741 + .pm = &espi_pm, 801 742 }, 802 743 .probe = of_fsl_espi_probe, 803 744 .remove = of_fsl_espi_remove,
+4 -4
drivers/spi/spi-gpio.c
··· 115 115 116 116 static inline void setsck(const struct spi_device *spi, int is_on) 117 117 { 118 - gpio_set_value(SPI_SCK_GPIO, is_on); 118 + gpio_set_value_cansleep(SPI_SCK_GPIO, is_on); 119 119 } 120 120 121 121 static inline void setmosi(const struct spi_device *spi, int is_on) 122 122 { 123 - gpio_set_value(SPI_MOSI_GPIO, is_on); 123 + gpio_set_value_cansleep(SPI_MOSI_GPIO, is_on); 124 124 } 125 125 126 126 static inline int getmiso(const struct spi_device *spi) 127 127 { 128 - return !!gpio_get_value(SPI_MISO_GPIO); 128 + return !!gpio_get_value_cansleep(SPI_MISO_GPIO); 129 129 } 130 130 131 131 #undef pdata ··· 229 229 230 230 if (cs != SPI_GPIO_NO_CHIPSELECT) { 231 231 /* SPI is normally active-low */ 232 - gpio_set_value(cs, (spi->mode & SPI_CS_HIGH) ? is_active : !is_active); 232 + gpio_set_value_cansleep(cs, (spi->mode & SPI_CS_HIGH) ? is_active : !is_active); 233 233 } 234 234 } 235 235
+5 -13
drivers/spi/spi-mpc512x-psc.c
··· 504 504 master->cleanup = mpc512x_psc_spi_cleanup; 505 505 master->dev.of_node = dev->of_node; 506 506 507 - tempp = ioremap(regaddr, size); 507 + tempp = devm_ioremap(dev, regaddr, size); 508 508 if (!tempp) { 509 509 dev_err(dev, "could not ioremap I/O port range\n"); 510 510 ret = -EFAULT; ··· 513 513 mps->psc = tempp; 514 514 mps->fifo = 515 515 (struct mpc512x_psc_fifo *)(tempp + sizeof(struct mpc52xx_psc)); 516 - 517 - ret = request_irq(mps->irq, mpc512x_psc_spi_isr, IRQF_SHARED, 518 - "mpc512x-psc-spi", mps); 516 + ret = devm_request_irq(dev, mps->irq, mpc512x_psc_spi_isr, IRQF_SHARED, 517 + "mpc512x-psc-spi", mps); 519 518 if (ret) 520 519 goto free_master; 521 520 init_completion(&mps->txisrdone); ··· 524 525 clk = devm_clk_get(dev, clk_name); 525 526 if (IS_ERR(clk)) { 526 527 ret = PTR_ERR(clk); 527 - goto free_irq; 528 + goto free_master; 528 529 } 529 530 ret = clk_prepare_enable(clk); 530 531 if (ret) 531 - goto free_irq; 532 + goto free_master; 532 533 mps->clk_mclk = clk; 533 534 mps->mclk_rate = clk_get_rate(clk); 534 535 ··· 544 545 545 546 free_clock: 546 547 clk_disable_unprepare(mps->clk_mclk); 547 - free_irq: 548 - free_irq(mps->irq, mps); 549 548 free_master: 550 - if (mps->psc) 551 - iounmap(mps->psc); 552 549 spi_master_put(master); 553 550 554 551 return ret; ··· 556 561 struct mpc512x_psc_spi *mps = spi_master_get_devdata(master); 557 562 558 563 clk_disable_unprepare(mps->clk_mclk); 559 - free_irq(mps->irq, mps); 560 - if (mps->psc) 561 - iounmap(mps->psc); 562 564 563 565 return 0; 564 566 }
+10 -46
drivers/spi/spi-nuc900.c
··· 57 57 const unsigned char *tx; 58 58 unsigned char *rx; 59 59 struct clk *clk; 60 - struct resource *ioarea; 61 60 struct spi_master *master; 62 61 struct spi_device *curdev; 63 62 struct device *dev; ··· 343 344 master = spi_alloc_master(&pdev->dev, sizeof(struct nuc900_spi)); 344 345 if (master == NULL) { 345 346 dev_err(&pdev->dev, "No memory for spi_master\n"); 346 - err = -ENOMEM; 347 - goto err_nomem; 347 + return -ENOMEM; 348 348 } 349 349 350 350 hw = spi_master_get_devdata(master); ··· 368 370 hw->bitbang.txrx_bufs = nuc900_spi_txrx; 369 371 370 372 hw->res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 371 - if (hw->res == NULL) { 372 - dev_err(&pdev->dev, "Cannot get IORESOURCE_MEM\n"); 373 - err = -ENOENT; 373 + hw->regs = devm_ioremap_resource(&pdev->dev, hw->res); 374 + if (IS_ERR(hw->regs)) { 375 + err = PTR_ERR(hw->regs); 374 376 goto err_pdata; 375 - } 376 - 377 - hw->ioarea = request_mem_region(hw->res->start, 378 - resource_size(hw->res), pdev->name); 379 - 380 - if (hw->ioarea == NULL) { 381 - dev_err(&pdev->dev, "Cannot reserve region\n"); 382 - err = -ENXIO; 383 - goto err_pdata; 384 - } 385 - 386 - hw->regs = ioremap(hw->res->start, resource_size(hw->res)); 387 - if (hw->regs == NULL) { 388 - dev_err(&pdev->dev, "Cannot map IO\n"); 389 - err = -ENXIO; 390 - goto err_iomap; 391 377 } 392 378 393 379 hw->irq = platform_get_irq(pdev, 0); 394 380 if (hw->irq < 0) { 395 381 dev_err(&pdev->dev, "No IRQ specified\n"); 396 382 err = -ENOENT; 397 - goto err_irq; 383 + goto err_pdata; 398 384 } 399 385 400 - err = request_irq(hw->irq, nuc900_spi_irq, 0, pdev->name, hw); 386 + err = devm_request_irq(&pdev->dev, hw->irq, nuc900_spi_irq, 0, 387 + pdev->name, hw); 401 388 if (err) { 402 389 dev_err(&pdev->dev, "Cannot claim IRQ\n"); 403 - goto err_irq; 390 + goto err_pdata; 404 391 } 405 392 406 - hw->clk = clk_get(&pdev->dev, "spi"); 393 + hw->clk = devm_clk_get(&pdev->dev, "spi"); 407 394 if (IS_ERR(hw->clk)) { 408 395 dev_err(&pdev->dev, "No clock for device\n"); 409 396 err = PTR_ERR(hw->clk); 410 - goto err_clk; 397 + goto err_pdata; 411 398 } 412 399 413 400 mfp_set_groupg(&pdev->dev, NULL); ··· 408 425 409 426 err_register: 410 427 clk_disable(hw->clk); 411 - clk_put(hw->clk); 412 - err_clk: 413 - free_irq(hw->irq, hw); 414 - err_irq: 415 - iounmap(hw->regs); 416 - err_iomap: 417 - release_mem_region(hw->res->start, resource_size(hw->res)); 418 - kfree(hw->ioarea); 419 428 err_pdata: 420 429 spi_master_put(hw->master); 421 - err_nomem: 422 430 return err; 423 431 } 424 432 ··· 417 443 { 418 444 struct nuc900_spi *hw = platform_get_drvdata(dev); 419 445 420 - free_irq(hw->irq, hw); 421 - 422 446 spi_bitbang_stop(&hw->bitbang); 423 - 424 447 clk_disable(hw->clk); 425 - clk_put(hw->clk); 426 - 427 - iounmap(hw->regs); 428 - 429 - release_mem_region(hw->res->start, resource_size(hw->res)); 430 - kfree(hw->ioarea); 431 - 432 448 spi_master_put(hw->master); 433 449 return 0; 434 450 }
+11 -51
drivers/spi/spi-oc-tiny.c
··· 153 153 } 154 154 155 155 wait_for_completion(&hw->done); 156 - } else if (txp && rxp) { 157 - /* we need to tighten the transfer loop */ 158 - writeb(*txp++, hw->base + TINY_SPI_TXDATA); 159 - if (t->len > 1) { 160 - writeb(*txp++, hw->base + TINY_SPI_TXDATA); 161 - for (i = 2; i < t->len; i++) { 162 - u8 rx, tx = *txp++; 163 - tiny_spi_wait_txr(hw); 164 - rx = readb(hw->base + TINY_SPI_TXDATA); 165 - writeb(tx, hw->base + TINY_SPI_TXDATA); 166 - *rxp++ = rx; 167 - } 168 - tiny_spi_wait_txr(hw); 169 - *rxp++ = readb(hw->base + TINY_SPI_TXDATA); 170 - } 171 - tiny_spi_wait_txe(hw); 172 - *rxp++ = readb(hw->base + TINY_SPI_RXDATA); 173 - } else if (rxp) { 174 - writeb(0, hw->base + TINY_SPI_TXDATA); 175 - if (t->len > 1) { 176 - writeb(0, 177 - hw->base + TINY_SPI_TXDATA); 178 - for (i = 2; i < t->len; i++) { 179 - u8 rx; 180 - tiny_spi_wait_txr(hw); 181 - rx = readb(hw->base + TINY_SPI_TXDATA); 182 - writeb(0, hw->base + TINY_SPI_TXDATA); 183 - *rxp++ = rx; 184 - } 185 - tiny_spi_wait_txr(hw); 186 - *rxp++ = readb(hw->base + TINY_SPI_TXDATA); 187 - } 188 - tiny_spi_wait_txe(hw); 189 - *rxp++ = readb(hw->base + TINY_SPI_RXDATA); 190 - } else if (txp) { 191 - writeb(*txp++, hw->base + TINY_SPI_TXDATA); 192 - if (t->len > 1) { 193 - writeb(*txp++, hw->base + TINY_SPI_TXDATA); 194 - for (i = 2; i < t->len; i++) { 195 - u8 tx = *txp++; 196 - tiny_spi_wait_txr(hw); 197 - writeb(tx, hw->base + TINY_SPI_TXDATA); 198 - } 199 - } 200 - tiny_spi_wait_txe(hw); 201 156 } else { 202 - writeb(0, hw->base + TINY_SPI_TXDATA); 203 - if (t->len > 1) { 204 - writeb(0, hw->base + TINY_SPI_TXDATA); 205 - for (i = 2; i < t->len; i++) { 157 + /* we need to tighten the transfer loop */ 158 + writeb(txp ? *txp++ : 0, hw->base + TINY_SPI_TXDATA); 159 + for (i = 1; i < t->len; i++) { 160 + writeb(txp ? *txp++ : 0, hw->base + TINY_SPI_TXDATA); 161 + 162 + if (rxp || (i != t->len - 1)) 206 163 tiny_spi_wait_txr(hw); 207 - writeb(0, hw->base + TINY_SPI_TXDATA); 208 - } 164 + if (rxp) 165 + *rxp++ = readb(hw->base + TINY_SPI_TXDATA); 209 166 } 210 167 tiny_spi_wait_txe(hw); 168 + if (rxp) 169 + *rxp++ = readb(hw->base + TINY_SPI_RXDATA); 211 170 } 171 + 212 172 return t->len; 213 173 } 214 174
-20
drivers/spi/spi-omap-100k.c
··· 470 470 return status; 471 471 } 472 472 473 - static int omap1_spi100k_remove(struct platform_device *pdev) 474 - { 475 - struct spi_master *master; 476 - struct omap1_spi100k *spi100k; 477 - struct resource *r; 478 - int status = 0; 479 - 480 - master = platform_get_drvdata(pdev); 481 - spi100k = spi_master_get_devdata(master); 482 - 483 - if (status != 0) 484 - return status; 485 - 486 - r = platform_get_resource(pdev, IORESOURCE_MEM, 0); 487 - 488 - return 0; 489 - } 490 - 491 473 static struct platform_driver omap1_spi100k_driver = { 492 474 .driver = { 493 475 .name = "omap1_spi100k", 494 476 .owner = THIS_MODULE, 495 477 }, 496 478 .probe = omap1_spi100k_probe, 497 - .remove = omap1_spi100k_remove, 498 479 }; 499 480 500 481 module_platform_driver(omap1_spi100k_driver); ··· 483 502 MODULE_DESCRIPTION("OMAP7xx SPI 100k controller driver"); 484 503 MODULE_AUTHOR("Fabrice Crohas <fcrohas@gmail.com>"); 485 504 MODULE_LICENSE("GPL"); 486 -
+19 -19
drivers/spi/spi-omap2-mcspi.c
··· 157 157 { 158 158 struct omap2_mcspi *mcspi = spi_master_get_devdata(master); 159 159 160 - __raw_writel(val, mcspi->base + idx); 160 + writel_relaxed(val, mcspi->base + idx); 161 161 } 162 162 163 163 static inline u32 mcspi_read_reg(struct spi_master *master, int idx) 164 164 { 165 165 struct omap2_mcspi *mcspi = spi_master_get_devdata(master); 166 166 167 - return __raw_readl(mcspi->base + idx); 167 + return readl_relaxed(mcspi->base + idx); 168 168 } 169 169 170 170 static inline void mcspi_write_cs_reg(const struct spi_device *spi, ··· 172 172 { 173 173 struct omap2_mcspi_cs *cs = spi->controller_state; 174 174 175 - __raw_writel(val, cs->base + idx); 175 + writel_relaxed(val, cs->base + idx); 176 176 } 177 177 178 178 static inline u32 mcspi_read_cs_reg(const struct spi_device *spi, int idx) 179 179 { 180 180 struct omap2_mcspi_cs *cs = spi->controller_state; 181 181 182 - return __raw_readl(cs->base + idx); 182 + return readl_relaxed(cs->base + idx); 183 183 } 184 184 185 185 static inline u32 mcspi_cached_chconf0(const struct spi_device *spi) ··· 338 338 mcspi_write_reg(spi_cntrl, OMAP2_MCSPI_WAKEUPENABLE, ctx->wakeupenable); 339 339 340 340 list_for_each_entry(cs, &ctx->cs, node) 341 - __raw_writel(cs->chconf0, cs->base + OMAP2_MCSPI_CHCONF0); 341 + writel_relaxed(cs->chconf0, cs->base + OMAP2_MCSPI_CHCONF0); 342 342 } 343 343 344 344 static int mcspi_wait_for_reg_bit(void __iomem *reg, unsigned long bit) ··· 346 346 unsigned long timeout; 347 347 348 348 timeout = jiffies + msecs_to_jiffies(1000); 349 - while (!(__raw_readl(reg) & bit)) { 349 + while (!(readl_relaxed(reg) & bit)) { 350 350 if (time_after(jiffies, timeout)) { 351 - if (!(__raw_readl(reg) & bit)) 351 + if (!(readl_relaxed(reg) & bit)) 352 352 return -ETIMEDOUT; 353 353 else 354 354 return 0; ··· 675 675 } 676 676 dev_vdbg(&spi->dev, "write-%d %02x\n", 677 677 word_len, *tx); 678 - __raw_writel(*tx++, tx_reg); 678 + writel_relaxed(*tx++, tx_reg); 679 679 } 680 680 if (rx != NULL) { 681 681 if (mcspi_wait_for_reg_bit(chstat_reg, ··· 687 687 if (c == 1 && tx == NULL && 688 688 (l & OMAP2_MCSPI_CHCONF_TURBO)) { 689 689 omap2_mcspi_set_enable(spi, 0); 690 - *rx++ = __raw_readl(rx_reg); 690 + *rx++ = readl_relaxed(rx_reg); 691 691 dev_vdbg(&spi->dev, "read-%d %02x\n", 692 692 word_len, *(rx - 1)); 693 693 if (mcspi_wait_for_reg_bit(chstat_reg, ··· 701 701 omap2_mcspi_set_enable(spi, 0); 702 702 } 703 703 704 - *rx++ = __raw_readl(rx_reg); 704 + *rx++ = readl_relaxed(rx_reg); 705 705 dev_vdbg(&spi->dev, "read-%d %02x\n", 706 706 word_len, *(rx - 1)); 707 707 } ··· 722 722 } 723 723 dev_vdbg(&spi->dev, "write-%d %04x\n", 724 724 word_len, *tx); 725 - __raw_writel(*tx++, tx_reg); 725 + writel_relaxed(*tx++, tx_reg); 726 726 } 727 727 if (rx != NULL) { 728 728 if (mcspi_wait_for_reg_bit(chstat_reg, ··· 734 734 if (c == 2 && tx == NULL && 735 735 (l & OMAP2_MCSPI_CHCONF_TURBO)) { 736 736 omap2_mcspi_set_enable(spi, 0); 737 - *rx++ = __raw_readl(rx_reg); 737 + *rx++ = readl_relaxed(rx_reg); 738 738 dev_vdbg(&spi->dev, "read-%d %04x\n", 739 739 word_len, *(rx - 1)); 740 740 if (mcspi_wait_for_reg_bit(chstat_reg, ··· 748 748 omap2_mcspi_set_enable(spi, 0); 749 749 } 750 750 751 - *rx++ = __raw_readl(rx_reg); 751 + *rx++ = readl_relaxed(rx_reg); 752 752 dev_vdbg(&spi->dev, "read-%d %04x\n", 753 753 word_len, *(rx - 1)); 754 754 } ··· 769 769 } 770 770 dev_vdbg(&spi->dev, "write-%d %08x\n", 771 771 word_len, *tx); 772 - __raw_writel(*tx++, tx_reg); 772 + writel_relaxed(*tx++, tx_reg); 773 773 } 774 774 if (rx != NULL) { 775 775 if (mcspi_wait_for_reg_bit(chstat_reg, ··· 781 781 if (c == 4 && tx == NULL && 782 782 (l & OMAP2_MCSPI_CHCONF_TURBO)) { 783 783 omap2_mcspi_set_enable(spi, 0); 784 - *rx++ = __raw_readl(rx_reg); 784 + *rx++ = readl_relaxed(rx_reg); 785 785 dev_vdbg(&spi->dev, "read-%d %08x\n", 786 786 word_len, *(rx - 1)); 787 787 if (mcspi_wait_for_reg_bit(chstat_reg, ··· 795 795 omap2_mcspi_set_enable(spi, 0); 796 796 } 797 797 798 - *rx++ = __raw_readl(rx_reg); 798 + *rx++ = readl_relaxed(rx_reg); 799 799 dev_vdbg(&spi->dev, "read-%d %08x\n", 800 800 word_len, *(rx - 1)); 801 801 } ··· 1107 1107 1108 1108 /* RX_ONLY mode needs dummy data in TX reg */ 1109 1109 if (t->tx_buf == NULL) 1110 - __raw_writel(0, cs->base 1110 + writel_relaxed(0, cs->base 1111 1111 + OMAP2_MCSPI_TX0); 1112 1112 1113 1113 if ((mcspi_dma->dma_rx && mcspi_dma->dma_tx) && ··· 1470 1470 * change in account. 1471 1471 */ 1472 1472 cs->chconf0 |= OMAP2_MCSPI_CHCONF_FORCE; 1473 - __raw_writel(cs->chconf0, cs->base + OMAP2_MCSPI_CHCONF0); 1473 + writel_relaxed(cs->chconf0, cs->base + OMAP2_MCSPI_CHCONF0); 1474 1474 cs->chconf0 &= ~OMAP2_MCSPI_CHCONF_FORCE; 1475 - __raw_writel(cs->chconf0, cs->base + OMAP2_MCSPI_CHCONF0); 1475 + writel_relaxed(cs->chconf0, cs->base + OMAP2_MCSPI_CHCONF0); 1476 1476 } 1477 1477 } 1478 1478 pm_runtime_mark_last_busy(mcspi->dev);
+1 -3
drivers/spi/spi-orion.c
··· 434 434 spi = spi_master_get_devdata(master); 435 435 spi->master = master; 436 436 437 - spi->clk = clk_get(&pdev->dev, NULL); 437 + spi->clk = devm_clk_get(&pdev->dev, NULL); 438 438 if (IS_ERR(spi->clk)) { 439 439 status = PTR_ERR(spi->clk); 440 440 goto out; ··· 465 465 466 466 out_rel_clk: 467 467 clk_disable_unprepare(spi->clk); 468 - clk_put(spi->clk); 469 468 out: 470 469 spi_master_put(master); 471 470 return status; ··· 480 481 spi = spi_master_get_devdata(master); 481 482 482 483 clk_disable_unprepare(spi->clk); 483 - clk_put(spi->clk); 484 484 485 485 return 0; 486 486 }
+1 -1
drivers/spi/spi-pxa2xx-pci.c
··· 62 62 platform_device_unregister(pdev); 63 63 } 64 64 65 - static DEFINE_PCI_DEVICE_TABLE(ce4100_spi_devices) = { 65 + static const struct pci_device_id ce4100_spi_devices[] = { 66 66 { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x2e6a) }, 67 67 { }, 68 68 };
+1 -1
drivers/spi/spi-sh-hspi.c
··· 197 197 198 198 hspi_write(hspi, SPTBR, tx); 199 199 200 - /* wait recive */ 200 + /* wait receive */ 201 201 ret = hspi_status_check_timeout(hspi, 0x4, 0x4); 202 202 if (ret < 0) 203 203 break;
+33 -29
drivers/spi/spi-sh-msiof.c
··· 169 169 170 170 static void sh_msiof_spi_set_pin_regs(struct sh_msiof_spi_priv *p, 171 171 u32 cpol, u32 cpha, 172 - u32 tx_hi_z, u32 lsb_first) 172 + u32 tx_hi_z, u32 lsb_first, u32 cs_high) 173 173 { 174 174 u32 tmp; 175 175 int edge; ··· 182 182 * 1 1 11 11 1 1 183 183 */ 184 184 sh_msiof_write(p, FCTR, 0); 185 - sh_msiof_write(p, TMDR1, 0xe2000005 | (lsb_first << 24)); 186 - sh_msiof_write(p, RMDR1, 0x22000005 | (lsb_first << 24)); 185 + 186 + tmp = 0; 187 + tmp |= !cs_high << 25; 188 + tmp |= lsb_first << 24; 189 + sh_msiof_write(p, TMDR1, 0xe0000005 | tmp); 190 + sh_msiof_write(p, RMDR1, 0x20000005 | tmp); 187 191 188 192 tmp = 0xa0000000; 189 193 tmp |= cpol << 30; /* TSCKIZ */ ··· 421 417 sh_msiof_spi_set_pin_regs(p, !!(spi->mode & SPI_CPOL), 422 418 !!(spi->mode & SPI_CPHA), 423 419 !!(spi->mode & SPI_3WIRE), 424 - !!(spi->mode & SPI_LSB_FIRST)); 420 + !!(spi->mode & SPI_LSB_FIRST), 421 + !!(spi->mode & SPI_CS_HIGH)); 425 422 } 426 423 427 424 /* use spi->controller data for CS (same strategy as spi_gpio) */ 428 - gpio_set_value((unsigned)spi->controller_data, value); 425 + gpio_set_value((uintptr_t)spi->controller_data, value); 429 426 430 427 if (is_on == BITBANG_CS_INACTIVE) { 431 428 if (test_and_clear_bit(0, &p->flags)) { ··· 640 635 master = spi_alloc_master(&pdev->dev, sizeof(struct sh_msiof_spi_priv)); 641 636 if (master == NULL) { 642 637 dev_err(&pdev->dev, "failed to allocate spi master\n"); 643 - ret = -ENOMEM; 644 - goto err0; 638 + return -ENOMEM; 645 639 } 646 640 647 641 p = spi_master_get_devdata(master); ··· 659 655 660 656 init_completion(&p->done); 661 657 662 - p->clk = clk_get(&pdev->dev, NULL); 658 + p->clk = devm_clk_get(&pdev->dev, NULL); 663 659 if (IS_ERR(p->clk)) { 664 660 dev_err(&pdev->dev, "cannot get clock\n"); 665 661 ret = PTR_ERR(p->clk); 666 662 goto err1; 667 663 } 668 664 669 - r = platform_get_resource(pdev, IORESOURCE_MEM, 0); 670 665 i = platform_get_irq(pdev, 0); 671 - if (!r || i < 0) { 672 - dev_err(&pdev->dev, "cannot get platform resources\n"); 666 + if (i < 0) { 667 + dev_err(&pdev->dev, "cannot get platform IRQ\n"); 673 668 ret = -ENOENT; 674 - goto err2; 675 - } 676 - p->mapbase = ioremap_nocache(r->start, resource_size(r)); 677 - if (!p->mapbase) { 678 - dev_err(&pdev->dev, "unable to ioremap\n"); 679 - ret = -ENXIO; 680 - goto err2; 669 + goto err1; 681 670 } 682 671 683 - ret = request_irq(i, sh_msiof_spi_irq, 0, 684 - dev_name(&pdev->dev), p); 672 + r = platform_get_resource(pdev, IORESOURCE_MEM, 0); 673 + p->mapbase = devm_ioremap_resource(&pdev->dev, r); 674 + if (IS_ERR(p->mapbase)) { 675 + ret = PTR_ERR(p->mapbase); 676 + goto err1; 677 + } 678 + 679 + ret = devm_request_irq(&pdev->dev, i, sh_msiof_spi_irq, 0, 680 + dev_name(&pdev->dev), p); 685 681 if (ret) { 686 682 dev_err(&pdev->dev, "unable to request irq\n"); 687 - goto err3; 683 + goto err1; 684 + } 685 + 686 + ret = clk_prepare(p->clk); 687 + if (ret < 0) { 688 + dev_err(&pdev->dev, "unable to prepare clock\n"); 689 + goto err1; 688 690 } 689 691 690 692 p->pdev = pdev; ··· 729 719 return 0; 730 720 731 721 pm_runtime_disable(&pdev->dev); 732 - err3: 733 - iounmap(p->mapbase); 734 - err2: 735 - clk_put(p->clk); 722 + clk_unprepare(p->clk); 736 723 err1: 737 724 spi_master_put(master); 738 - err0: 739 725 return ret; 740 726 } 741 727 ··· 743 737 ret = spi_bitbang_stop(&p->bitbang); 744 738 if (!ret) { 745 739 pm_runtime_disable(&pdev->dev); 746 - free_irq(platform_get_irq(pdev, 0), p); 747 - iounmap(p->mapbase); 748 - clk_put(p->clk); 740 + clk_unprepare(p->clk); 749 741 spi_master_put(p->bitbang.master); 750 742 } 751 743 return ret;
+1 -1
drivers/spi/spi-topcliff-pch.c
··· 217 217 struct pch_spi_board_data *board_dat; 218 218 }; 219 219 220 - static DEFINE_PCI_DEVICE_TABLE(pch_spi_pcidev_id) = { 220 + static const struct pci_device_id pch_spi_pcidev_id[] = { 221 221 { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_GE_SPI), 1, }, 222 222 { PCI_VDEVICE(ROHM, PCI_DEVICE_ID_ML7213_SPI), 2, }, 223 223 { PCI_VDEVICE(ROHM, PCI_DEVICE_ID_ML7223_SPI), 1, },
+3 -5
include/linux/platform_data/spi-nuc900.h
··· 1 1 /* 2 - * arch/arm/mach-w90x900/include/mach/nuc900_spi.h 3 - * 4 2 * Copyright (c) 2009 Nuvoton technology corporation. 5 3 * 6 4 * Wan ZongShun <mcuos.com@gmail.com> ··· 9 11 * 10 12 */ 11 13 12 - #ifndef __ASM_ARCH_SPI_H 13 - #define __ASM_ARCH_SPI_H 14 + #ifndef __SPI_NUC900_H 15 + #define __SPI_NUC900_H 14 16 15 17 extern void mfp_set_groupg(struct device *dev, const char *subname); 16 18 ··· 30 32 unsigned char bits_per_word; 31 33 }; 32 34 33 - #endif /* __ASM_ARCH_SPI_H */ 35 + #endif /* __SPI_NUC900_H */