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

Merge remote-tracking branch 'spi/for-5.7' into spi-linus

+65 -49
+16 -16
drivers/spi/spi-axi-spi-engine.c
··· 489 489 490 490 spin_lock_init(&spi_engine->lock); 491 491 492 - spi_engine->base = devm_platform_ioremap_resource(pdev, 0); 493 - if (IS_ERR(spi_engine->base)) { 494 - ret = PTR_ERR(spi_engine->base); 495 - goto err_put_master; 496 - } 497 - 498 - version = readl(spi_engine->base + SPI_ENGINE_REG_VERSION); 499 - if (SPI_ENGINE_VERSION_MAJOR(version) != 1) { 500 - dev_err(&pdev->dev, "Unsupported peripheral version %u.%u.%c\n", 501 - SPI_ENGINE_VERSION_MAJOR(version), 502 - SPI_ENGINE_VERSION_MINOR(version), 503 - SPI_ENGINE_VERSION_PATCH(version)); 504 - ret = -ENODEV; 505 - goto err_put_master; 506 - } 507 - 508 492 spi_engine->clk = devm_clk_get(&pdev->dev, "s_axi_aclk"); 509 493 if (IS_ERR(spi_engine->clk)) { 510 494 ret = PTR_ERR(spi_engine->clk); ··· 508 524 ret = clk_prepare_enable(spi_engine->ref_clk); 509 525 if (ret) 510 526 goto err_clk_disable; 527 + 528 + spi_engine->base = devm_platform_ioremap_resource(pdev, 0); 529 + if (IS_ERR(spi_engine->base)) { 530 + ret = PTR_ERR(spi_engine->base); 531 + goto err_ref_clk_disable; 532 + } 533 + 534 + version = readl(spi_engine->base + SPI_ENGINE_REG_VERSION); 535 + if (SPI_ENGINE_VERSION_MAJOR(version) != 1) { 536 + dev_err(&pdev->dev, "Unsupported peripheral version %u.%u.%c\n", 537 + SPI_ENGINE_VERSION_MAJOR(version), 538 + SPI_ENGINE_VERSION_MINOR(version), 539 + SPI_ENGINE_VERSION_PATCH(version)); 540 + ret = -ENODEV; 541 + goto err_ref_clk_disable; 542 + } 511 543 512 544 writel_relaxed(0x00, spi_engine->base + SPI_ENGINE_REG_RESET); 513 545 writel_relaxed(0xff, spi_engine->base + SPI_ENGINE_REG_INT_PENDING);
+23 -20
drivers/spi/spi-bcm-qspi.c
··· 612 612 if (qt->trans->cs_change && 613 613 (flags & TRANS_STATUS_BREAK_CS_CHANGE)) 614 614 ret |= TRANS_STATUS_BREAK_CS_CHANGE; 615 - if (ret) 616 - goto done; 617 615 618 - dev_dbg(&qspi->pdev->dev, "advance msg exit\n"); 619 616 if (bcm_qspi_mspi_transfer_is_last(qspi, qt)) 620 - ret = TRANS_STATUS_BREAK_EOM; 617 + ret |= TRANS_STATUS_BREAK_EOM; 621 618 else 622 - ret = TRANS_STATUS_BREAK_NO_BYTES; 619 + ret |= TRANS_STATUS_BREAK_NO_BYTES; 623 620 624 621 qt->trans = NULL; 625 622 } 626 623 627 - done: 628 624 dev_dbg(&qspi->pdev->dev, "trans %p len %d byte %d ret %x\n", 629 625 qt->trans, qt->trans ? qt->trans->len : 0, qt->byte, ret); 630 626 return ret; ··· 666 670 if (buf) 667 671 buf[tp.byte] = read_rxram_slot_u8(qspi, slot); 668 672 dev_dbg(&qspi->pdev->dev, "RD %02x\n", 669 - buf ? buf[tp.byte] : 0xff); 673 + buf ? buf[tp.byte] : 0x0); 670 674 } else { 671 675 u16 *buf = tp.trans->rx_buf; 672 676 ··· 674 678 buf[tp.byte / 2] = read_rxram_slot_u16(qspi, 675 679 slot); 676 680 dev_dbg(&qspi->pdev->dev, "RD %04x\n", 677 - buf ? buf[tp.byte] : 0xffff); 681 + buf ? buf[tp.byte / 2] : 0x0); 678 682 } 679 683 680 684 update_qspi_trans_byte_count(qspi, &tp, ··· 729 733 while (!tstatus && slot < MSPI_NUM_CDRAM) { 730 734 if (tp.trans->bits_per_word <= 8) { 731 735 const u8 *buf = tp.trans->tx_buf; 732 - u8 val = buf ? buf[tp.byte] : 0xff; 736 + u8 val = buf ? buf[tp.byte] : 0x00; 733 737 734 738 write_txram_slot_u8(qspi, slot, val); 735 739 dev_dbg(&qspi->pdev->dev, "WR %02x\n", val); 736 740 } else { 737 741 const u16 *buf = tp.trans->tx_buf; 738 - u16 val = buf ? buf[tp.byte / 2] : 0xffff; 742 + u16 val = buf ? buf[tp.byte / 2] : 0x0000; 739 743 740 744 write_txram_slot_u16(qspi, slot, val); 741 745 dev_dbg(&qspi->pdev->dev, "WR %04x\n", val); ··· 767 771 bcm_qspi_write(qspi, MSPI, MSPI_NEWQP, 0); 768 772 bcm_qspi_write(qspi, MSPI, MSPI_ENDQP, slot - 1); 769 773 770 - if (tstatus & TRANS_STATUS_BREAK_DESELECT) { 774 + /* 775 + * case 1) EOM =1, cs_change =0: SSb inactive 776 + * case 2) EOM =1, cs_change =1: SSb stay active 777 + * case 3) EOM =0, cs_change =0: SSb stay active 778 + * case 4) EOM =0, cs_change =1: SSb inactive 779 + */ 780 + if (((tstatus & TRANS_STATUS_BREAK_DESELECT) 781 + == TRANS_STATUS_BREAK_CS_CHANGE) || 782 + ((tstatus & TRANS_STATUS_BREAK_DESELECT) 783 + == TRANS_STATUS_BREAK_EOM)) { 771 784 mspi_cdram = read_cdram_slot(qspi, slot - 1) & 772 785 ~MSPI_CDRAM_CONT_BIT; 773 786 write_cdram_slot(qspi, slot - 1, mspi_cdram); ··· 1227 1222 } 1228 1223 1229 1224 qspi = spi_master_get_devdata(master); 1225 + 1226 + qspi->clk = devm_clk_get_optional(&pdev->dev, NULL); 1227 + if (IS_ERR(qspi->clk)) 1228 + return PTR_ERR(qspi->clk); 1229 + 1230 1230 qspi->pdev = pdev; 1231 1231 qspi->trans_pos.trans = NULL; 1232 1232 qspi->trans_pos.byte = 0; ··· 1345 1335 qspi->soc_intc = NULL; 1346 1336 } 1347 1337 1348 - qspi->clk = devm_clk_get(&pdev->dev, NULL); 1349 - if (IS_ERR(qspi->clk)) { 1350 - dev_warn(dev, "unable to get clock\n"); 1351 - ret = PTR_ERR(qspi->clk); 1352 - goto qspi_probe_err; 1353 - } 1354 - 1355 1338 ret = clk_prepare_enable(qspi->clk); 1356 1339 if (ret) { 1357 1340 dev_err(dev, "failed to prepare clock\n"); ··· 1409 1406 bcm_qspi_read(qspi, BSPI, BSPI_STRAP_OVERRIDE_CTRL); 1410 1407 1411 1408 spi_master_suspend(qspi->master); 1412 - clk_disable(qspi->clk); 1409 + clk_disable_unprepare(qspi->clk); 1413 1410 bcm_qspi_hw_uninit(qspi); 1414 1411 1415 1412 return 0; ··· 1427 1424 qspi->soc_intc->bcm_qspi_int_set(qspi->soc_intc, MSPI_DONE, 1428 1425 true); 1429 1426 1430 - ret = clk_enable(qspi->clk); 1427 + ret = clk_prepare_enable(qspi->clk); 1431 1428 if (!ret) 1432 1429 spi_master_resume(qspi->master); 1433 1430
+3 -1
drivers/spi/spi-bcm2835.c
··· 1347 1347 goto out_dma_release; 1348 1348 } 1349 1349 1350 - err = devm_spi_register_controller(&pdev->dev, ctlr); 1350 + err = spi_register_controller(ctlr); 1351 1351 if (err) { 1352 1352 dev_err(&pdev->dev, "could not register SPI controller: %d\n", 1353 1353 err); ··· 1373 1373 struct bcm2835_spi *bs = spi_controller_get_devdata(ctlr); 1374 1374 1375 1375 bcm2835_debugfs_remove(bs); 1376 + 1377 + spi_unregister_controller(ctlr); 1376 1378 1377 1379 /* Clear FIFOs, and disable the HW block */ 1378 1380 bcm2835_wr(bs, BCM2835_SPI_CS,
+3 -1
drivers/spi/spi-bcm2835aux.c
··· 569 569 goto out_clk_disable; 570 570 } 571 571 572 - err = devm_spi_register_master(&pdev->dev, master); 572 + err = spi_register_master(master); 573 573 if (err) { 574 574 dev_err(&pdev->dev, "could not register SPI master: %d\n", err); 575 575 goto out_clk_disable; ··· 592 592 struct bcm2835aux_spi *bs = spi_master_get_devdata(master); 593 593 594 594 bcm2835aux_debugfs_remove(bs); 595 + 596 + spi_unregister_master(master); 595 597 596 598 bcm2835aux_spi_reset_hw(bs); 597 599
+3 -1
drivers/spi/spi-dw.c
··· 526 526 } 527 527 } 528 528 529 - ret = devm_spi_register_controller(dev, master); 529 + ret = spi_register_controller(master); 530 530 if (ret) { 531 531 dev_err(&master->dev, "problem registering spi master\n"); 532 532 goto err_dma_exit; ··· 549 549 void dw_spi_remove_host(struct dw_spi *dws) 550 550 { 551 551 dw_spi_debugfs_remove(dws); 552 + 553 + spi_unregister_controller(dws->master); 552 554 553 555 if (dws->dma_ops && dws->dma_ops->dma_exit) 554 556 dws->dma_ops->dma_exit(dws);
+6 -2
drivers/spi/spi-ep93xx.c
··· 31 31 #include <linux/platform_data/spi-ep93xx.h> 32 32 33 33 #define SSPCR0 0x0000 34 - #define SSPCR0_MODE_SHIFT 6 34 + #define SSPCR0_SPO BIT(6) 35 + #define SSPCR0_SPH BIT(7) 35 36 #define SSPCR0_SCR_SHIFT 8 36 37 37 38 #define SSPCR1 0x0004 ··· 160 159 return err; 161 160 162 161 cr0 = div_scr << SSPCR0_SCR_SHIFT; 163 - cr0 |= (spi->mode & (SPI_CPHA | SPI_CPOL)) << SSPCR0_MODE_SHIFT; 162 + if (spi->mode & SPI_CPOL) 163 + cr0 |= SSPCR0_SPO; 164 + if (spi->mode & SPI_CPHA) 165 + cr0 |= SSPCR0_SPH; 164 166 cr0 |= dss; 165 167 166 168 dev_dbg(&master->dev, "setup: mode %d, cpsr %d, scr %d, dss %d\n",
+4 -4
drivers/spi/spi-mux.c
··· 51 51 struct spi_mux_priv *priv = spi_controller_get_devdata(spi->controller); 52 52 int ret; 53 53 54 + ret = mux_control_select(priv->mux, spi->chip_select); 55 + if (ret) 56 + return ret; 57 + 54 58 if (priv->current_cs == spi->chip_select) 55 59 return 0; 56 60 ··· 65 61 priv->spi->max_speed_hz = spi->max_speed_hz; 66 62 priv->spi->mode = spi->mode; 67 63 priv->spi->bits_per_word = spi->bits_per_word; 68 - 69 - ret = mux_control_select(priv->mux, spi->chip_select); 70 - if (ret) 71 - return ret; 72 64 73 65 priv->current_cs = spi->chip_select; 74 66
+3 -2
drivers/spi/spi-pxa2xx.c
··· 1884 1884 1885 1885 /* Register with the SPI framework */ 1886 1886 platform_set_drvdata(pdev, drv_data); 1887 - status = devm_spi_register_controller(&pdev->dev, controller); 1887 + status = spi_register_controller(controller); 1888 1888 if (status != 0) { 1889 1889 dev_err(&pdev->dev, "problem registering spi controller\n"); 1890 1890 goto out_error_pm_runtime_enabled; ··· 1893 1893 return status; 1894 1894 1895 1895 out_error_pm_runtime_enabled: 1896 - pm_runtime_put_noidle(&pdev->dev); 1897 1896 pm_runtime_disable(&pdev->dev); 1898 1897 1899 1898 out_error_clock_enabled: ··· 1914 1915 struct ssp_device *ssp = drv_data->ssp; 1915 1916 1916 1917 pm_runtime_get_sync(&pdev->dev); 1918 + 1919 + spi_unregister_controller(drv_data->controller); 1917 1920 1918 1921 /* Disable the SSP at the peripheral and SOC level */ 1919 1922 pxa2xx_spi_write(drv_data, SSCR0, 0);
+1 -1
drivers/spi/spi-sc18is602.c
··· 345 345 346 346 module_i2c_driver(sc18is602_driver); 347 347 348 - MODULE_DESCRIPTION("SC18IC602/603 SPI Master Driver"); 348 + MODULE_DESCRIPTION("SC18IS602/603 SPI Master Driver"); 349 349 MODULE_AUTHOR("Guenter Roeck"); 350 350 MODULE_LICENSE("GPL");
+3 -1
drivers/spi/spi.c
··· 2111 2111 } 2112 2112 2113 2113 lookup->max_speed_hz = sb->connection_speed; 2114 + lookup->bits_per_word = sb->data_bit_length; 2114 2115 2115 2116 if (sb->clock_phase == ACPI_SPI_SECOND_PHASE) 2116 2117 lookup->mode |= SPI_CPHA; ··· 2761 2760 struct spi_controller *found; 2762 2761 int id = ctlr->bus_num; 2763 2762 2763 + device_for_each_child(&ctlr->dev, NULL, __unregister); 2764 + 2764 2765 /* First make sure that this controller was ever added */ 2765 2766 mutex_lock(&board_lock); 2766 2767 found = idr_find(&spi_master_idr, id); ··· 2775 2772 list_del(&ctlr->list); 2776 2773 mutex_unlock(&board_lock); 2777 2774 2778 - device_for_each_child(&ctlr->dev, NULL, __unregister); 2779 2775 device_unregister(&ctlr->dev); 2780 2776 /* free bus id */ 2781 2777 mutex_lock(&board_lock);