summaryrefslogtreecommitdiffstats
path: root/sys/dev/sk
diff options
context:
space:
mode:
authormarius <marius@FreeBSD.org>2013-05-30 12:16:55 +0000
committermarius <marius@FreeBSD.org>2013-05-30 12:16:55 +0000
commit82476a4f6ba0d931ce49e344c8113472b91925b3 (patch)
tree139b408875c5c9a31c24de30fcf622cfa09efd3d /sys/dev/sk
parent3136540cb4a51cd930105e9a7f339e29dea5be44 (diff)
downloadFreeBSD-src-82476a4f6ba0d931ce49e344c8113472b91925b3.zip
FreeBSD-src-82476a4f6ba0d931ce49e344c8113472b91925b3.tar.gz
- Merge from r249476: Ensure that PCI bus BUS_GET_DMA_TAG() method sees
the actual PCI device which makes the request for DMA tag, instead of some descendant of the PCI device, by creating a pass-through trampoline. - Sprinkle const on tables. - Use NULL instead of 0 for pointers. - Take advantage of nitems(). MFC after: 1 week
Diffstat (limited to 'sys/dev/sk')
-rw-r--r--sys/dev/sk/if_sk.c22
-rw-r--r--sys/dev/sk/if_skreg.h2
2 files changed, 17 insertions, 7 deletions
diff --git a/sys/dev/sk/if_sk.c b/sys/dev/sk/if_sk.c
index 120810d..3a0cc2e 100644
--- a/sys/dev/sk/if_sk.c
+++ b/sys/dev/sk/if_sk.c
@@ -143,7 +143,7 @@ static const char rcsid[] =
"$FreeBSD$";
#endif
-static struct sk_type sk_devs[] = {
+static const struct sk_type sk_devs[] = {
{
VENDORID_SK,
DEVICEID_SK_V1,
@@ -193,6 +193,7 @@ static int skc_detach(device_t);
static int skc_shutdown(device_t);
static int skc_suspend(device_t);
static int skc_resume(device_t);
+static bus_dma_tag_t skc_get_dma_tag(device_t, device_t);
static int sk_detach(device_t);
static int sk_probe(device_t);
static int sk_attach(device_t);
@@ -296,6 +297,8 @@ static device_method_t skc_methods[] = {
DEVMETHOD(device_resume, skc_resume),
DEVMETHOD(device_shutdown, skc_shutdown),
+ DEVMETHOD(bus_get_dma_tag, skc_get_dma_tag),
+
DEVMETHOD_END
};
@@ -330,9 +333,9 @@ static driver_t sk_driver = {
static devclass_t sk_devclass;
-DRIVER_MODULE(skc, pci, skc_driver, skc_devclass, 0, 0);
-DRIVER_MODULE(sk, skc, sk_driver, sk_devclass, 0, 0);
-DRIVER_MODULE(miibus, sk, miibus_driver, miibus_devclass, 0, 0);
+DRIVER_MODULE(skc, pci, skc_driver, skc_devclass, NULL, NULL);
+DRIVER_MODULE(sk, skc, sk_driver, sk_devclass, NULL, NULL);
+DRIVER_MODULE(miibus, sk, miibus_driver, miibus_devclass, NULL, NULL);
static struct resource_spec sk_res_spec_io[] = {
{ SYS_RES_IOPORT, PCIR_BAR(1), RF_ACTIVE },
@@ -1186,7 +1189,7 @@ static int
skc_probe(dev)
device_t dev;
{
- struct sk_type *t = sk_devs;
+ const struct sk_type *t = sk_devs;
while(t->sk_name != NULL) {
if ((pci_get_vendor(dev) == t->sk_vid) &&
@@ -1888,6 +1891,13 @@ skc_detach(dev)
return(0);
}
+static bus_dma_tag_t
+skc_get_dma_tag(device_t bus, device_t child __unused)
+{
+
+ return (bus_get_dma_tag(bus));
+}
+
struct sk_dmamap_arg {
bus_addr_t sk_busaddr;
};
@@ -3185,7 +3195,7 @@ sk_init_xmac(sc_if)
struct sk_softc *sc;
struct ifnet *ifp;
u_int16_t eaddr[(ETHER_ADDR_LEN+1)/2];
- struct sk_bcom_hack bhack[] = {
+ static const struct sk_bcom_hack bhack[] = {
{ 0x18, 0x0c20 }, { 0x17, 0x0012 }, { 0x15, 0x1104 }, { 0x17, 0x0013 },
{ 0x15, 0x0404 }, { 0x17, 0x8006 }, { 0x15, 0x0132 }, { 0x17, 0x8006 },
{ 0x15, 0x0232 }, { 0x17, 0x800D }, { 0x15, 0x000F }, { 0x18, 0x0420 },
diff --git a/sys/dev/sk/if_skreg.h b/sys/dev/sk/if_skreg.h
index 5c75d90..49c9583 100644
--- a/sys/dev/sk/if_skreg.h
+++ b/sys/dev/sk/if_skreg.h
@@ -1289,7 +1289,7 @@
struct sk_type {
u_int16_t sk_vid;
u_int16_t sk_did;
- char *sk_name;
+ const char *sk_name;
};
#define SK_ADDR_LO(x) ((u_int64_t) (x) & 0xffffffff)
OpenPOWER on IntegriCloud