[Suzaku:00520] UART IPのIRQへの関連付けについて

HLDC上村 email@hidden
2006年 5月 20日 (土) 11:45:59 JST


いつもお世話になっております。HLDCの上村と申します。
早速ですが、IRQの使用方法について質問させていただきます。

現在、追加したOPB-UART16550 IPの割り込みをIRQに関連付けようとして、
カーネルのソースを読み始めてみたのですが、
PC用の解析入門書とは異なる部分も多く、まだ良くわかっていない状態です。

IRQについてメーリングリストの過去ログを探してみたところ、
以下のパッチをが投稿されていのですが、このパッチから、
XPAR_SECOND_UART1_BASEADDRの部分を追加したIPのアドレスに変更して適用する、
という事で割り込みが発生するようになるのでしょうか?

--- xmbserial.c.orig    2004-10-06 10:11:36.000000000 +0900
+++ xmbserial.c 2004-10-06 10:16:59.000000000 +0900
@@ -181,9 +181,8 @@
  */
 static struct xmb_serial xmbrs_table[] = {
   { 0, (XPAR_CONSOLE_UART_BASEADDR), IRQBASE, ASYNC_BOOT_AUTOCONF }, /* ttyS0 */
-#ifdef CONFIG_MICROBLAZE_DEBUG_UART
-  { 0, (XPAR_DEBUG_UART_BASEADDR), IRQBASE+1, ASYNC_BOOT_AUTOCONF } /* ttyS1 */
-#endif
+  { 0, (XPAR_SECOND_UART1_BASEADDR), IRQBASE+2, ASYNC_BOOT_AUTOCONF }, /* ttyS1 */
+  { 0, (XPAR_SECOND_UART2_BASEADDR), IRQBASE+3, ASYNC_BOOT_AUTOCONF } /* ttyS2 */
 };
 
 #define    NR_PORTS    (sizeof(xmbrs_table) / sizeof(struct xmb_serial))
@@ -389,13 +388,22 @@
  */
 void xmbrs_interrupt(int irq, void *dev_id, struct pt_regs *regs)
 {
-   struct xmb_serial   *info;
+   struct xmb_serial   *info = NULL;
    unsigned int isr;
    volatile unsigned int *uartp;
+   int i;
 
-   info = &xmbrs_table[(irq - IRQBASE)];
-   uartp = (volatile unsigned int *) info->addr;
+   for(i = 0 ; i < NR_PORTS ; i++){
+       if(xmbrs_table[i].irq == irq){
+           info = &xmbrs_table[i];
+       }
+   }
+   if(!info){
+       printk("invalied irq happen, no : %d\n", irq);
+       return;
+   }
 
+   uartp = (volatile unsigned int *) info->addr;
    isr = uartp[XUL_STATUS_REG_OFFSET/4];
 
    /* Grab any valid chars */
@@ -1464,6 +1472,7 @@
    switch (info->line) {
    case 0:
    case 1:
+   case 2:
        break;
    default:
        printk("SERIAL: don't know how to handle UART %d interrupt?\n",

-----------------------------------------------------------

また、このIRQと割り込みで実行したい関数を関連付けたい場合は、
request_irq()で追加したIRQ No.と関数を指定する、
という事であっていますでしょうか?

以上です。よろしくお願いいたします。

凸凹凸凹凸凹凸凹凸凹凸凹凸凹凸凹凸凹凸凹凸凹凸凹
  Heartland・Data Co.,    システム設計部
   上村真人 (Kamimura Masato)
    HomePage: http://www.hldc.co.jp/
     E-mail Add: email@hidden
    栃木県足利市富士見町24-1
     TEL:0284-41-1159 / FAX:0284-41-3491
凹凸凹凸凹凸凹凸凹凸凹凸凹凸凹凸凹凸凹凸凹凸凹凸 




suzaku メーリングリストの案内