Mercurial > archived > louis > epitech > mq > rathaxes
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 |
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 |