OSDN Git Service

projects clean up 1
[pinoc/pinoc.git] / pinoc_gcc / lib / 3069 / DP8390.c
diff --git a/pinoc_gcc/lib/3069/DP8390.c b/pinoc_gcc/lib/3069/DP8390.c
new file mode 100644 (file)
index 0000000..775757b
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * DP8390.c
+ *
+ *  Created on: 2010/12/13
+ *      Author: mizu
+ */
+
+#include "DP8390.h"
+
+struct DP8390 nic;
+
+void nic_mac_set()
+{
+
+}
+
+// ON = 1 , OFF = 0
+void nic_send_ON_OFF(int ON_OFF)
+{
+       if(ON_OFF)
+               nic->TCR.LB0 = 0;
+       else
+               nic->TCR.LB0 = 1;
+}
+
+void nic_rec_ON_OFF(int ON_OFF)
+{
+       if(ON_OFF)
+               nic->RCR.MON = 0;
+       else
+               nic->RCR.MON = 1;
+}
+
+void select_page(int page_no)
+{
+       nic->CR.PS = 0;
+
+       switch(page_no)
+       {
+       case 0:                                 // page0
+               break;
+       case 1:
+               nic->CR.PS0 = 1;        // page1
+               break;
+       case 2:
+               nic->CR.PS1 = 1;        // page2
+               break;
+
+       }
+}
+
+void nic_init(void* nic_base)
+{
+
+       long i;
+
+
+       nic = (struct DP8390*)nic_base; // ベースアドレスセット
+
+       u1 buff[16];
+
+       (nic + 0x18) = 0x00;                    // リセット
+       for(i = 0; i < 400000; i++);    // ウェイト
+
+       select_page(0);                                 // page0選択
+
+       nic->CR.STP = 1;                                // ストップ
+       nic->IMR = 0;                                   // 割り込みマスククリア
+       nic->ISR = 0xFF;                                // 割り込み要求クリア
+       nic->RBCR0 = 0;                                 // リモートバイトカウントレジスタ0 クリア
+       nic->RBCR1 = 0;                                 // リモートバイトカウントレジスタ1 クリア
+       nic->DCR.WTS = 1;                               // ワード転送指定
+       nic->DCR.LS = 1;                                // ループバック設定
+//     nic->DCR.FT1 = 1;
+
+       nic_send_ON_OFF(0);                             // 送信部OFF
+       nic_rec_ON_OFF(0);                              // 受信部OFF
+
+
+       nic->PSTART = (0x4c00 >> 8);    // リングバッファ開始位置
+       nic->PSTOP = (0x8000 >> 8);             // リングバッファ終了位置
+
+       nic->BNRY = ((0x8000 >> 8) - 1);
+       select_page(1);
+
+
+}