HI,
I am using EVM OMAPL137 board & Linux.
EVM OMAPL137 has two SPI peripheral.
SPI0 of EVM board is used for SPI0 Flash & in the kernel for OMAPL137 only SPI0 is defined
But in our application we require SPI1 also.
So in kernel files I have made some changes as given below
In board-da830-evm.c following lines are added
{
static struct spi_board_info da830_spi_board_info1[] = {
[0] = {
.modalias = "spidev",
//.platform_data = &spi_flash_data,
.mode = SPI_MODE_0,
.max_speed_hz = 50000000, // max sample rate at 3V
.bus_num = 1,
.chip_select = 0,
},
};
////////////////////////////////////////////////// the lines given below are added in da830_evm_init(void) function ////////////////////////////////////
ret = da8xx_pinmux_setup(da830_spi1_pins);
if (ret)
pr_warning("da830_evm_init: spi1 mux setup failed: %d\n",
ret);
da830_init_spi1(BIT(0), da830_spi_board_info1,
ARRAY_SIZE(da830_spi_board_info1));
}
In device-da8xx.c following lines are added
{
static struct davinci_spi_platform_data da830_spi1_pdata = {
.version = SPI_VERSION_2,
.num_chipselect = 1,
.wdelay = 0,
.odd_parity = 0,
.parity_enable = 0,
.wait_enable = 0,
.timer_disable = 0,
.clk_internal = 1,
.cs_hold = 1,
.intr_level = 0,
.poll_mode = 1,
.use_dma = 0,
.c2tdelay = 8,
.t2cdelay = 8,
};
static struct resource da830_spi1_resources[] = {
[0] = {
.start = 0x01E12000,
.end = 0x01E12000 + 0xfff,
.flags = IORESOURCE_MEM,
},
[1] = {
.start = IRQ_DA8XX_SPINT1,
.end = IRQ_DA8XX_SPINT1,
.flags = IORESOURCE_IRQ,
},
[2] = {
.start = EDMA_CTLR_CHAN(0, 14),
.end = EDMA_CTLR_CHAN(0, 14),
.flags = IORESOURCE_DMA,
},
[3] = {
.start = EDMA_CTLR_CHAN(0, 15),
.end = EDMA_CTLR_CHAN(0, 15),
.flags = IORESOURCE_DMA,
},
[4] = {
.start = 1,
.end = 1,
.flags = IORESOURCE_DMA,
},
};
static struct platform_device da830_spi1_device = {
.name = "spi_davinciHA",
.id = 1,
.resource = da830_spi1_resources,
.num_resources = ARRAY_SIZE(da830_spi1_resources),
.dev = {
.platform_data = &da830_spi1_pdata,
},
};
void __init da830_init_spi1(unsigned chipselect_mask,
struct spi_board_info *info, unsigned len)
{
spi_register_board_info(info, len);
platform_device_register(&da830_spi1_device);
}
}
& In the kernel configuration I have kept CONFIG_SPI_SPIDEV=y so that I can have user space access of the SPI1
The above given changes in the kernel compiles properly but I am not able to open the given device.
In the sys file I am able to see spidev devices as show below
root@arago:/sys# ls -R | grep spi
spi
spi_davinci.0
spi_davinciHA.1
spi_davinci
./bus/platform/drivers/spi_davinci:
spi_davinci.0
./bus/spi:
./bus/spi/devices:
spi0.0
./bus/spi/drivers:
spidev
./bus/spi/drivers/m25p80:
spi0.0
./bus/spi/drivers/spidev:
spi_master
spidev
./class/spi_master:
spi0
./class/spidev:
spi_davinci.0
spi_davinciHA.1
./devices/platform/spi_davinci.0:
spi0.0
spi_master
./devices/platform/spi_davinci.0/spi0.0:
./devices/platform/spi_davinci.0/spi0.0/mtd:
./devices/platform/spi_davinci.0/spi0.0/mtd/mtd0:
./devices/platform/spi_davinci.0/spi0.0/mtd/mtd0/mtdblock0:
./devices/platform/spi_davinci.0/spi0.0/mtd/mtd0/mtdblock0/holders:
./devices/platform/spi_davinci.0/spi0.0/mtd/mtd0/mtdblock0/queue:
./devices/platform/spi_davinci.0/spi0.0/mtd/mtd0/mtdblock0/queue/iosched:
./devices/platform/spi_davinci.0/spi0.0/mtd/mtd0/mtdblock0/slaves:
./devices/platform/spi_davinci.0/spi0.0/mtd/mtd0ro:
./devices/platform/spi_davinci.0/spi0.0/mtd/mtd1:
./devices/platform/spi_davinci.0/spi0.0/mtd/mtd1/mtdblock1:
./devices/platform/spi_davinci.0/spi0.0/mtd/mtd1/mtdblock1/holders:
./devices/platform/spi_davinci.0/spi0.0/mtd/mtd1/mtdblock1/queue:
./devices/platform/spi_davinci.0/spi0.0/mtd/mtd1/mtdblock1/queue/iosched:
./devices/platform/spi_davinci.0/spi0.0/mtd/mtd1/mtdblock1/slaves:
./devices/platform/spi_davinci.0/spi0.0/mtd/mtd1ro:
./devices/platform/spi_davinci.0/spi0.0/mtd/mtd2:
./devices/platform/spi_davinci.0/spi0.0/mtd/mtd2/mtdblock2:
./devices/platform/spi_davinci.0/spi0.0/mtd/mtd2/mtdblock2/holders:
./devices/platform/spi_davinci.0/spi0.0/mtd/mtd2/mtdblock2/queue:
./devices/platform/spi_davinci.0/spi0.0/mtd/mtd2/mtdblock2/queue/iosched:
./devices/platform/spi_davinci.0/spi0.0/mtd/mtd2/mtdblock2/slaves:
./devices/platform/spi_davinci.0/spi0.0/mtd/mtd2ro:
./devices/platform/spi_davinci.0/spi_master:
spi0
./devices/platform/spi_davinci.0/spi_master/spi0:
./devices/platform/spi_davinciHA.1:
spidev
./module/spidev:
./module/spidev/parameters:
but in /dev/ no spidev or spidev1.0 file is present
so when I use ./spidev_test -D /dev/spidev it gives error cannot open device.
Can anyone tell me what SPI1 configuration I am missing
Thanks & Regards
Jitendra