Brian, I modified board-da850-evm.c with what you proposed and it's working very well. I didn't test the spi flash (because I do not have one on my custum hardware), but my 2 SPI CS (spidev1.1 and spidev1.2) are working.
Thanks for your time. Nicolas On Wed, Jun 16, 2010 at 11:57 AM, Brian Niebuhr <bnieb...@efjohnson.com>wrote: > > I got OMAP-L138 EVM and I'm running kernel v2.6.34 from > > khilman/linux-davinci.git and I would like to try the SPI > > patch. I successfully applied the patch to the driver, and > > now I'm trying to modify platform data in board-da850-evm.c. > > I added the following lines : > > > > [...] > > > > I do not see spidev1.1 in /dev. Any clue? > > Following is a diff of changes I made to the board configuration to add > the M25P64 SPI flash to the DA850 EVM. Note that this is NOT > recommended as a patch - I just put in some quick and dirty code to > reproduce Sudhakar's issue with the driver. See diff below: > > diff --git a/arch/arm/mach-davinci/board-da850-evm.c > b/arch/arm/mach-davinci/boa > index 2ec3095..4ecae04 100644 > --- a/arch/arm/mach-davinci/board-da850-evm.c > +++ b/arch/arm/mach-davinci/board-da850-evm.c > @@ -27,6 +27,8 @@ > #include <linux/regulator/machine.h> > #include <linux/mfd/tps6507x.h> > #include <linux/input/tps6507x-ts.h> > +#include <linux/spi/spi.h> > +#include <linux/spi/flash.h> > > #include <asm/mach-types.h> > #include <asm/mach/arch.h> > @@ -35,6 +37,7 @@ > #include <mach/da8xx.h> > #include <mach/nand.h> > #include <mach/mux.h> > +#include <mach/spi.h> > > #define DA850_EVM_PHY_MASK 0x1 > #define DA850_EVM_MDIO_FREQUENCY 2200000 /* PHY bus frequency */ > @@ -92,6 +95,59 @@ static struct platform_device > da850_evm_norflash_device = { > .resource = da850_evm_norflash_resource, > }; > > +static struct mtd_partition spi_flash_partitions[] = { > + [0] = { > + .name = "U-Boot", > + .offset = 0, > + .size = SZ_256K, > + .mask_flags = MTD_WRITEABLE, > + }, > + [1] = { > + .name = "U-Boot Environment", > + .offset = MTDPART_OFS_APPEND, > + .size = SZ_64K, > + .mask_flags = MTD_WRITEABLE, > + }, > + [2] = { > + .name = "Linux", > + .offset = MTDPART_OFS_NXTBLK, > + .size = SZ_8M - (SZ_256K + SZ_64K + SZ_64K), > + .mask_flags = 0, > + }, > +}; > + > +struct davinci_spi_config m25p64_spi_cfg = { > + .odd_parity = 0, > + .parity_enable = 0, > + .intr_level = 1, > + .io_type = SPI_IO_TYPE_DMA, > + .wdelay = 0, > + .timer_disable = 1, > + .c2t_delay = 0, > + .t2c_delay = 0, > + .t2e_delay = 0, > + .c2e_delay = 0, > +}; > + > +static struct flash_platform_data spi_flash_data = { > + .name = "m25p80", > + .parts = spi_flash_partitions, > + .nr_parts = ARRAY_SIZE(spi_flash_partitions), > + .type = "m25p64", > +}; > + > +static struct spi_board_info da850_spi_board_info[] = { > + [0] = { > + .modalias = "m25p80", > + .platform_data = &spi_flash_data, > + .controller_data = &m25p64_spi_cfg, > + .mode = SPI_MODE_0, > + .max_speed_hz = 30000000, > + .bus_num = 1, > + .chip_select = 0, > + }, > +}; > + > static struct davinci_pm_config da850_pm_pdata = { > .sleepcount = 128, > }; > @@ -629,6 +685,61 @@ static int __init da850_evm_config_emac(void) > } > device_initcall(da850_evm_config_emac); > > +static struct davinci_spi_platform_data da850_spi_pdata1 = { > + .version = SPI_VERSION_2, > +}; > + > +static struct resource da850_spi_resources1[] = { > + [0] = { > + .start = 0x01F0E000, > + .end = 0x01F0E000 + 0xfff, > + .flags = IORESOURCE_MEM, > + }, > + [1] = { > + .start = IRQ_DA8XX_SPINT1, > + .end = IRQ_DA8XX_SPINT1, > + .flags = IORESOURCE_IRQ, > + }, > + [2] = { > + .start = EDMA_CTLR_CHAN(0, 18), > + .end = EDMA_CTLR_CHAN(0, 18), > + .flags = IORESOURCE_DMA | IORESOURCE_DMA_RX_CHAN, > + }, > + [3] = { > + .start = EDMA_CTLR_CHAN(0, 19), > + .end = EDMA_CTLR_CHAN(0, 19), > + .flags = IORESOURCE_DMA | IORESOURCE_DMA_TX_CHAN, > + }, > + [4] = { > + .start = 1, > + .end = 1, > + .flags = IORESOURCE_DMA | IORESOURCE_DMA_EVENT_Q, > + }, > +}; > + > +static struct platform_device da850_spi_pdev1 = { > + .name = "spi_davinci", > + .id = 1, > + .resource = da850_spi_resources1, > + .num_resources = ARRAY_SIZE(da850_spi_resources1), > + .dev = { > + .platform_data = &da850_spi_pdata1, > + }, > +}; > + > +static void __init da850_init_spi1(unsigned char* chip_sel, > + unsigned int num_sel, struct spi_board_info *info, unsigned > num_dev) > +{ > + struct davinci_spi_platform_data *pdata = > + da850_spi_pdev1.dev.platform_data; > + > + spi_register_board_info(info, num_dev); > + > + pdata->chip_sel = chip_sel; > + pdata->num_chipselect = num_sel; > + platform_device_register(&da850_spi_pdev1); > +} > + > static __init void da850_evm_init(void) > { > int ret; > @@ -739,6 +850,9 @@ static __init void da850_evm_init(void) > pr_warning("da850_evm_init: cpuidle registration failed: > %d\n", > ret); > > + da850_init_spi1(NULL, 1, da850_spi_board_info, > + ARRAY_SIZE(da850_spi_board_info)); > + > ret = da850_register_pm(&da850_pm_device); > if (ret) > pr_warning("da850_evm_init: suspend registration failed: > %d\n", > > > diff --git a/arch/arm/mach-davinci/da850.c > b/arch/arm/mach-davinci/da850.c > index 6b8331b..311c447 100644 > --- a/arch/arm/mach-davinci/da850.c > +++ b/arch/arm/mach-davinci/da850.c > @@ -336,6 +336,13 @@ static struct clk aemif_clk = { > .flags = ALWAYS_ENABLED, > }; > > +static struct clk spi1_clk = { > + .name = "spi1", > + .parent = &pll0_sysclk2, > + .lpsc = DA8XX_LPSC1_SPI1, > + .gpsc = 1, > +}; > + > static struct clk_lookup da850_clks[] = { > CLK(NULL, "ref", &ref_clk), > CLK(NULL, "pll0", &pll0_clk), > @@ -377,6 +384,7 @@ static struct clk_lookup da850_clks[] = { > CLK("da8xx_lcdc.0", NULL, &lcdc_clk), > CLK("davinci_mmc.0", NULL, &mmcsd_clk), > CLK(NULL, "aemif", &aemif_clk), > + CLK("spi_davinci.1", NULL, &spi1_clk), > CLK(NULL, NULL, NULL), > }; > > > > In addition to the changes to those 2 files, I made the following > configuration changes (from the DA850 defconfig): > > - Added SPI support > - Added Davinci SPI driver > - Added user-space SPI support (if you want spidev to work) > - Added MTD > - Added MTD partitioning > - Added character and block access to MTD > - Added the M25P MTD driver > > > Note that for the spidev device node to appear automatically you will > need to have udev or mdev configured correctly. > > Good luck, > > Brian > >
_______________________________________________ Davinci-linux-open-source mailing list Davinci-linux-open-source@linux.davincidsp.com http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source