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 */ |
