Доброго времени суток.
Есть контроллер CAN - mcp2515, в ядре есть драйвер под него,
в комментариях к нему :
* static struct mcp251x_platform_data mcp251x_info = {
* .oscillator_frequency = 8000000,
* .board_specific_setup = &mcp251x_setup,
* .model = CAN_MCP251X_MCP2510,
* .power_enable = mcp251x_power_enable,
* .transceiver_enable = NULL,
* };
*
* static struct spi_board_info spi_board_info[] = {
* {
* .modalias = "mcp251x",
* .platform_data = &mcp251x_info,
* .irq = IRQ_EINT13,
* .max_speed_hz = 2
00
00,
* .chip_select = 2,
* },
* };
1. я так понимаю mcp251x_platform_data надо засунуть куда-нибудь в arch/arm/mach-at91/at91sam9260_devices.c ,
а spi_board_info править в linux/arch/arm/mach-at91/board-sam9260ek.c ?
2. При этом в комментариях spi_board_info нет поля bus_num,
означает ли это что контроллер найдётся на любом SPI с заданным CS, или bus_num надо указывать явно в любом случае?
3. Если необходимо подключить два контроллера для сетей can0 и can1, то если их повесить на разный SPI(CS), то ядро найдёт 2 устройства? естественно соответственно править spi_board_info для двух чипов.
4. IRQ_EINT13 это програмное прерывание или аппаратное? У mcp2515 есть выход прерывания,но его использовать не обязательно(имеется внутренний буфер сообщений). то есть достаточно ли мне просто подключить SPI от mcp2515 к плате?
Заранее благодарен.