diff options
Diffstat (limited to 'drivers/net/wan/hd6457x.c')
-rw-r--r-- | drivers/net/wan/hd6457x.c | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/drivers/net/wan/hd6457x.c b/drivers/net/wan/hd6457x.c index d3743321a977..dce2bb317b82 100644 --- a/drivers/net/wan/hd6457x.c +++ b/drivers/net/wan/hd6457x.c | |||
@@ -168,6 +168,23 @@ static inline u32 buffer_offset(port_t *port, u16 desc, int transmit) | |||
168 | } | 168 | } |
169 | 169 | ||
170 | 170 | ||
171 | static inline void sca_set_carrier(port_t *port) | ||
172 | { | ||
173 | if (!(sca_in(get_msci(port) + ST3, port_to_card(port)) & ST3_DCD)) { | ||
174 | #ifdef DEBUG_LINK | ||
175 | printk(KERN_DEBUG "%s: sca_set_carrier on\n", | ||
176 | port_to_dev(port)->name); | ||
177 | #endif | ||
178 | netif_carrier_on(port_to_dev(port)); | ||
179 | } else { | ||
180 | #ifdef DEBUG_LINK | ||
181 | printk(KERN_DEBUG "%s: sca_set_carrier off\n", | ||
182 | port_to_dev(port)->name); | ||
183 | #endif | ||
184 | netif_carrier_off(port_to_dev(port)); | ||
185 | } | ||
186 | } | ||
187 | |||
171 | 188 | ||
172 | static void sca_init_sync_port(port_t *port) | 189 | static void sca_init_sync_port(port_t *port) |
173 | { | 190 | { |
@@ -237,9 +254,7 @@ static void sca_init_sync_port(port_t *port) | |||
237 | sca_out(DIR_BOFE, DIR_TX(phy_node(port)), card); | 254 | sca_out(DIR_BOFE, DIR_TX(phy_node(port)), card); |
238 | } | 255 | } |
239 | } | 256 | } |
240 | 257 | sca_set_carrier(port); | |
241 | hdlc_set_carrier(!(sca_in(get_msci(port) + ST3, card) & ST3_DCD), | ||
242 | port_to_dev(port)); | ||
243 | } | 258 | } |
244 | 259 | ||
245 | 260 | ||
@@ -262,8 +277,7 @@ static inline void sca_msci_intr(port_t *port) | |||
262 | } | 277 | } |
263 | 278 | ||
264 | if (stat & ST1_CDCD) | 279 | if (stat & ST1_CDCD) |
265 | hdlc_set_carrier(!(sca_in(msci + ST3, card) & ST3_DCD), | 280 | sca_set_carrier(port); |
266 | port_to_dev(port)); | ||
267 | } | 281 | } |
268 | #endif | 282 | #endif |
269 | 283 | ||
@@ -566,7 +580,7 @@ static void sca_open(struct net_device *dev) | |||
566 | - all DMA interrupts | 580 | - all DMA interrupts |
567 | */ | 581 | */ |
568 | 582 | ||
569 | hdlc_set_carrier(!(sca_in(msci + ST3, card) & ST3_DCD), dev); | 583 | sca_set_carrier(port); |
570 | 584 | ||
571 | #ifdef __HD64570_H | 585 | #ifdef __HD64570_H |
572 | /* MSCI TX INT and RX INT A IRQ enable */ | 586 | /* MSCI TX INT and RX INT A IRQ enable */ |