annotate e1000_fix_and_improve_set_up_device.patch @ 76:51bea596df7f

Start a patch for the Rx init
author Louis Opter <louis@lse.epitech.net>
date Sun, 04 Mar 2012 15:27:34 +0100
parents c076a41a753c
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
74
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
1 # HG changeset patch
75
c076a41a753c Build fixes + use Log::info in print_card_status
Louis Opter <louis@lse.epitech.net>
parents: 74
diff changeset
2 # Parent 0a4c7ad60a68bfd1e797c0779bc035c20780ec9f
74
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
3 Fix and improve the e1000::set_up_device function:
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
4
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
5 - The LRST and PHY_RST commands were set instead of *unset* on the
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
6 control register;
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
7 - Complete the initialization of the device according to the Intel
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
8 manuals: unset some registers, zero out the control flow registers and
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
9 the statistics registers.
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
10
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
11 diff --git a/rathaxes/samples/e1000/e1000.blt b/rathaxes/samples/e1000/e1000.blt
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
12 --- a/rathaxes/samples/e1000/e1000.blt
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
13 +++ b/rathaxes/samples/e1000/e1000.blt
75
c076a41a753c Build fixes + use Log::info in print_card_status
Louis Opter <louis@lse.epitech.net>
parents: 74
diff changeset
14 @@ -58,7 +58,12 @@
74
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
15 E1000_MDIC = 0x00020, /* MDI Control - RW */
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
16 E1000_IMS = 0x000D0, /* Interrupt Mask Set */
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
17 E1000_IMC = 0x000D8, /* Interrupt Mask Clear */
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
18 - E1000_ICR = 0x000C0 /* Interrupt Cause Read - R/clr */
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
19 + E1000_ICR = 0x000C0, /* Interrupt Cause Read - R/clr */
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
20 + E1000_FCAL = 0x00028, /* Flow Control Address Low */
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
21 + E1000_FCAH = 0x0002c, /* Flow Control Address High */
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
22 + E1000_FCT = 0x00030, /* Flow Control Type */
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
23 + E1000_FCTTV = 0x00170, /* Flow Control Transmit Timer Value */
75
c076a41a753c Build fixes + use Log::info in print_card_status
Louis Opter <louis@lse.epitech.net>
parents: 74
diff changeset
24 + E1000_CRCERRS = 0x04000, /* CRC Error Count (base address of the statistic register spaces) */
74
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
25 };
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
26 }
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
27
75
c076a41a753c Build fixes + use Log::info in print_card_status
Louis Opter <louis@lse.epitech.net>
parents: 74
diff changeset
28 @@ -446,11 +451,43 @@
74
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
29 {
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
30 chunk ::CALL
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
31 {
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
32 + /*
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
33 + * This is documented in the Intel Gigabit Ethernet Controller
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
34 + * Software Developper manual.
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
35 + *
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
36 + * Since this part is actually completely device specific it should
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
37 + * not be written here. (but in the front-end).
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
38 + */
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
39 +
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
40 + /*
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
41 + * "General Configuration" (section 14.3):
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
42 + *
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
43 + * - CTRL.ASDE/CTRL.SLU: Let the PHY handle the speed detection &
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
44 + * negociation;
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
45 + * - CTRL.LRST/FRCSPD: Unset them to initiate the auto-negociation;
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
46 + * - CTRL.PHY_RST: Unset it;
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
47 + * - CTRL.ILOS: Unset it (ILOS is Invert Loss Of Signal);
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
48 + * - CTRL.VME: Make sure it's not set to disable VLAN support;
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
49 + * - Set the control flow registers to 0;
75
c076a41a753c Build fixes + use Log::info in print_card_status
Louis Opter <louis@lse.epitech.net>
parents: 74
diff changeset
50 + * - Finally, initialize all the statistic registers from
c076a41a753c Build fixes + use Log::info in print_card_status
Louis Opter <louis@lse.epitech.net>
parents: 74
diff changeset
51 + * E1000_CRCERRS to E1000_TSCTFC.
74
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
52 + */
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
53 rtx_e1000_register_set32(&${ctx}->hw_ctx, E1000_CTRL,
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
54 E1000_CMD_ASDE |
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
55 - E1000_CMD_SLU |
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
56 - E1000_CMD_LRST |
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
57 - E1000_CMD_PHY_RST);
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
58 + E1000_CMD_SLU);
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
59 + rtx_e1000_register_unset32(&${ctx}->hw_ctx, E1000_CTRL,
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
60 + E1000_CMD_LRST |
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
61 + E1000_CMD_FRCSPD |
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
62 + E1000_CMD_PHY_RST |
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
63 + E1000_CMD_ILOS |
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
64 + E1000_CMD_VME);
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
65 + rtx_e1000_register_write32(&${ctx}->hw_ctx, E1000_FCAH, 0);
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
66 + rtx_e1000_register_write32(&${ctx}->hw_ctx, E1000_FCAL, 0);
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
67 + rtx_e1000_register_write32(&${ctx}->hw_ctx, E1000_FCT, 0);
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
68 + rtx_e1000_register_write32(&${ctx}->hw_ctx, E1000_FCTTV, 0);
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
69 + int i = 0;
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
70 + for (i = 0; i != 64; ++i)
75
c076a41a753c Build fixes + use Log::info in print_card_status
Louis Opter <louis@lse.epitech.net>
parents: 74
diff changeset
71 + rtx_e1000_register_write32(&${ctx}->hw_ctx, E1000_CRCERRS + i * 4, 0);
74
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
72 }
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
73 }
ff90ee2fe1c4 Remove the finished patch on e1000 improvements and start a new series on e1000
Louis Opter <louis@lse.epitech.net>
parents:
diff changeset
74