do not duplicate fifo_size, since RX and TX fifo sizes are the same, request_mem_regi...
authorFlorian Fainelli <florian@openwrt.org>
Wed, 11 Mar 2009 10:32:44 +0000 (10:32 +0000)
committerFlorian Fainelli <florian@openwrt.org>
Wed, 11 Mar 2009 10:32:44 +0000 (10:32 +0000)
SVN-Revision: 14848

target/linux/brcm63xx/files/arch/mips/bcm63xx/dev-spi.c
target/linux/brcm63xx/files/drivers/spi/bcm63xx_spi.c
target/linux/brcm63xx/files/include/asm-mips/mach-bcm63xx/bcm63xx_dev_spi.h

index bfbda2b17f5a287f0f924061043fac1196a25571..1ba4aded3a3339799028c797bb7a82e9a611f7b3 100644 (file)
@@ -50,15 +50,11 @@ int __init bcm63xx_spi_register(void)
        spi_resources[1].start = bcm63xx_get_irq_number(IRQ_SPI);
 
        /* Fill in platform data */
-       if (BCMCPU_IS_6338() || BCMCPU_IS_6348()) {
-               spi_pdata.msg_fifo_size = SPI_BCM_6338_SPI_MSG_DATA_SIZE;
-               spi_pdata.rx_fifo_size = SPI_BCM_6338_SPI_RX_DATA_SIZE;
-       }
+       if (BCMCPU_IS_6338() || BCMCPU_IS_6348())
+               spi_pdata.fifo_size = SPI_BCM_6338_SPI_MSG_DATA_SIZE;
 
-       if (BCMCPU_IS_6358()) {
-               spi_pdata.msg_fifo_size = SPI_BCM_6358_SPI_MSG_DATA_SIZE;
-               spi_pdata.rx_fifo_size =  SPI_BCM_6358_SPI_RX_DATA_SIZE;
-       }
+       if (BCMCPU_IS_6358())
+               spi_pdata.fifo_size = SPI_BCM_6358_SPI_MSG_DATA_SIZE;
        
        return platform_device_register(&bcm63xx_spi_device);
 }
index d12ae99ce653d0d30414a9e4261fe20a7b31045c..598196197ecc2b7805993d5b622488d61c6301bc 100644 (file)
@@ -48,8 +48,7 @@ struct bcm63xx_spi {
 
        /* Platform data */
         u32                    speed_hz;
-       unsigned                msg_fifo_size;
-       unsigned                rx_fifo_size;
+       unsigned                fifo_size;
 
        /* Data buffers */
        const unsigned char     *tx_ptr;
@@ -70,6 +69,7 @@ static void bcm63xx_spi_chipselect(struct spi_device *spi, int is_on)
                val |= SPI_CMD_NOOP;
        else if (is_on == BITBANG_CS_ACTIVE)
                val |= (1 << spi->chip_select << SPI_CMD_DEVICE_ID_SHIFT);
+               
        bcm_spi_writew(val, SPI_CMD);
 }
 
@@ -173,7 +173,7 @@ static void bcm63xx_spi_fill_tx_fifo(struct bcm63xx_spi *bs)
 
         /* Fill the Tx FIFO with as many bytes as possible */
        tail = bcm_spi_readb(SPI_MSG_TAIL);
-        while ((tail < bs->msg_fifo_size) && (bs->remaining_bytes > 0)) {
+        while ((tail < bs->fifo_size) && (bs->remaining_bytes > 0)) {
                 if (bs->tx_ptr)
                         bcm_spi_writeb(*bs->tx_ptr++, SPI_MSG_DATA);
                else
@@ -317,6 +317,12 @@ static int __init bcm63xx_spi_probe(struct platform_device *pdev)
        platform_set_drvdata(pdev, master);
         bs->pdev = pdev;
 
+       if (!request_mem_region(r->start,
+                       r->end - r->start, PFX)) {
+               ret = -ENXIO;
+               goto out_free;
+       }
+
         bs->regs = ioremap_nocache(r->start, r->end - r->start);
        if (!bs->regs) {
                printk(KERN_ERR PFX " unable to ioremap regs\n");
@@ -325,8 +331,7 @@ static int __init bcm63xx_spi_probe(struct platform_device *pdev)
        }
        bs->irq = irq;
        bs->clk = clk;
-       bs->msg_fifo_size = pdata->msg_fifo_size;
-       bs->rx_fifo_size = pdata->rx_fifo_size;
+       bs->fifo_size = pdata->fifo_size;
 
        ret = request_irq(irq, bcm63xx_spi_interrupt, 0,
                                pdev->dev.bus_id, master);
@@ -344,8 +349,8 @@ static int __init bcm63xx_spi_probe(struct platform_device *pdev)
        bcm_spi_writew(SPI_CMD_HARD_RESET, SPI_CMD);
        bcm_spi_writeb(SPI_INTR_CLEAR_ALL, SPI_INT_MASK);
        
-       dev_info(&pdev->dev, PFX " at 0x%08x (irq %d%s\n",
-                               r->start, irq, DRV_VER);
+       dev_info(&pdev->dev, PFX " at 0x%08x (irq %d, FIFOs size %d) v%s\n",
+                               r->start, irq, bs->fifo_size, DRV_VER);
 
        ret = spi_bitbang_start(&bs->bitbang);
        if (ret) {
index 879580fc9d6e28296746f878d9d99891c53808e4..cfa79bf94bbf3eba6d2458d81086357436d123b7 100644 (file)
@@ -6,8 +6,7 @@
 int __init bcm63xx_spi_register(void);
 
 struct bcm63xx_spi_pdata {
-       unsigned int    msg_fifo_size;
-       unsigned int    rx_fifo_size;
+       unsigned int    fifo_size;
        int             bus_num;
        int             num_chipselect;
        u32             speed_hz;