Настройка ядра для работы с мультипортовой платой Advantech PCI-1620B
Перейти к навигации
Перейти к поиску
Сразу скажу, что настраивал работы только этой платы, про остальные ничего сказать не могу.
Изменение файла 8250_pci.c
1. Распаковываем выкаченное ядро в папку /usr/src
2. Для работы этой платы нужно изменить файл /usr/src/linux*/drivers/serial/8250_pci.c
Открываем этот файл ищем строку
#include "8250.h"
Далее добавляем
/* * Advantech IAG PCI-954/16C950 cards * */ #define ADVANTECH_16C950_VER "3.12" #define ADVANTECH_16C950_DATE "7/20/2005" #define PCI_VENDOR_ID_ADVANTECH 0x13fe #define PCI_DEVICE_ID_ADVANTECH_PCI1600 0x1600 /* Internal */ #define PCI_DEVICE_ID_ADVANTECH_PCI1601 0x1601 /* Internal */ #define PCI_DEVICE_ID_ADVANTECH_PCI1602 0x1602 /* Internal */ #define PCI_DEVICE_ID_ADVANTECH_PCI1603 0x1603 /* Internal */ #define PCI_DEVICE_ID_ADVANTECH_PCI1604 0x1604 /* Internal */ #define PCI_DEVICE_ID_ADVANTECH_PCI16ff 0x16ff /* External */ #define PCI_DEVICE_ID_ADVANTECH_PCI1600_1601 0x1601 #define PCI_DEVICE_ID_ADVANTECH_PCI1600_1602 0x1602 #define PCI_DEVICE_ID_ADVANTECH_PCI1600_1610 0x1610 #define PCI_DEVICE_ID_ADVANTECH_PCI1600_1612 0x1612 /* Also for UNO-2059 */ #define PCI_DEVICE_ID_ADVANTECH_PCI1600_1620 0x1620 #define PCI_DEVICE_ID_ADVANTECH_PCI1600_1622 0x1622 #define PCI_DEVICE_ID_ADVANTECH_UNO2050 0x2050 #define PCI_DEVICE_ID_ADVANTECH_UNOB2201 0x2201 #define PCI_DEVICE_ID_ADVANTECH_UNOBF201 0xf201 #define PCI_DEVICE_ID_ADVANTECH_UNOBX201_2201 0x2201 #define PCI_DEVICE_ID_ADVANTECH_MIC3620 0x3620 #define PCI_DEVICE_ID_ADVANTECH_MIC3612 0X3612 //int adv_register_serial(struct serial_struct *req); //void adv_unregister_serial(int line);
Далее ищем строки
static struct pci_serial_quirk pci_serial_quirks[] = {
В новых ядрах
static struct pci_serial_quirk pci_serial_quirks[] __refdata = {
И сразу за ними вставляем
/* * Advantech IAG PCI-954/16C950 cards */ { .vendor = PCI_VENDOR_ID_ADVANTECH, .device = PCI_DEVICE_ID_ADVANTECH_PCI1600, .subvendor = PCI_DEVICE_ID_ADVANTECH_PCI1600_1620, .subdevice = PCI_ANY_ID, .setup = pci_default_setup, }, { .vendor = PCI_VENDOR_ID_ADVANTECH, .device = PCI_DEVICE_ID_ADVANTECH_PCI16ff, .subvendor = PCI_DEVICE_ID_ADVANTECH_PCI1600_1620, .subdevice = PCI_ANY_ID, .setup = pci_default_setup, }, { .vendor = PCI_VENDOR_ID_ADVANTECH, .device = PCI_DEVICE_ID_ADVANTECH_PCI1600, .subvendor = PCI_DEVICE_ID_ADVANTECH_PCI1600_1622, .subdevice = PCI_ANY_ID, .setup = pci_default_setup, }, { .vendor = PCI_VENDOR_ID_ADVANTECH, .device = PCI_DEVICE_ID_ADVANTECH_PCI16ff, .subvendor = PCI_DEVICE_ID_ADVANTECH_PCI1600_1622, .subdevice = PCI_ANY_ID, .setup = pci_default_setup, },
Далее ищем строки
{ PCI_VENDOR_ID_OXSEMI, PCI_DEVICE_ID_OXSEMI_16PCI954, PCI_SUBVENDOR_ID_SIIG, PCI_SUBDEVICE_ID_SIIG_QUARTET_SERIAL, 0, 0, pbn_b0_4_1152000 },
В новых ядрах
{ PCI_VENDOR_ID_OXSEMI, PCI_DEVICE_ID_OXSEMI_16PCI954, PCI_SUBVENDOR_ID_CONNECT_TECH, PCI_SUBDEVICE_ID_CONNECT_TECH_TITAN_2, 0, 0, pbn_b0_2_1843200 },
И сразу за ними вставляем
/* * Advantech IAG PCI-954/16C950 cards */ { PCI_VENDOR_ID_ADVANTECH, PCI_DEVICE_ID_ADVANTECH_PCI1600, PCI_DEVICE_ID_ADVANTECH_PCI1600_1620, PCI_ANY_ID, 0, 0, pbn_b0_4_921600 }, { PCI_VENDOR_ID_ADVANTECH, PCI_DEVICE_ID_ADVANTECH_PCI16ff, PCI_DEVICE_ID_ADVANTECH_PCI1600_1620, PCI_ANY_ID, 0, 0, pbn_b0_4_921600 },
Конфигурирование ядра
Запускаем
make menuconfig
Идем в Device Drivers--->Character Devices ----> Serial Drivers
Устанавливаем
(20) Maximum number of 8250/16550 serial ports (20) Number of 8250/16550 serial ports to register at runtime [*] Extended 8250/16550 serial driver options [*] Support more than 4 legacy serial ports <M> Support Fourport cards <M> Support Accent cards <M> Support Boca cards <M> Support Exar ST16C554/554D Quad UART <M> Support Hub6 cards [*] Support for sharing serial interrupts
Далее делаем
make sudo make modules_install sudo make install
Перезагружаемся и смотрим с логах что получилось.