реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> SPI драйвер, забирать данные по прерыванию
Dron_Gus
сообщение Jun 4 2012, 06:06
Сообщение #16


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Вероятно он "внутри" SPI, т.к. является устройством на шине. (например на моей железке это выглядит так /sys/devices/platform/s3c64xx-spi.0/spi_master/spi0/spi0.0/)


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
Dubov
сообщение Jun 4 2012, 07:35
Сообщение #17


Местный
***

Группа: Участник
Сообщений: 408
Регистрация: 28-05-12
Пользователь №: 72 052



Цитата(Dron_Gus @ Jun 4 2012, 10:06) *
Вероятно он "внутри" 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" ?
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Jun 4 2012, 09:19
Сообщение #18


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Код
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)?


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
Dubov
сообщение Jun 4 2012, 09:38
Сообщение #19


Местный
***

Группа: Участник
Сообщений: 408
Регистрация: 28-05-12
Пользователь №: 72 052



спасибо, для полноты картины не могли бы вы выложить что у вас лежит в s3c2416_spi_resource.
Драйвер написан и зарегистрирован
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Jun 4 2012, 09:49
Сообщение #20


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Код
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,
};


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
Dubov
сообщение Jun 4 2012, 09:52
Сообщение #21


Местный
***

Группа: Участник
Сообщений: 408
Регистрация: 28-05-12
Пользователь №: 72 052



Я вот что использую для своего устройства:
Код
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 };
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Jun 4 2012, 10:15
Сообщение #22


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Это платформ дата для контроллера SPI, но как я понимаю с самим контроллером SPI у Вас проблем нет, он пробится и появляется?


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
Dubov
сообщение Jun 4 2012, 10:24
Сообщение #23


Местный
***

Группа: Участник
Сообщений: 408
Регистрация: 28-05-12
Пользователь №: 72 052



Да он появляется. не появляется устройство имя которого я задаю через modalias. Устройство висит на SPI1.0
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Jun 4 2012, 10:37
Сообщение #24


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Выложите полную spi_board_info для вашего устройства. А так же вывод "ls /sys/devices/platform/". А то я уже запутался. sm.gif


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
Dubov
сообщение Jun 4 2012, 11:02
Сообщение #25


Местный
***

Группа: Участник
Сообщений: 408
Регистрация: 28-05-12
Пользователь №: 72 052



Код
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 ?

Сообщение отредактировал Dubov - Jun 4 2012, 11:04
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Jun 4 2012, 11:50
Сообщение #26


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Сделайте в /sys/devices/platform/atmel_spi.1/spi1.0 "cat modalias"


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
Dubov
сообщение Jun 4 2012, 15:58
Сообщение #27


Местный
***

Группа: Участник
Сообщений: 408
Регистрация: 28-05-12
Пользователь №: 72 052



Цитата(Dron_Gus @ Jun 4 2012, 15:50) *
Сделайте в /sys/devices/platform/atmel_spi.1/spi1.0 "cat modalias"

сделал...
да! Получил AD7606-8
значит ли это что драйвер установился нормально?
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Jun 5 2012, 06:40
Сообщение #28


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



По крайней мере probe отработал и вернул 0. Но все может сломаться в процессе работы. sm.gif


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
Dubov
сообщение Jun 5 2012, 11:05
Сообщение #29


Местный
***

Группа: Участник
Сообщений: 408
Регистрация: 28-05-12
Пользователь №: 72 052



Цитата(Dron_Gus @ Jun 5 2012, 09:40) *
По крайней мере probe отработал и вернул 0. Но все может сломаться в процессе работы. sm.gif

спасибо за советы.
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th June 2025 - 15:56
Рейтинг@Mail.ru


Страница сгенерированна за 0.01558 секунд с 7
ELECTRONIX ©2004-2016