diff options
author | Florian Fainelli <florian@openwrt.org> | 2009-03-06 01:15:00 +0000 |
---|---|---|
committer | Florian Fainelli <florian@openwrt.org> | 2009-03-06 01:15:00 +0000 |
commit | 5e8dfe53b60a5c30b56ed0caea4770ce8f241a60 (patch) | |
tree | 24c503ed08727a21993e692af18bc1c5b46f8e0f /target/linux/brcm63xx/files/arch/mips/bcm63xx/dev-spi.c | |
parent | 9422b140badeb45d52b118d6f1cc3cab16c667c0 (diff) | |
download | mtk-20170518-5e8dfe53b60a5c30b56ed0caea4770ce8f241a60.zip mtk-20170518-5e8dfe53b60a5c30b56ed0caea4770ce8f241a60.tar.gz mtk-20170518-5e8dfe53b60a5c30b56ed0caea4770ce8f241a60.tar.bz2 |
prepare for SPI controller driver
SVN-Revision: 14755
Diffstat (limited to 'target/linux/brcm63xx/files/arch/mips/bcm63xx/dev-spi.c')
-rw-r--r-- | target/linux/brcm63xx/files/arch/mips/bcm63xx/dev-spi.c | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/target/linux/brcm63xx/files/arch/mips/bcm63xx/dev-spi.c b/target/linux/brcm63xx/files/arch/mips/bcm63xx/dev-spi.c new file mode 100644 index 0000000..4aea088 --- /dev/null +++ b/target/linux/brcm63xx/files/arch/mips/bcm63xx/dev-spi.c @@ -0,0 +1,60 @@ +/* + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file "COPYING" in the main directory of this archive + * for more details. + * + * Copyright (C) 2009 Florian Fainelli <florian@openwrt.org> + */ + +#include <linux/init.h> +#include <linux/kernel.h> +#include <linux/platform_device.h> +#include <bcm63xx_cpu.h> +#include <bcm63xx_dev_spi.h> + +static struct resource spi_resources[] = { + { + .start = -1, /* filled at runtime */ + .end = -1, /* filled at runtime */ + .flags = IORESOURCE_MEM, + }, + { + .start = -1, /* filled at runtime */ + .flags = IORESOURCE_IRQ, + }, +}; + +static struct bcm63xx_spi_pdata spi_pdata = { + .bus_num = 0, + .num_chipselect = 4, + .speed_hz = 50000000, /* Fclk */ +}; + +static struct platform_device bcm63xx_spi_device = { + .name = "bcm63xx_spi", + .id = 0, + .num_resources = ARRAY_SIZE(spi_resources), + .resource = spi_resources, + .dev.pdata = &spi_pdata; +}; + +int __init bcm63xx_spi_register(void) +{ + spi_resources[0].start = bcm63xx_regset_address(RSET_SPI); + spi_resources[0].end = spi_resources[0].start; + spi_resources[0].end += RSET_SPI_SIZE - 1; + spi_resources[1].start = bcm63xx_get_irq_number(IRQ_SPI); + + /* Fill in platform data */ + if (CPU_IS_BCM6338() || CPU_IS_BCM6348()) { + 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 (CPU_IS_BCM6358()) { + spi_pdata.msg_fifo_size = SPI_BCM_6358_SPI_MSG_DATA_SIZE; + spi_pdata.rx_fifo_size = SPI_BCM_6358_SPI_RX_DATA_SIZE; + } + + return platform_device_register(&bcm63xx_spi_device); +} |