s3c6410에서 16c554를 통한 시리얼 확장문제


ez s3c6410 보드를 사용중이며 em-s3c6410모듈을 사용하여 16채널 시리얼포트을 사용하려고 합니다.

질문드립니다..


1.현재사용중인 4채널외에 16c554 x 4 개로 16채널로 확장하려고 하는데 가능한지요?


플랫폼 디바이스에 serial8250 형태의 커널에서 지원하는 플랫폼으로 잡히도록  설정을 하려고한다면


./arch/arm/mach-s3c6410/mach-ezs3c6410.c 에 다음 설정이 있는데

static struct plat_serial8250_port serial_platform_data[] = {


#if defined(CONFIG_MACH_SIB_R300) | defined(CONFIG_MACH_SIB_C420)

    UART_SETUP( S3C64XX_CS4 + 0x000, IRQ_EINT(6), 2 ),

    UART_SETUP( S3C64XX_CS4 + 0x100, IRQ_EINT(6), 2 ),

    UART_SETUP( S3C64XX_CS4 + 0x200, IRQ_EINT(6), 2 ),

    UART_SETUP( S3C64XX_CS4 + 0x300, IRQ_EINT(6), 2 ),

#endif

    {(struct plat_serial8250_port *)NULL}

};


2. 위의 UART_SETUP 하는 부분에 mapbase와 IRQ 등록하는 부분에만 추가하면 될런지요?

    예를들어 IRQ번호를 1,2,3,4,5.. 16으로 정한다면

    UART_SETUP( S3C64XX_CS4 + 0x000, IRQ_EINT(1), 2 ),

    UART_SETUP( S3C64XX_CS4 + 0x100, IRQ_EINT(2), 2 ),

    UART_SETUP( S3C64XX_CS4 + 0x200, IRQ_EINT(3), 2 ),

    UART_SETUP( S3C64XX_CS4 + 0x300, IRQ_EINT(4), 2 ),

       ....

    UART_SETUP( S3C64XX_CS4 + 0xf000, IRQ_EINT(16), 2 ),


3. 만약 irq16개를  사용하여 확장하는것이 불가하다면  다른 대안이 있나요?