if_ed_rtl80x9.c (150957) | if_ed_rtl80x9.c (151299) |
---|---|
1/*- 2 * Copyright (c) 2003, David Madole 3 * All rights reserved. 4 * Copyright (c) 2005, M. Warner Losh. 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions --- 17 unchanged lines hidden (view full) --- 26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27 * SUCH DAMAGE. 28 * 29 * Based on patches subitted by: David Madole, edited by M. Warner Losh. 30 */ 31 32 33#include <sys/cdefs.h> | 1/*- 2 * Copyright (c) 2003, David Madole 3 * All rights reserved. 4 * Copyright (c) 2005, M. Warner Losh. 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions --- 17 unchanged lines hidden (view full) --- 26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27 * SUCH DAMAGE. 28 * 29 * Based on patches subitted by: David Madole, edited by M. Warner Losh. 30 */ 31 32 33#include <sys/cdefs.h> |
34__FBSDID("$FreeBSD: head/sys/dev/ed/if_ed_rtl80x9.c 150957 2005-10-05 05:21:07Z imp $"); | 34__FBSDID("$FreeBSD: head/sys/dev/ed/if_ed_rtl80x9.c 151299 2005-10-13 22:06:02Z imp $"); |
35 36#include "opt_ed.h" 37 38#include <sys/param.h> 39#include <sys/systm.h> 40#include <sys/sockio.h> 41#include <sys/mbuf.h> 42#include <sys/kernel.h> --- 27 unchanged lines hidden (view full) --- 70{ 71 return (ifmedia_ioctl(sc->ifp, ifr, &sc->ifmedia, command)); 72} 73 74int 75ed_probe_RTL80x9(device_t dev, int port_rid, int flags) 76{ 77 struct ed_softc *sc = device_get_softc(dev); | 35 36#include "opt_ed.h" 37 38#include <sys/param.h> 39#include <sys/systm.h> 40#include <sys/sockio.h> 41#include <sys/mbuf.h> 42#include <sys/kernel.h> --- 27 unchanged lines hidden (view full) --- 70{ 71 return (ifmedia_ioctl(sc->ifp, ifr, &sc->ifmedia, command)); 72} 73 74int 75ed_probe_RTL80x9(device_t dev, int port_rid, int flags) 76{ 77 struct ed_softc *sc = device_get_softc(dev); |
78 char *ts; |
|
78 int error; 79 80 if ((error = ed_alloc_port(dev, port_rid, ED_NOVELL_IO_PORTS))) 81 return (error); 82 | 79 int error; 80 81 if ((error = ed_alloc_port(dev, port_rid, ED_NOVELL_IO_PORTS))) 82 return (error); 83 |
83 if (!ed_probe_generic8390(sc)) 84 return (ENXIO); 85 | |
86 if (ed_nic_inb(sc, ED_P0_CR) & (ED_CR_PS0 | ED_CR_PS1)) 87 ed_nic_outb(sc, ED_P0_CR, ED_CR_RD2 | ED_CR_STP); 88 89 if (ed_nic_inb(sc, ED_RTL80X9_80X9ID0) != ED_RTL80X9_ID0) 90 return (ENXIO); 91 92 switch (ed_nic_inb(sc, ED_RTL80X9_80X9ID1)) { 93 case ED_RTL8019_ID1: 94 sc->chip_type = ED_CHIP_TYPE_RTL8019; | 84 if (ed_nic_inb(sc, ED_P0_CR) & (ED_CR_PS0 | ED_CR_PS1)) 85 ed_nic_outb(sc, ED_P0_CR, ED_CR_RD2 | ED_CR_STP); 86 87 if (ed_nic_inb(sc, ED_RTL80X9_80X9ID0) != ED_RTL80X9_ID0) 88 return (ENXIO); 89 90 switch (ed_nic_inb(sc, ED_RTL80X9_80X9ID1)) { 91 case ED_RTL8019_ID1: 92 sc->chip_type = ED_CHIP_TYPE_RTL8019; |
93 ts = "RTL8019"; |
|
95 break; 96 case ED_RTL8029_ID1: 97 sc->chip_type = ED_CHIP_TYPE_RTL8029; | 94 break; 95 case ED_RTL8029_ID1: 96 sc->chip_type = ED_CHIP_TYPE_RTL8029; |
97 ts = "RTL8029"; |
|
98 break; 99 default: 100 return (ENXIO); 101 } 102 103 sc->asic_offset = ED_NOVELL_ASIC_OFFSET; 104 sc->nic_offset = ED_NOVELL_NIC_OFFSET; 105 106 if ((error = ed_probe_Novell_generic(dev, flags))) 107 return (error); 108 | 98 break; 99 default: 100 return (ENXIO); 101 } 102 103 sc->asic_offset = ED_NOVELL_ASIC_OFFSET; 104 sc->nic_offset = ED_NOVELL_NIC_OFFSET; 105 106 if ((error = ed_probe_Novell_generic(dev, flags))) 107 return (error); 108 |
109 sc->type_str = ts; |
|
109 sc->sc_media_ioctl = &ed_rtl80x9_media_ioctl; 110 ifmedia_init(&sc->ifmedia, 0, ed_rtl_set_media, ed_rtl_get_media); 111 112 ifmedia_add(&sc->ifmedia, IFM_ETHER | IFM_10_T | IFM_FDX, 0, 0); 113 ifmedia_add(&sc->ifmedia, IFM_ETHER | IFM_10_T, 0, 0); 114 ifmedia_add(&sc->ifmedia, IFM_ETHER | IFM_10_2, 0, 0); 115 ifmedia_add(&sc->ifmedia, IFM_ETHER | IFM_10_5, 0, 0); 116 ifmedia_add(&sc->ifmedia, IFM_ETHER | IFM_AUTO, 0, 0); --- 7 unchanged lines hidden (view full) --- 124 case ED_RTL80X9_CF2_10_5: 125 ifmedia_set(&sc->ifmedia, IFM_ETHER | IFM_10_5); 126 break; 127 case ED_RTL80X9_CF2_10_2: 128 ifmedia_set(&sc->ifmedia, IFM_ETHER | IFM_10_2); 129 break; 130 case ED_RTL80X9_CF2_10_T: 131 ifmedia_set(&sc->ifmedia, IFM_ETHER | IFM_10_T | | 110 sc->sc_media_ioctl = &ed_rtl80x9_media_ioctl; 111 ifmedia_init(&sc->ifmedia, 0, ed_rtl_set_media, ed_rtl_get_media); 112 113 ifmedia_add(&sc->ifmedia, IFM_ETHER | IFM_10_T | IFM_FDX, 0, 0); 114 ifmedia_add(&sc->ifmedia, IFM_ETHER | IFM_10_T, 0, 0); 115 ifmedia_add(&sc->ifmedia, IFM_ETHER | IFM_10_2, 0, 0); 116 ifmedia_add(&sc->ifmedia, IFM_ETHER | IFM_10_5, 0, 0); 117 ifmedia_add(&sc->ifmedia, IFM_ETHER | IFM_AUTO, 0, 0); --- 7 unchanged lines hidden (view full) --- 125 case ED_RTL80X9_CF2_10_5: 126 ifmedia_set(&sc->ifmedia, IFM_ETHER | IFM_10_5); 127 break; 128 case ED_RTL80X9_CF2_10_2: 129 ifmedia_set(&sc->ifmedia, IFM_ETHER | IFM_10_2); 130 break; 131 case ED_RTL80X9_CF2_10_T: 132 ifmedia_set(&sc->ifmedia, IFM_ETHER | IFM_10_T | |
132 (ed_nic_inb(sc, ED_RTL80X9_CONFIG3) 133 & ED_RTL80X9_CF3_FUDUP) ? IFM_FDX : 0); | 133 ((ed_nic_inb(sc, ED_RTL80X9_CONFIG3) 134 & ED_RTL80X9_CF3_FUDUP) ? IFM_FDX : 0)); |
134 break; 135 } 136 return (0); 137} 138 139static int 140ed_rtl_set_media(struct ifnet *ifp) 141{ --- 70 unchanged lines hidden --- | 135 break; 136 } 137 return (0); 138} 139 140static int 141ed_rtl_set_media(struct ifnet *ifp) 142{ --- 70 unchanged lines hidden --- |