@@ -52,25 +52,25 @@ const int ethernet_MTU_SIZE = 0x300;
52
52
53
53
#define ETHERNET_ADDR_SIZE 6
54
54
55
- PACKED struct RX_DESC_TypeDef { /* RX Descriptor struct */
55
+ MBED_PACKED ( struct ) RX_DESC_TypeDef { /* RX Descriptor struct */
56
56
unsigned int Packet ;
57
57
unsigned int Ctrl ;
58
58
};
59
59
typedef struct RX_DESC_TypeDef RX_DESC_TypeDef ;
60
60
61
- PACKED struct RX_STAT_TypeDef { /* RX Status struct */
61
+ MBED_PACKED ( struct ) RX_STAT_TypeDef { /* RX Status struct */
62
62
unsigned int Info ;
63
63
unsigned int HashCRC ;
64
64
};
65
65
typedef struct RX_STAT_TypeDef RX_STAT_TypeDef ;
66
66
67
- PACKED struct TX_DESC_TypeDef { /* TX Descriptor struct */
67
+ MBED_PACKED ( struct ) TX_DESC_TypeDef { /* TX Descriptor struct */
68
68
unsigned int Packet ;
69
69
unsigned int Ctrl ;
70
70
};
71
71
typedef struct TX_DESC_TypeDef TX_DESC_TypeDef ;
72
72
73
- PACKED struct TX_STAT_TypeDef { /* TX Status struct */
73
+ MBED_PACKED ( struct ) TX_STAT_TypeDef { /* TX Status struct */
74
74
unsigned int Info ;
75
75
};
76
76
typedef struct TX_STAT_TypeDef TX_STAT_TypeDef ;
@@ -436,9 +436,9 @@ int ethernet_init() {
436
436
int regv , tout ;
437
437
char mac [ETHERNET_ADDR_SIZE ];
438
438
unsigned int clock = clockselect ();
439
-
439
+
440
440
LPC_SC -> PCONP |= 0x40000000 ; /* Power Up the EMAC controller. */
441
-
441
+
442
442
LPC_IOCON -> P1_0 &= ~0x07 ; /* ENET I/O config */
443
443
LPC_IOCON -> P1_0 |= 0x01 ; /* ENET_TXD0 */
444
444
LPC_IOCON -> P1_1 &= ~0x07 ;
@@ -459,7 +459,7 @@ int ethernet_init() {
459
459
LPC_IOCON -> P1_16 |= 0x01 ; /* ENET_MDC */
460
460
LPC_IOCON -> P1_17 &= ~0x07 ;
461
461
LPC_IOCON -> P1_17 |= 0x01 ; /* ENET_MDIO */
462
-
462
+
463
463
/* Reset all EMAC internal modules. */
464
464
LPC_EMAC -> MAC1 = MAC1_RES_TX | MAC1_RES_MCS_TX | MAC1_RES_RX |
465
465
MAC1_RES_MCS_RX | MAC1_SIM_RES | MAC1_SOFT_RES ;
@@ -523,7 +523,7 @@ int ethernet_init() {
523
523
524
524
LPC_EMAC -> IntEnable = INT_RX_DONE | INT_TX_DONE ; /* Enable EMAC interrupts. */
525
525
LPC_EMAC -> IntClear = 0xFFFF ; /* Reset all interrupts */
526
-
526
+
527
527
LPC_EMAC -> Command |= (CR_RX_EN | CR_TX_EN ); /* Enable receive and transmit mode of MAC Ethernet core */
528
528
LPC_EMAC -> MAC1 |= MAC1_REC_EN ;
529
529
@@ -548,9 +548,9 @@ int ethernet_init() {
548
548
void ethernet_free () {
549
549
LPC_EMAC -> IntEnable &= ~(INT_RX_DONE | INT_TX_DONE );
550
550
LPC_EMAC -> IntClear = 0xFFFF ;
551
-
551
+
552
552
LPC_SC -> PCONP &= ~0x40000000 ; /* Power down the EMAC controller. */
553
-
553
+
554
554
LPC_IOCON -> P1_0 &= ~0x07 ; /* ENET I/O config */
555
555
LPC_IOCON -> P1_1 &= ~0x07 ;
556
556
LPC_IOCON -> P1_4 &= ~0x07 ;
@@ -908,22 +908,22 @@ void ethernet_address(char *mac) {
908
908
void ethernet_set_link (int speed , int duplex ) {
909
909
unsigned short phy_data ;
910
910
int tout ;
911
-
911
+
912
912
if ((speed < 0 ) || (speed > 1 )) {
913
913
phy_data = PHY_AUTO_NEG ;
914
914
} else {
915
915
phy_data = (((unsigned short ) speed << 13 ) |
916
916
((unsigned short ) duplex << 8 ));
917
917
}
918
-
918
+
919
919
phy_write (PHY_REG_BMCR , phy_data );
920
-
920
+
921
921
for (tout = 100 ; tout ; tout -- ) { __NOP (); } /* A short delay */
922
-
922
+
923
923
switch (phy_id ) {
924
924
case DP83848C_ID :
925
925
phy_data = phy_read (PHY_REG_STS );
926
-
926
+
927
927
if (phy_data & PHY_STS_DUPLEX ) {
928
928
LPC_EMAC -> MAC2 |= MAC2_FULL_DUP ;
929
929
LPC_EMAC -> Command |= CR_FULL_DUP ;
@@ -933,17 +933,17 @@ void ethernet_set_link(int speed, int duplex) {
933
933
LPC_EMAC -> Command &= ~CR_FULL_DUP ;
934
934
LPC_EMAC -> IPGT = IPGT_HALF_DUP ;
935
935
}
936
-
936
+
937
937
if (phy_data & PHY_STS_SPEED ) {
938
938
LPC_EMAC -> SUPP &= ~SUPP_SPEED ;
939
939
} else {
940
940
LPC_EMAC -> SUPP |= SUPP_SPEED ;
941
941
}
942
942
break ;
943
-
943
+
944
944
case LAN8720_ID :
945
945
phy_data = phy_read (PHY_REG_SCSR );
946
-
946
+
947
947
if (phy_data & PHY_SCSR_DUPLEX ) {
948
948
LPC_EMAC -> MAC2 |= MAC2_FULL_DUP ;
949
949
LPC_EMAC -> Command |= CR_FULL_DUP ;
@@ -952,13 +952,13 @@ void ethernet_set_link(int speed, int duplex) {
952
952
LPC_EMAC -> Command &= ~CR_FULL_DUP ;
953
953
LPC_EMAC -> IPGT = IPGT_HALF_DUP ;
954
954
}
955
-
955
+
956
956
if (phy_data & PHY_SCSR_100MBIT ) {
957
957
LPC_EMAC -> SUPP |= SUPP_SPEED ;
958
958
} else {
959
959
LPC_EMAC -> SUPP &= ~SUPP_SPEED ;
960
960
}
961
-
961
+
962
962
break ;
963
963
}
964
964
}
0 commit comments