Dron_Gus 2 4 июня, 2012 Опубликовано 4 июня, 2012 · Жалоба Вероятно он "внутри" SPI, т.к. является устройством на шине. (например на моей железке это выглядит так /sys/devices/platform/s3c64xx-spi.0/spi_master/spi0/spi0.0/) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dubov 0 4 июня, 2012 Опубликовано 4 июня, 2012 · Жалоба Вероятно он "внутри" SPI, т.к. является устройством на шине. (например на моей железке это выглядит так /sys/devices/platform/s3c64xx-spi.0/spi_master/spi0/spi0.0/) Дело в том, что я объявляю в массиве устройств SPI устройство с именем SPI_device (.modalias = "SPI_device"), затем указываю массив всех SPI устройств в at91_add_device_spi(), откуда вызывается spi_register_board_info(), где аргумент моё устройство, и функция platform_device_register() где аргумент устройство atmel_spi. В итоге устройство с именем "SPI_device" не появляется. не могли бы вы привести код как у вас регистрируется устройство "s3c64xx-spi.0" ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dron_Gus 2 4 июня, 2012 Опубликовано 4 июня, 2012 · Жалоба static struct spi_board_info crux_spi_devices[] = { { /* CAN */ .modalias = "mcp2515", .bus_num = 0, .chip_select = 0, .max_speed_hz = 10 * 1000 * 1000, .irq = CAN_IRQ, .platform_data = &mcp251x_info, .controller_data= &crux_mcp_cs, }, }; struct platform_device s3c2416_device_spi = { .name = "s3c64xx-spi", .id = 0, .num_resources = ARRAY_SIZE(s3c2416_spi_resource), .resource = s3c2416_spi_resource, .dev = { .dma_mask = &spi_dmamask, .coherent_dma_mask = DMA_BIT_MASK(32), .platform_data = &s3c2416_spi0_pdata, }, }; static struct platform_device *crux_devices[] __initdata = { ... &s3c2416_device_spi, ... }; static void __init crux_machine_init(void) { ... spi_register_board_info(crux_spi_devices, ARRAY_SIZE(crux_spi_devices)); ... platform_add_devices(crux_devices, ARRAY_SIZE(crux_devices)); ... } А драйвер для Вашего "SPI_device" написан? Зарегистрирован (spi_register_driver)? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dubov 0 4 июня, 2012 Опубликовано 4 июня, 2012 · Жалоба спасибо, для полноты картины не могли бы вы выложить что у вас лежит в s3c2416_spi_resource. Драйвер написан и зарегистрирован Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dron_Gus 2 4 июня, 2012 Опубликовано 4 июня, 2012 · Жалоба static struct resource s3c2416_spi_resource[] = { [0] = { .start = S3C2416_PA_SPI, .end = S3C2416_PA_SPI + 0x100 - 1, .flags = IORESOURCE_MEM, }, [1] = { .start = DMACH_SPI0_TX, .end = DMACH_SPI0_TX, .flags = IORESOURCE_DMA, }, [2] = { .start = DMACH_SPI0_RX, .end = DMACH_SPI0_RX, .flags = IORESOURCE_DMA, }, [3] = { .start = IRQ_SPI0, .end = IRQ_SPI0, .flags = IORESOURCE_IRQ, }, }; struct s3c64xx_spi_info s3c2416_spi0_pdata = { .src_clk_nr = 0, /* PCLK */ .fifo_lvl_mask = 0x7f, .rx_lvl_offset = 13, .tx_st_done = 21, .high_speed = 1, .cfg_gpio = s3c2416_spi0_cfg_gpio, }; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dubov 0 4 июня, 2012 Опубликовано 4 июня, 2012 · Жалоба Я вот что использую для своего устройства: static struct resource spi1_resources[] = { 559 [0] = { 560 .start = AT91SAM9260_BASE_SPI1, 561 .end = AT91SAM9260_BASE_SPI1 + SZ_16K - 1, 562 .flags = IORESOURCE_MEM, 563 }, 564 [1] = { 565 .start = AT91SAM9260_ID_SPI1, 566 .end = AT91SAM9260_ID_SPI1, 567 .flags = IORESOURCE_IRQ, 568 }, 569 }; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dron_Gus 2 4 июня, 2012 Опубликовано 4 июня, 2012 · Жалоба Это платформ дата для контроллера SPI, но как я понимаю с самим контроллером SPI у Вас проблем нет, он пробится и появляется? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dubov 0 4 июня, 2012 Опубликовано 4 июня, 2012 · Жалоба Да он появляется. не появляется устройство имя которого я задаю через modalias. Устройство висит на SPI1.0 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dron_Gus 2 4 июня, 2012 Опубликовано 4 июня, 2012 · Жалоба Выложите полную spi_board_info для вашего устройства. А так же вывод "ls /sys/devices/platform/". А то я уже запутался. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dubov 0 4 июня, 2012 Опубликовано 4 июня, 2012 (изменено) · Жалоба static struct spi_board_info ek_spi_devices[] = { #if defined(CONFIG_AD7606) || \ defined(CONFIG_AD7606_MODULE) { /* the modalias must be the same as spi device driver name */ .modalias = "ad7606-8", /* Name of spi_driver for this device */ .max_speed_hz = 10000000, /* max spi clock (SCK) speed in HZ */ .bus_num = 1, /* Framework bus number */ .chip_select = 0, /* Framework chip select */ .platform_data = &ad7606_pdata, //.controller_data = (void *) AT91_PIN_PB3, /* Blackfin only */ .irq = AT91SAM9260_ID_IRQ2, .mode = SPI_MODE_3, }, #endif }; а вот вывод root:/sys/devices/platform# ls alarmtimer at91_rtt.0 atmel_tcb.1 atmel_usart.2 power at91_mci atmel_spi.1 atmel_usart.0 iio-trigger-hrtimer.0 uevent at91_ohci atmel_tcb.0 atmel_usart.1 macb Хотя ожидалось увидеть здесь AD7606-8.0 вот ещё интересный вывод root@starterkit:/sys/devices/platform/atmel_spi.1/spi1.0# ls driver iio:device0 modalias power subsystem uevent iio:device0 - это по всей видимости моё устройство, но почему не ad7606-8 ? Изменено 4 июня, 2012 пользователем Dubov Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dron_Gus 2 4 июня, 2012 Опубликовано 4 июня, 2012 · Жалоба Сделайте в /sys/devices/platform/atmel_spi.1/spi1.0 "cat modalias" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dubov 0 4 июня, 2012 Опубликовано 4 июня, 2012 · Жалоба Сделайте в /sys/devices/platform/atmel_spi.1/spi1.0 "cat modalias" сделал... да! Получил AD7606-8 значит ли это что драйвер установился нормально? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dron_Gus 2 5 июня, 2012 Опубликовано 5 июня, 2012 · Жалоба По крайней мере probe отработал и вернул 0. Но все может сломаться в процессе работы. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dubov 0 5 июня, 2012 Опубликовано 5 июня, 2012 · Жалоба По крайней мере probe отработал и вернул 0. Но все может сломаться в процессе работы. :) спасибо за советы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться