Author: adrian
Date: Mon Mar  2 02:14:44 2015
New Revision: 279512
URL: https://svnweb.freebsd.org/changeset/base/279512

Log:
  Lay some groundwork for having this stuff hang off of AHB rather than
  the CPU nexus.
  
  * Add ahb as a possible bus attachment
  * Lay a comment down to remind me or whoever else ends up trying
    to debug why the EEPROM isn't mapped in as to what's going on.

Modified:
  head/sys/dev/ath/if_ath_ahb.c

Modified: head/sys/dev/ath/if_ath_ahb.c
==============================================================================
--- head/sys/dev/ath/if_ath_ahb.c       Mon Mar  2 02:08:43 2015        
(r279511)
+++ head/sys/dev/ath/if_ath_ahb.c       Mon Mar  2 02:14:44 2015        
(r279512)
@@ -153,12 +153,24 @@ ath_ahb_attach(device_t dev)
                eepromsize = ATH_EEPROM_DATA_SIZE * 2;
        }
 
-
        rid = 0;
        device_printf(sc->sc_dev, "eeprom @ %p (%d bytes)\n",
            (void *) eepromaddr, eepromsize);
-       psc->sc_eeprom = bus_alloc_resource(dev, SYS_RES_MEMORY, &rid, 
(uintptr_t) eepromaddr,
-         (uintptr_t) eepromaddr + (uintptr_t) (eepromsize - 1), 0, RF_ACTIVE);
+       /*
+        * XXX this assumes that the parent device is the nexus
+        * and will just pass through requests for all of memory.
+        *
+        * Later on, when this has to attach off of the actual
+        * AHB, this won't work.
+        *
+        * Ideally this would be done in machdep code in mips/atheros/
+        * and it'd expose the EEPROM via the firmware interface,
+        * so the ath/ath_ahb drivers can be loaded as modules
+        * after boot-time.
+        */
+       psc->sc_eeprom = bus_alloc_resource(dev, SYS_RES_MEMORY,
+           &rid, (uintptr_t) eepromaddr,
+           (uintptr_t) eepromaddr + (uintptr_t) (eepromsize - 1), 0, 
RF_ACTIVE);
        if (psc->sc_eeprom == NULL) {
                device_printf(dev, "cannot map eeprom space\n");
                goto bad0;
@@ -349,6 +361,7 @@ static driver_t ath_ahb_driver = {
 };
 static devclass_t ath_devclass;
 DRIVER_MODULE(ath, nexus, ath_ahb_driver, ath_devclass, 0, 0);
+DRIVER_MODULE(ath, apb, ath_ahb_driver, ath_devclass, 0, 0);
 MODULE_VERSION(ath, 1);
 MODULE_DEPEND(ath, wlan, 1, 1, 1);             /* 802.11 media layer */
 MODULE_DEPEND(ath, if_ath, 1, 1, 1);           /* if_ath driver */
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to