mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-03 09:00:21 +00:00
ath(4): Remove MIPS AHB frontend and join PCI one w/ main support again
Following the removal of general MIPS support, there's no longer a need to have the AHB bus-frontend in place, which according to Linux sources also isn't used with any non-MIPS SoCs. For simplicity, PCI bus support is only made conditional on the main one again, i. e. device ath_pci is removed, and built into the main module, i. e. if_ath_pci.ko obsoleted, respectively. Effectively, this reverts the following commits and associated changes:dba9c85977
e849bb3ecb
Approved by: adrian Relnotes: yes Differential Revision: https://reviews.freebsd.org/D41354
This commit is contained in:
parent
458e0c1b66
commit
37c8ee8847
@ -52,6 +52,10 @@
|
||||
# xargs -n1 | sort | uniq -d;
|
||||
# done
|
||||
|
||||
# 20230807: Removal of the ath(4) AHB bus-frontend or MIPS
|
||||
OLD_FILES+=usr/share/man/man4/ath_ahb.4
|
||||
OLD_FILES+=usr/share/man/man4/ath_pci.4
|
||||
|
||||
# 20230803: Removal of support for cloning pseudo interfaces from iflib(9)
|
||||
OLD_FILES+=usr/include/net/iflib_private.h
|
||||
|
||||
|
7
UPDATING
7
UPDATING
@ -27,6 +27,13 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 14.x IS SLOW:
|
||||
world, or to merely disable the most expensive debugging functionality
|
||||
at runtime, run "ln -s 'abort:false,junk:false' /etc/malloc.conf".)
|
||||
|
||||
20230807:
|
||||
Following the general removal of MIPS support, the ath(4) AHB bus-
|
||||
frontend has been removed, too, and building of the PCI support is
|
||||
integrated with the ath(4) main module again. As a result, there's
|
||||
no longer a need for if_ath_pci_load="YES" in /boot/loader.conf or
|
||||
"device ath_pci" in the kernel configuration.
|
||||
|
||||
20230803:
|
||||
MAXCPU has been increased to 1024 in the amd64 GENERIC kernel config.
|
||||
Out-of-tree kernel modules will need to be rebuilt.
|
||||
|
@ -55,9 +55,7 @@ MAN= aac.4 \
|
||||
at45d.4 \
|
||||
ata.4 \
|
||||
ath.4 \
|
||||
ath_ahb.4 \
|
||||
ath_hal.4 \
|
||||
ath_pci.4 \
|
||||
atkbd.4 \
|
||||
atkbdc.4 \
|
||||
atp.4 \
|
||||
|
@ -28,7 +28,7 @@
|
||||
.\"
|
||||
.\" $FreeBSD$
|
||||
.\"/
|
||||
.Dd June 16, 2020
|
||||
.Dd August 7, 2023
|
||||
.Dt ATH 4
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -40,7 +40,6 @@ place the following lines in your
|
||||
kernel configuration file:
|
||||
.Bd -ragged -offset indent
|
||||
.Cd "device ath"
|
||||
.Cd "device ath_pci"
|
||||
.Cd "device ath_hal"
|
||||
.Cd "device ath_rate_sample"
|
||||
.Cd "device wlan"
|
||||
@ -51,7 +50,6 @@ module at boot time, place the following line in
|
||||
.Xr loader.conf 5 :
|
||||
.Bd -literal -offset indent
|
||||
if_ath_load="YES"
|
||||
if_ath_pci_load="YES"
|
||||
.Ed
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
@ -65,19 +63,6 @@ Supported features include 802.11 and 802.3 frames, power management, BSS,
|
||||
IBSS, MBSS, WDS/DWDS TDMA, and host-based access point operation modes.
|
||||
All host/device interaction is via DMA.
|
||||
.Pp
|
||||
Please note that from FreeBSD-9.0, the
|
||||
.Nm
|
||||
driver does not include the PCI/PCIe bus glue.
|
||||
The same driver supports multiple underlying bus types, including PCI/PCIe,
|
||||
but also embedded (AHB) and USB in the future.
|
||||
.Pp
|
||||
To enable use for PCI/PCIe systems, see the
|
||||
.Xr ath_pci 4
|
||||
driver.
|
||||
For embedded systems which use the AHB to connect the wireless MAC, see the
|
||||
.Xr ath_ahb 4
|
||||
driver.
|
||||
.Pp
|
||||
The
|
||||
.Nm
|
||||
driver encapsulates all IP and ARP traffic as 802.11 frames, however
|
||||
|
@ -1,60 +0,0 @@
|
||||
.\"-
|
||||
.\" Copyright (c) 2011 Adrian Chadd, Xenion Pty Ltd
|
||||
.\" All rights reserved.
|
||||
.\""
|
||||
.\" Redistribution and use in source and binary forms, with or without
|
||||
.\" modification, are permitted provided that the following conditions
|
||||
.\" are met:
|
||||
.\" 1. Redistributions of source code must retain the above copyright
|
||||
.\" notice, this list of conditions and the following disclaimer,
|
||||
.\" without modification.
|
||||
.\" 2. Redistributions in binary form must reproduce at minimum a disclaimer
|
||||
.\" similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any
|
||||
.\" redistribution must be conditioned upon including a substantially
|
||||
.\" similar Disclaimer requirement for further binary redistribution.
|
||||
.\"
|
||||
.\" NO WARRANTY
|
||||
.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
.\" LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY
|
||||
.\" AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||
.\" THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY,
|
||||
.\" OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
|
||||
.\" IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
||||
.\" THE POSSIBILITY OF SUCH DAMAGES.
|
||||
.\"
|
||||
.\" $FreeBSD$
|
||||
.\"/
|
||||
.Dd May 30, 2011
|
||||
.Dt ATH_AHB 4
|
||||
.Os
|
||||
.Sh NAME
|
||||
.Nm ath_ahb
|
||||
.Nd "Atheros AHB device glue"
|
||||
.Sh SYNOPSIS
|
||||
.Cd "device ath_ahb"
|
||||
.Sh DESCRIPTION
|
||||
This module provides the AHB bus glue needed for the devices supported
|
||||
by the
|
||||
.Xr ath 4
|
||||
and
|
||||
.Xr ath_hal 4
|
||||
drivers.
|
||||
.Pp
|
||||
This is only relevant for embedded System-on-Chip (SoC) devices such as
|
||||
the Atheros AR913x series, which include an Atheros wireless MAC on-die.
|
||||
.Sh SEE ALSO
|
||||
.Xr ath 4 ,
|
||||
.Xr ath_hal 4
|
||||
.Sh HISTORY
|
||||
The
|
||||
.Nm
|
||||
module first appeared in
|
||||
.Fx 9.0 .
|
||||
.Sh BUGS
|
||||
See
|
||||
.Xr ath 4
|
||||
for known bugs.
|
@ -1,57 +0,0 @@
|
||||
.\"-
|
||||
.\" Copyright (c) 2011 Adrian Chadd, Xenion Pty Ltd
|
||||
.\" All rights reserved.
|
||||
.\""
|
||||
.\" Redistribution and use in source and binary forms, with or without
|
||||
.\" modification, are permitted provided that the following conditions
|
||||
.\" are met:
|
||||
.\" 1. Redistributions of source code must retain the above copyright
|
||||
.\" notice, this list of conditions and the following disclaimer,
|
||||
.\" without modification.
|
||||
.\" 2. Redistributions in binary form must reproduce at minimum a disclaimer
|
||||
.\" similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any
|
||||
.\" redistribution must be conditioned upon including a substantially
|
||||
.\" similar Disclaimer requirement for further binary redistribution.
|
||||
.\"
|
||||
.\" NO WARRANTY
|
||||
.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
.\" LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY
|
||||
.\" AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||
.\" THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY,
|
||||
.\" OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
|
||||
.\" IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
||||
.\" THE POSSIBILITY OF SUCH DAMAGES.
|
||||
.\"
|
||||
.\" $FreeBSD$
|
||||
.\"/
|
||||
.Dd May 30, 2011
|
||||
.Dt ATH_PCI 4
|
||||
.Os
|
||||
.Sh NAME
|
||||
.Nm ath_pci
|
||||
.Nd "Atheros PCI device glue"
|
||||
.Sh SYNOPSIS
|
||||
.Cd "device ath_pci"
|
||||
.Sh DESCRIPTION
|
||||
This module provides the PCI/PCIe bus glue needed for the devices supported
|
||||
by the
|
||||
.Xr ath 4
|
||||
and
|
||||
.Xr ath_hal 4
|
||||
drivers.
|
||||
.Sh SEE ALSO
|
||||
.Xr ath 4 ,
|
||||
.Xr ath_hal 4
|
||||
.Sh HISTORY
|
||||
The
|
||||
.Nm
|
||||
module first appeared in
|
||||
.Fx 9.0 .
|
||||
.Sh BUGS
|
||||
See
|
||||
.Xr ath 4
|
||||
for known bugs.
|
@ -303,9 +303,8 @@ device wlan_wep # 802.11 WEP support
|
||||
device wlan_ccmp # 802.11 CCMP support
|
||||
device wlan_tkip # 802.11 TKIP support
|
||||
device wlan_amrr # AMRR transmit rate control algorithm
|
||||
device ath # Atheros NICs
|
||||
device ath_pci # Atheros pci/cardbus glue
|
||||
device ath_hal # pci/cardbus chip support
|
||||
device ath # Atheros CardBus/PCI NICs
|
||||
device ath_hal # Atheros CardBus/PCI chip support
|
||||
options AH_AR5416_INTERRUPT_MITIGATION # AR5416 interrupt mitigation
|
||||
options ATH_ENABLE_11N # Enable 802.11n support for AR5416 and later
|
||||
device ath_rate_sample # SampleRate tx rate control for ath
|
||||
|
@ -88,8 +88,7 @@ device mv_spi
|
||||
|
||||
# Wireless NIC cards
|
||||
device wlan # 802.11 support
|
||||
device ath # Atheros NIC's
|
||||
device ath_pci # Atheros pci/cardbus glue
|
||||
device ath # Atheros CardBus/PCI NICs
|
||||
device ath_hal
|
||||
device ath_rate_sample
|
||||
options ATH_ENABLE_11N
|
||||
|
@ -892,12 +892,6 @@ dev/ata/chipsets/ata-siliconimage.c optional ata pci | atasiliconimage | ataati
|
||||
dev/ata/chipsets/ata-sis.c optional ata pci | atasis
|
||||
dev/ata/chipsets/ata-via.c optional ata pci | atavia
|
||||
#
|
||||
dev/ath/if_ath_pci.c optional ath_pci pci \
|
||||
compile-with "${ATH_C}"
|
||||
#
|
||||
dev/ath/if_ath_ahb.c optional ath_ahb \
|
||||
compile-with "${ATH_C}"
|
||||
#
|
||||
dev/ath/if_ath.c optional ath \
|
||||
compile-with "${ATH_C}"
|
||||
dev/ath/if_ath_alq.c optional ath \
|
||||
@ -920,6 +914,8 @@ dev/ath/if_ath_led.c optional ath \
|
||||
compile-with "${ATH_C}"
|
||||
dev/ath/if_ath_lna_div.c optional ath \
|
||||
compile-with "${ATH_C}"
|
||||
dev/ath/if_ath_pci.c optional ath pci \
|
||||
compile-with "${ATH_C}"
|
||||
dev/ath/if_ath_tx.c optional ath \
|
||||
compile-with "${ATH_C}"
|
||||
dev/ath/if_ath_tx_edma.c optional ath \
|
||||
|
@ -1,353 +0,0 @@
|
||||
/*-
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*
|
||||
* Copyright (c) 2002-2008 Sam Leffler, Errno Consulting
|
||||
* Copyright (c) 2010-2011 Adrian Chadd, Xenion Pty Ltd
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer,
|
||||
* without modification.
|
||||
* 2. Redistributions in binary form must reproduce at minimum a disclaimer
|
||||
* similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any
|
||||
* redistribution must be conditioned upon including a substantially
|
||||
* similar Disclaimer requirement for further binary redistribution.
|
||||
*
|
||||
* NO WARRANTY
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY
|
||||
* AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||
* THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY,
|
||||
* OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
|
||||
* IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGES.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD$");
|
||||
|
||||
/*
|
||||
* AHB bus front-end for the Atheros Wireless LAN controller driver.
|
||||
*/
|
||||
|
||||
#include "opt_ath.h"
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/systm.h>
|
||||
#include <sys/malloc.h>
|
||||
#include <sys/module.h>
|
||||
#include <sys/kernel.h>
|
||||
#include <sys/lock.h>
|
||||
#include <sys/mutex.h>
|
||||
#include <sys/errno.h>
|
||||
|
||||
#include <machine/bus.h>
|
||||
#include <machine/resource.h>
|
||||
#include <sys/bus.h>
|
||||
#include <sys/rman.h>
|
||||
|
||||
#include <sys/socket.h>
|
||||
|
||||
#include <net/if.h>
|
||||
#include <net/if_media.h>
|
||||
#include <net/if_arp.h>
|
||||
#include <net/ethernet.h>
|
||||
|
||||
#include <net80211/ieee80211_var.h>
|
||||
|
||||
#include <dev/ath/if_athvar.h>
|
||||
|
||||
#include <mips/atheros/ar71xxreg.h>
|
||||
#include <mips/atheros/ar91xxreg.h>
|
||||
#include <mips/atheros/ar71xx_cpudef.h>
|
||||
|
||||
/* For EEPROM firmware */
|
||||
#ifdef ATH_EEPROM_FIRMWARE
|
||||
#include <sys/linker.h>
|
||||
#include <sys/firmware.h>
|
||||
#endif /* ATH_EEPROM_FIRMWARE */
|
||||
|
||||
/*
|
||||
* bus glue.
|
||||
*/
|
||||
|
||||
/* number of 16 bit words */
|
||||
#define ATH_EEPROM_DATA_SIZE 2048
|
||||
|
||||
struct ath_ahb_softc {
|
||||
struct ath_softc sc_sc;
|
||||
struct resource *sc_sr; /* memory resource */
|
||||
struct resource *sc_irq; /* irq resource */
|
||||
void *sc_ih; /* interrupt handler */
|
||||
};
|
||||
|
||||
#define VENDOR_ATHEROS 0x168c
|
||||
#define AR9130_DEVID 0x000b
|
||||
|
||||
static int
|
||||
ath_ahb_probe(device_t dev)
|
||||
{
|
||||
int vendor_id, device_id;
|
||||
const char* devname;
|
||||
|
||||
/*
|
||||
* Check if a device/vendor ID is provided in hints.
|
||||
*/
|
||||
if (resource_int_value(device_get_name(dev), device_get_unit(dev),
|
||||
"vendor_id", &vendor_id) != 0) {
|
||||
vendor_id = VENDOR_ATHEROS;
|
||||
}
|
||||
|
||||
if (resource_int_value(device_get_name(dev), device_get_unit(dev),
|
||||
"device_id", &device_id) != 0) {
|
||||
device_id = AR9130_DEVID;
|
||||
}
|
||||
|
||||
device_printf(dev, "Vendor=0x%04x, Device=0x%04x\n",
|
||||
vendor_id & 0xffff,
|
||||
device_id & 0xffff);
|
||||
|
||||
/* Attempt to probe */
|
||||
devname = ath_hal_probe(vendor_id, device_id);
|
||||
|
||||
if (devname != NULL) {
|
||||
device_set_desc(dev, devname);
|
||||
return BUS_PROBE_DEFAULT;
|
||||
}
|
||||
return ENXIO;
|
||||
}
|
||||
|
||||
static void
|
||||
ath_ahb_intr(void *arg)
|
||||
{
|
||||
/* XXX TODO: check if its ours! */
|
||||
ar71xx_device_flush_ddr(AR71XX_CPU_DDR_FLUSH_WMAC);
|
||||
ath_intr(arg);
|
||||
}
|
||||
|
||||
static int
|
||||
ath_ahb_attach(device_t dev)
|
||||
{
|
||||
struct ath_ahb_softc *psc = device_get_softc(dev);
|
||||
struct ath_softc *sc = &psc->sc_sc;
|
||||
int error = ENXIO;
|
||||
int rid;
|
||||
int device_id, vendor_id;
|
||||
#ifdef ATH_EEPROM_FIRMWARE
|
||||
const struct firmware *fw = NULL;
|
||||
const char *buf;
|
||||
#endif
|
||||
|
||||
sc->sc_dev = dev;
|
||||
|
||||
rid = 0;
|
||||
psc->sc_sr = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, RF_ACTIVE);
|
||||
if (psc->sc_sr == NULL) {
|
||||
device_printf(dev, "cannot map register space\n");
|
||||
goto bad;
|
||||
}
|
||||
|
||||
sc->sc_st = (HAL_BUS_TAG) rman_get_bustag(psc->sc_sr);
|
||||
sc->sc_sh = (HAL_BUS_HANDLE) rman_get_bushandle(psc->sc_sr);
|
||||
/*
|
||||
* Mark device invalid so any interrupts (shared or otherwise)
|
||||
* that arrive before the HAL is setup are discarded.
|
||||
*/
|
||||
sc->sc_invalid = 1;
|
||||
|
||||
#ifdef ATH_EEPROM_FIRMWARE
|
||||
/*
|
||||
* If there's an EEPROM firmware image, load that in.
|
||||
*/
|
||||
if (resource_string_value(device_get_name(dev), device_get_unit(dev),
|
||||
"eeprom_firmware", &buf) == 0) {
|
||||
device_printf(dev, "%s: looking up firmware @ '%s'\n",
|
||||
__func__, buf);
|
||||
|
||||
fw = firmware_get(buf);
|
||||
if (fw == NULL) {
|
||||
device_printf(dev, "%s: couldn't find firmware\n",
|
||||
__func__);
|
||||
goto bad1;
|
||||
}
|
||||
|
||||
device_printf(dev, "%s: EEPROM firmware @ %p\n",
|
||||
__func__, fw->data);
|
||||
sc->sc_eepromdata =
|
||||
malloc(fw->datasize, M_TEMP, M_WAITOK | M_ZERO);
|
||||
if (! sc->sc_eepromdata) {
|
||||
device_printf(dev, "%s: can't malloc eepromdata\n",
|
||||
__func__);
|
||||
goto bad1;
|
||||
}
|
||||
memcpy(sc->sc_eepromdata, fw->data, fw->datasize);
|
||||
firmware_put(fw, 0);
|
||||
}
|
||||
#endif /* ATH_EEPROM_FIRMWARE */
|
||||
|
||||
/*
|
||||
* Arrange interrupt line.
|
||||
*/
|
||||
rid = 0;
|
||||
psc->sc_irq = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid, RF_SHAREABLE|RF_ACTIVE);
|
||||
if (psc->sc_irq == NULL) {
|
||||
device_printf(dev, "could not map interrupt\n");
|
||||
goto bad1;
|
||||
}
|
||||
if (bus_setup_intr(dev, psc->sc_irq,
|
||||
INTR_TYPE_NET | INTR_MPSAFE,
|
||||
NULL, ath_ahb_intr, sc, &psc->sc_ih)) {
|
||||
device_printf(dev, "could not establish interrupt\n");
|
||||
goto bad2;
|
||||
}
|
||||
|
||||
/*
|
||||
* Setup DMA descriptor area.
|
||||
*/
|
||||
if (bus_dma_tag_create(bus_get_dma_tag(dev), /* parent */
|
||||
1, 0, /* alignment, bounds */
|
||||
BUS_SPACE_MAXADDR_32BIT, /* lowaddr */
|
||||
BUS_SPACE_MAXADDR, /* highaddr */
|
||||
NULL, NULL, /* filter, filterarg */
|
||||
0x3ffff, /* maxsize XXX */
|
||||
ATH_MAX_SCATTER, /* nsegments */
|
||||
0x3ffff, /* maxsegsize XXX */
|
||||
BUS_DMA_ALLOCNOW, /* flags */
|
||||
NULL, /* lockfunc */
|
||||
NULL, /* lockarg */
|
||||
&sc->sc_dmat)) {
|
||||
device_printf(dev, "cannot allocate DMA tag\n");
|
||||
goto bad3;
|
||||
}
|
||||
|
||||
/*
|
||||
* Check if a device/vendor ID is provided in hints.
|
||||
*/
|
||||
if (resource_int_value(device_get_name(dev), device_get_unit(dev),
|
||||
"vendor_id", &vendor_id) != 0) {
|
||||
vendor_id = VENDOR_ATHEROS;
|
||||
}
|
||||
|
||||
if (resource_int_value(device_get_name(dev), device_get_unit(dev),
|
||||
"device_id", &device_id) != 0) {
|
||||
device_id = AR9130_DEVID;
|
||||
}
|
||||
|
||||
ATH_LOCK_INIT(sc);
|
||||
ATH_PCU_LOCK_INIT(sc);
|
||||
ATH_RX_LOCK_INIT(sc);
|
||||
ATH_TX_LOCK_INIT(sc);
|
||||
ATH_TXSTATUS_LOCK_INIT(sc);
|
||||
|
||||
error = ath_attach(device_id, sc);
|
||||
if (error == 0) /* success */
|
||||
return 0;
|
||||
|
||||
ATH_TXSTATUS_LOCK_DESTROY(sc);
|
||||
ATH_RX_LOCK_DESTROY(sc);
|
||||
ATH_TX_LOCK_DESTROY(sc);
|
||||
ATH_PCU_LOCK_DESTROY(sc);
|
||||
ATH_LOCK_DESTROY(sc);
|
||||
bus_dma_tag_destroy(sc->sc_dmat);
|
||||
bad3:
|
||||
bus_teardown_intr(dev, psc->sc_irq, psc->sc_ih);
|
||||
bad2:
|
||||
bus_release_resource(dev, SYS_RES_IRQ, 0, psc->sc_irq);
|
||||
bad1:
|
||||
bus_release_resource(dev, SYS_RES_MEMORY, 0, psc->sc_sr);
|
||||
bad:
|
||||
/* XXX?! */
|
||||
if (sc->sc_eepromdata)
|
||||
free(sc->sc_eepromdata, M_TEMP);
|
||||
return (error);
|
||||
}
|
||||
|
||||
static int
|
||||
ath_ahb_detach(device_t dev)
|
||||
{
|
||||
struct ath_ahb_softc *psc = device_get_softc(dev);
|
||||
struct ath_softc *sc = &psc->sc_sc;
|
||||
|
||||
/* check if device was removed */
|
||||
sc->sc_invalid = !bus_child_present(dev);
|
||||
|
||||
ath_detach(sc);
|
||||
|
||||
bus_generic_detach(dev);
|
||||
bus_teardown_intr(dev, psc->sc_irq, psc->sc_ih);
|
||||
bus_release_resource(dev, SYS_RES_IRQ, 0, psc->sc_irq);
|
||||
|
||||
bus_dma_tag_destroy(sc->sc_dmat);
|
||||
bus_release_resource(dev, SYS_RES_MEMORY, 0, psc->sc_sr);
|
||||
/* XXX?! */
|
||||
if (sc->sc_eepromdata)
|
||||
free(sc->sc_eepromdata, M_TEMP);
|
||||
|
||||
ATH_TXSTATUS_LOCK_DESTROY(sc);
|
||||
ATH_RX_LOCK_DESTROY(sc);
|
||||
ATH_TX_LOCK_DESTROY(sc);
|
||||
ATH_PCU_LOCK_DESTROY(sc);
|
||||
ATH_LOCK_DESTROY(sc);
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
static int
|
||||
ath_ahb_shutdown(device_t dev)
|
||||
{
|
||||
struct ath_ahb_softc *psc = device_get_softc(dev);
|
||||
|
||||
ath_shutdown(&psc->sc_sc);
|
||||
return (0);
|
||||
}
|
||||
|
||||
static int
|
||||
ath_ahb_suspend(device_t dev)
|
||||
{
|
||||
struct ath_ahb_softc *psc = device_get_softc(dev);
|
||||
|
||||
ath_suspend(&psc->sc_sc);
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
static int
|
||||
ath_ahb_resume(device_t dev)
|
||||
{
|
||||
struct ath_ahb_softc *psc = device_get_softc(dev);
|
||||
|
||||
ath_resume(&psc->sc_sc);
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
static device_method_t ath_ahb_methods[] = {
|
||||
/* Device interface */
|
||||
DEVMETHOD(device_probe, ath_ahb_probe),
|
||||
DEVMETHOD(device_attach, ath_ahb_attach),
|
||||
DEVMETHOD(device_detach, ath_ahb_detach),
|
||||
DEVMETHOD(device_shutdown, ath_ahb_shutdown),
|
||||
DEVMETHOD(device_suspend, ath_ahb_suspend),
|
||||
DEVMETHOD(device_resume, ath_ahb_resume),
|
||||
{ 0,0 }
|
||||
};
|
||||
|
||||
static driver_t ath_ahb_driver = {
|
||||
"ath",
|
||||
ath_ahb_methods,
|
||||
sizeof (struct ath_ahb_softc)
|
||||
};
|
||||
|
||||
DRIVER_MODULE(if_ath_ahb, nexus, ath_ahb_driver, 0, 0);
|
||||
DRIVER_MODULE(if_ath_ahb, apb, ath_ahb_driver, 0, 0);
|
||||
MODULE_VERSION(if_ath_ahb, 1);
|
||||
MODULE_DEPEND(if_ath_ahb, wlan, 1, 1, 1); /* 802.11 media layer */
|
||||
MODULE_DEPEND(if_ath_ahb, ath_main, 1, 1, 1); /* if_ath driver */
|
||||
MODULE_DEPEND(if_ath_ahb, ath_hal, 1, 1, 1); /* ath HAL */
|
@ -259,9 +259,8 @@ device wlan_wep # 802.11 WEP support
|
||||
device wlan_ccmp # 802.11 CCMP support
|
||||
device wlan_tkip # 802.11 TKIP support
|
||||
device wlan_amrr # AMRR transmit rate control algorithm
|
||||
device ath # Atheros NICs
|
||||
device ath_pci # Atheros pci/cardbus glue
|
||||
device ath_hal # pci/cardbus chip support
|
||||
device ath # Atheros CardBus/PCI NICs
|
||||
device ath_hal # Atheros CardBus/PCI chip support
|
||||
options AH_AR5416_INTERRUPT_MITIGATION # AR5416 interrupt mitigation
|
||||
options ATH_ENABLE_11N # Enable 802.11n support for AR5416 and later
|
||||
device ath_rate_sample # SampleRate tx rate control for ath
|
||||
|
@ -54,7 +54,6 @@ SUBDIR= \
|
||||
ath_hal_ar9300 \
|
||||
ath_main \
|
||||
ath_rate \
|
||||
ath_pci \
|
||||
${_autofs} \
|
||||
axgbe \
|
||||
backlight \
|
||||
|
@ -1,43 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 2011 Adrian Chadd, Xenion Pty Ltd
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
# are met:
|
||||
# 1. Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer,
|
||||
# without modification.
|
||||
# 2. Redistributions in binary form must reproduce at minimum a disclaimer
|
||||
# similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any
|
||||
# redistribution must be conditioned upon including a substantially
|
||||
# similar Disclaimer requirement for further binary redistribution.
|
||||
#
|
||||
# NO WARRANTY
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
# LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY
|
||||
# AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||
# THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY,
|
||||
# OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
|
||||
# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
||||
# THE POSSIBILITY OF SUCH DAMAGES.
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
|
||||
.PATH: ${SRCTOP}/sys/dev/ath
|
||||
.PATH: ${SRCTOP}/sys/dev/ath/ath_hal
|
||||
|
||||
KMOD= if_ath_ahb
|
||||
SRCS= if_ath_ahb.c
|
||||
SRCS+= device_if.h bus_if.h opt_wlan.h opt_ath.h opt_ah.h
|
||||
|
||||
CFLAGS+= -I. -I${SRCTOP}/sys/dev/ath -I${SRCTOP}/sys/dev/ath/ath_hal
|
||||
|
||||
.include <bsd.kmod.mk>
|
||||
|
||||
CWARNFLAGS+= ${NO_WUNUSED_BUT_SET_VARIABLE}
|
@ -39,6 +39,7 @@ SRCS= if_ath.c if_ath_alq.c if_ath_debug.c if_ath_keycache.c if_ath_sysctl.c
|
||||
SRCS+= if_ath_tx.c if_ath_tx_ht.c if_ath_led.c if_ath_rx.c if_ath_tdma.c
|
||||
SRCS+= if_ath_beacon.c if_ath_rx_edma.c if_ath_tx_edma.c if_ath_spectral.c
|
||||
SRCS+= if_ath_btcoex.c if_ath_btcoex_mci.c if_ath_lna_div.c if_ath_ioctl.c if_ath_descdma.c
|
||||
SRCS+= if_ath_pci.c
|
||||
|
||||
SRCS+= device_if.h bus_if.h pci_if.h opt_inet.h opt_ath.h opt_ah.h opt_wlan.h
|
||||
|
||||
|
@ -1,43 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 2011 Adrian Chadd, Xenion Pty Ltd
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
# are met:
|
||||
# 1. Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer,
|
||||
# without modification.
|
||||
# 2. Redistributions in binary form must reproduce at minimum a disclaimer
|
||||
# similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any
|
||||
# redistribution must be conditioned upon including a substantially
|
||||
# similar Disclaimer requirement for further binary redistribution.
|
||||
#
|
||||
# NO WARRANTY
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
# LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY
|
||||
# AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||
# THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY,
|
||||
# OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
|
||||
# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
||||
# THE POSSIBILITY OF SUCH DAMAGES.
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
|
||||
.PATH: ${SRCTOP}/sys/dev/ath
|
||||
.PATH: ${SRCTOP}/sys/dev/ath/ath_hal
|
||||
|
||||
KMOD= if_ath_pci
|
||||
SRCS= if_ath_pci.c
|
||||
SRCS+= device_if.h bus_if.h pci_if.h opt_wlan.h opt_ath.h opt_ah.h
|
||||
|
||||
CFLAGS+= -I. -I${SRCTOP}/sys/dev/ath -I${SRCTOP}/sys/dev/ath/ath_hal
|
||||
|
||||
.include <bsd.kmod.mk>
|
||||
|
||||
CWARNFLAGS+= ${NO_WUNUSED_BUT_SET_VARIABLE}
|
@ -241,9 +241,8 @@ device wlan_wep # 802.11 WEP support
|
||||
device wlan_ccmp # 802.11 CCMP support
|
||||
device wlan_tkip # 802.11 TKIP support
|
||||
device wlan_amrr # AMRR transmit rate control algorithm
|
||||
device ath # Atheros NICs
|
||||
device ath_pci # Atheros pci/cardbus glue
|
||||
device ath_hal # pci/cardbus chip support
|
||||
device ath # Atheros CardBus/PCI NICs
|
||||
device ath_hal # Atheros CardBus/PCI chip support
|
||||
options AH_AR5416_INTERRUPT_MITIGATION # AR5416 interrupt mitigation
|
||||
options ATH_ENABLE_11N # Enable 802.11n support for AR5416 and later
|
||||
device ath_rate_sample # SampleRate tx rate control for ath
|
||||
|
@ -237,9 +237,8 @@ device wlan_wep # 802.11 WEP support
|
||||
device wlan_ccmp # 802.11 CCMP support
|
||||
device wlan_tkip # 802.11 TKIP support
|
||||
device wlan_amrr # AMRR transmit rate control algorithm
|
||||
device ath # Atheros NICs
|
||||
device ath_pci # Atheros pci/cardbus glue
|
||||
device ath_hal # pci/cardbus chip support
|
||||
device ath # Atheros CardBus/PCI NICs
|
||||
device ath_hal # Atheros CardBus/PCI chip support
|
||||
options AH_AR5416_INTERRUPT_MITIGATION # AR5416 interrupt mitigation
|
||||
options ATH_ENABLE_11N # Enable 802.11n support for AR5416 and later
|
||||
device ath_rate_sample # SampleRate tx rate control for ath
|
||||
|
Loading…
Reference in New Issue
Block a user