ar71xx: remove AP83 reference design board support

This board is very old and unlikely to still be relevant today. Support
for it contains a significant amount of device specific baggage which is
worth getting rid of.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
Felix Fietkau 2016-12-08 21:46:15 +01:00
parent fa04682f21
commit 441ee62931
19 changed files with 3 additions and 690 deletions

View File

@ -34,32 +34,6 @@ define Package/vsc73x5/install
$(INSTALL_DATA) $(PKG_BUILD_DIR)/$(2) $(1)/lib/firmware/$(3) $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(2) $(1)/lib/firmware/$(3)
endef endef
define Package/vsc7385-ucode-ap83
$(call Package/vsc73x5-defaults,Vitesse VSC7385 microcode for the Atheros AP83 boards)
endef
define Package/vsc7385-ucode-ap83/description
This package contains the Atheros AP83 board specific microcode for
the Vitesse VSC7385 ethernet switch.
endef
define Package/vsc7385-ucode-ap83/install
$(call Package/vsc73x5/install,$(1),g5_Plus1_2_31_unmanaged_Atheros_v3.bin,vsc7385_ucode_ap83.bin)
endef
define Package/vsc7395-ucode-ap83
$(call Package/vsc73x5-defaults, Vitesse VSC7395 microcode for the Atheros AP83 boards)
endef
define Package/vsc7395-ucode-ap83/description
This package contains the Atheros AP83 board specific microcode for
the Vitesse VSC7395 ethernet switch.
endef
define Package/vsc7395-ucode-ap83/install
$(call Package/vsc73x5/install,$(1),g5_Plus1_2_31_unmanaged_Atheros_v4.bin,vsc7395_ucode_ap83.bin)
endef
define Package/vsc7385-ucode-pb44 define Package/vsc7385-ucode-pb44
$(call Package/vsc73x5-defaults, Vitesse VSC7395 microcode for the Atheros PB44 boards) $(call Package/vsc73x5-defaults, Vitesse VSC7395 microcode for the Atheros PB44 boards)
endef endef
@ -78,7 +52,7 @@ define Package/vsc7395-ucode-pb44
endef endef
define Package/vsc7395-ucode-pb44/description define Package/vsc7395-ucode-pb44/description
This package contains the Atheros AP83 board specific microcode for This package contains the Atheros PB44 board specific microcode for
the Vitesse VSC7395 ethernet switch. the Vitesse VSC7395 ethernet switch.
endef endef
@ -90,7 +64,5 @@ define Build/Compile
endef endef
$(eval $(call BuildPackage,vsc7385-ucode-ap83))
$(eval $(call BuildPackage,vsc7395-ucode-ap83))
$(eval $(call BuildPackage,vsc7385-ucode-pb44)) $(eval $(call BuildPackage,vsc7385-ucode-pb44))
$(eval $(call BuildPackage,vsc7395-ucode-pb44)) $(eval $(call BuildPackage,vsc7395-ucode-pb44))

View File

@ -119,7 +119,6 @@ ar71xx_setup_interfaces()
;; ;;
alfa-ap96|\ alfa-ap96|\
alfa-nx|\ alfa-nx|\
ap83|\
gl-ar150|\ gl-ar150|\
gl-ar300m|\ gl-ar300m|\
gl-domino|\ gl-domino|\

View File

@ -42,7 +42,6 @@ get_status_led() {
ap135-020) ap135-020)
status_led="ap135:green:status" status_led="ap135:green:status"
;; ;;
ap83|\
mr12|\ mr12|\
mr16|\ mr16|\
nbg6616|\ nbg6616|\

View File

@ -468,9 +468,6 @@ ar71xx_board_detect() {
*AP81) *AP81)
name="ap81" name="ap81"
;; ;;
*AP83)
name="ap83"
;;
*AP90Q) *AP90Q)
name="ap90q" name="ap90q"
;; ;;

View File

@ -13,7 +13,6 @@ set_preinit_iface() {
ap135-020 |\ ap135-020 |\
ap136-020 |\ ap136-020 |\
ap147-010 |\ ap147-010 |\
ap83 |\
archer-c5 |\ archer-c5 |\
archer-c7 |\ archer-c7 |\
bhr-4grv2 |\ bhr-4grv2 |\

View File

@ -177,7 +177,6 @@ platform_check_image() {
airrouter|\ airrouter|\
ap132|\ ap132|\
ap81|\ ap81|\
ap83|\
ap90q|\ ap90q|\
bullet-m|\ bullet-m|\
c-55|\ c-55|\

View File

@ -48,7 +48,6 @@ CONFIG_ATH79_MACH_AP143=y
CONFIG_ATH79_MACH_AP147=y CONFIG_ATH79_MACH_AP147=y
CONFIG_ATH79_MACH_AP152=y CONFIG_ATH79_MACH_AP152=y
CONFIG_ATH79_MACH_AP81=y CONFIG_ATH79_MACH_AP81=y
CONFIG_ATH79_MACH_AP83=y
CONFIG_ATH79_MACH_AP90Q=y CONFIG_ATH79_MACH_AP90Q=y
CONFIG_ATH79_MACH_AP96=y CONFIG_ATH79_MACH_AP96=y
CONFIG_ATH79_MACH_ARCHER_C7=y CONFIG_ATH79_MACH_ARCHER_C7=y
@ -422,7 +421,6 @@ CONFIG_SOC_QCA953X=y
CONFIG_SOC_QCA955X=y CONFIG_SOC_QCA955X=y
CONFIG_SOC_QCA956X=y CONFIG_SOC_QCA956X=y
CONFIG_SPI=y CONFIG_SPI=y
CONFIG_SPI_AP83=y
CONFIG_SPI_ATH79=y CONFIG_SPI_ATH79=y
CONFIG_SPI_BITBANG=y CONFIG_SPI_BITBANG=y
CONFIG_SPI_MASTER=y CONFIG_SPI_MASTER=y

View File

@ -166,14 +166,6 @@ config ATH79_MACH_AP152
QCA AP152 reference boards. QCA AP152 reference boards.
config ATH79_MACH_AP83
bool "Atheros AP83 board support"
select SOC_AR913X
select ATH79_DEV_GPIO_BUTTONS
select ATH79_DEV_LEDS_GPIO
select ATH79_DEV_USB
select ATH79_DEV_WMAC
config ATH79_MACH_AP90Q config ATH79_MACH_AP90Q
bool "YunCore AP90Q support" bool "YunCore AP90Q support"
select SOC_QCA953X select SOC_QCA953X

View File

@ -54,7 +54,6 @@ obj-$(CONFIG_ATH79_MACH_AP143) += mach-ap143.o
obj-$(CONFIG_ATH79_MACH_AP147) += mach-ap147.o obj-$(CONFIG_ATH79_MACH_AP147) += mach-ap147.o
obj-$(CONFIG_ATH79_MACH_AP152) += mach-ap152.o obj-$(CONFIG_ATH79_MACH_AP152) += mach-ap152.o
obj-$(CONFIG_ATH79_MACH_AP81) += mach-ap81.o obj-$(CONFIG_ATH79_MACH_AP81) += mach-ap81.o
obj-$(CONFIG_ATH79_MACH_AP83) += mach-ap83.o
obj-$(CONFIG_ATH79_MACH_AP90Q) += mach-ap90q.o obj-$(CONFIG_ATH79_MACH_AP90Q) += mach-ap90q.o
obj-$(CONFIG_ATH79_MACH_AP96) += mach-ap96.o obj-$(CONFIG_ATH79_MACH_AP96) += mach-ap96.o
obj-$(CONFIG_ATH79_MACH_ARCHER_C7) += mach-archer-c7.o obj-$(CONFIG_ATH79_MACH_ARCHER_C7) += mach-archer-c7.o

View File

@ -1,275 +0,0 @@
/*
* Atheros AP83 board support
*
* Copyright (C) 2008-2012 Gabor Juhos <juhosg@openwrt.org>
* Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 as published
* by the Free Software Foundation.
*/
#include <linux/delay.h>
#include <linux/platform_device.h>
#include <linux/mtd/mtd.h>
#include <linux/mtd/partitions.h>
#include <linux/mtd/physmap.h>
#include <linux/spi/spi.h>
#include <linux/spi/spi_gpio.h>
#include <linux/spi/vsc7385.h>
#include <asm/mach-ath79/ar71xx_regs.h>
#include <asm/mach-ath79/ath79.h>
#include "dev-eth.h"
#include "dev-gpio-buttons.h"
#include "dev-leds-gpio.h"
#include "dev-usb.h"
#include "dev-wmac.h"
#include "machtypes.h"
#define AP83_GPIO_LED_WLAN 6
#define AP83_GPIO_LED_POWER 14
#define AP83_GPIO_LED_JUMPSTART 15
#define AP83_GPIO_BTN_JUMPSTART 12
#define AP83_GPIO_BTN_RESET 21
#define AP83_050_GPIO_VSC7385_CS 1
#define AP83_050_GPIO_VSC7385_MISO 3
#define AP83_050_GPIO_VSC7385_MOSI 16
#define AP83_050_GPIO_VSC7385_SCK 17
#define AP83_KEYS_POLL_INTERVAL 20 /* msecs */
#define AP83_KEYS_DEBOUNCE_INTERVAL (3 * AP83_KEYS_POLL_INTERVAL)
static struct mtd_partition ap83_flash_partitions[] = {
{
.name = "u-boot",
.offset = 0,
.size = 0x040000,
.mask_flags = MTD_WRITEABLE,
}, {
.name = "u-boot-env",
.offset = 0x040000,
.size = 0x020000,
.mask_flags = MTD_WRITEABLE,
}, {
.name = "kernel",
.offset = 0x060000,
.size = 0x140000,
}, {
.name = "rootfs",
.offset = 0x1a0000,
.size = 0x650000,
}, {
.name = "art",
.offset = 0x7f0000,
.size = 0x010000,
.mask_flags = MTD_WRITEABLE,
}, {
.name = "firmware",
.offset = 0x060000,
.size = 0x790000,
}
};
static struct physmap_flash_data ap83_flash_data = {
.width = 2,
.parts = ap83_flash_partitions,
.nr_parts = ARRAY_SIZE(ap83_flash_partitions),
};
static struct resource ap83_flash_resources[] = {
[0] = {
.start = AR71XX_SPI_BASE,
.end = AR71XX_SPI_BASE + AR71XX_SPI_SIZE - 1,
.flags = IORESOURCE_MEM,
},
};
static struct platform_device ap83_flash_device = {
.name = "ar91xx-flash",
.id = -1,
.resource = ap83_flash_resources,
.num_resources = ARRAY_SIZE(ap83_flash_resources),
.dev = {
.platform_data = &ap83_flash_data,
}
};
static struct gpio_led ap83_leds_gpio[] __initdata = {
{
.name = "ap83:green:jumpstart",
.gpio = AP83_GPIO_LED_JUMPSTART,
.active_low = 0,
}, {
.name = "ap83:green:power",
.gpio = AP83_GPIO_LED_POWER,
.active_low = 0,
}, {
.name = "ap83:green:wlan",
.gpio = AP83_GPIO_LED_WLAN,
.active_low = 0,
},
};
static struct gpio_keys_button ap83_gpio_keys[] __initdata = {
{
.desc = "soft_reset",
.type = EV_KEY,
.code = KEY_RESTART,
.debounce_interval = AP83_KEYS_DEBOUNCE_INTERVAL,
.gpio = AP83_GPIO_BTN_RESET,
.active_low = 1,
}, {
.desc = "jumpstart",
.type = EV_KEY,
.code = KEY_WPS_BUTTON,
.debounce_interval = AP83_KEYS_DEBOUNCE_INTERVAL,
.gpio = AP83_GPIO_BTN_JUMPSTART,
.active_low = 1,
}
};
static struct resource ap83_040_spi_resources[] = {
[0] = {
.start = AR71XX_SPI_BASE,
.end = AR71XX_SPI_BASE + AR71XX_SPI_SIZE - 1,
.flags = IORESOURCE_MEM,
},
};
static struct platform_device ap83_040_spi_device = {
.name = "ap83-spi",
.id = 0,
.resource = ap83_040_spi_resources,
.num_resources = ARRAY_SIZE(ap83_040_spi_resources),
};
static struct spi_gpio_platform_data ap83_050_spi_data = {
.miso = AP83_050_GPIO_VSC7385_MISO,
.mosi = AP83_050_GPIO_VSC7385_MOSI,
.sck = AP83_050_GPIO_VSC7385_SCK,
.num_chipselect = 1,
};
static struct platform_device ap83_050_spi_device = {
.name = "spi_gpio",
.id = 0,
.dev = {
.platform_data = &ap83_050_spi_data,
}
};
static void ap83_vsc7385_reset(void)
{
ath79_device_reset_set(AR71XX_RESET_GE1_PHY);
udelay(10);
ath79_device_reset_clear(AR71XX_RESET_GE1_PHY);
mdelay(50);
}
static struct vsc7385_platform_data ap83_vsc7385_data = {
.reset = ap83_vsc7385_reset,
.ucode_name = "vsc7385_ucode_ap83.bin",
.mac_cfg = {
.tx_ipg = 6,
.bit2 = 0,
.clk_sel = 3,
},
};
static struct spi_board_info ap83_spi_info[] = {
{
.bus_num = 0,
.chip_select = 0,
.max_speed_hz = 25000000,
.modalias = "spi-vsc7385",
.platform_data = &ap83_vsc7385_data,
.controller_data = (void *) AP83_050_GPIO_VSC7385_CS,
}
};
static void __init ap83_generic_setup(void)
{
u8 *eeprom = (u8 *) KSEG1ADDR(0x1fff1000);
ath79_register_mdio(0, 0xfffffffe);
ath79_init_mac(ath79_eth0_data.mac_addr, eeprom, 0);
ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
ath79_eth0_data.phy_mask = 0x1;
ath79_register_eth(0);
ath79_init_mac(ath79_eth1_data.mac_addr, eeprom, 1);
ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
ath79_eth1_data.speed = SPEED_1000;
ath79_eth1_data.duplex = DUPLEX_FULL;
ath79_eth1_pll_data.pll_1000 = 0x1f000000;
ath79_register_eth(1);
ath79_register_leds_gpio(-1, ARRAY_SIZE(ap83_leds_gpio),
ap83_leds_gpio);
ath79_register_gpio_keys_polled(-1, AP83_KEYS_POLL_INTERVAL,
ARRAY_SIZE(ap83_gpio_keys),
ap83_gpio_keys);
ath79_register_usb();
ath79_register_wmac(eeprom, NULL);
platform_device_register(&ap83_flash_device);
spi_register_board_info(ap83_spi_info, ARRAY_SIZE(ap83_spi_info));
}
static void ap83_040_flash_lock(struct platform_device *pdev)
{
ath79_flash_acquire();
}
static void ap83_040_flash_unlock(struct platform_device *pdev)
{
ath79_flash_release();
}
static void __init ap83_040_setup(void)
{
ap83_flash_data.lock = ap83_040_flash_lock;
ap83_flash_data.unlock = ap83_040_flash_unlock;
ap83_generic_setup();
platform_device_register(&ap83_040_spi_device);
}
static void __init ap83_050_setup(void)
{
ap83_generic_setup();
platform_device_register(&ap83_050_spi_device);
}
static void __init ap83_setup(void)
{
u8 *board_id = (u8 *) KSEG1ADDR(0x1fff1244);
unsigned int board_version;
board_version = (unsigned int)(board_id[0] - '0');
board_version += ((unsigned int)(board_id[1] - '0')) * 10;
switch (board_version) {
case 40:
ap83_040_setup();
break;
case 50:
ap83_050_setup();
break;
default:
printk(KERN_WARNING "AP83-%03u board is not yet supported\n",
board_version);
}
}
MIPS_MACHINE(ATH79_MACH_AP83, "AP83", "Atheros AP83", ap83_setup);

View File

@ -37,7 +37,6 @@ enum ath79_mach_type {
ATH79_MACH_AP147_010, /* Atheros AP147-010 reference board */ ATH79_MACH_AP147_010, /* Atheros AP147-010 reference board */
ATH79_MACH_AP152, /* Atheros AP152 reference board */ ATH79_MACH_AP152, /* Atheros AP152 reference board */
ATH79_MACH_AP81, /* Atheros AP81 reference board */ ATH79_MACH_AP81, /* Atheros AP81 reference board */
ATH79_MACH_AP83, /* Atheros AP83 */
ATH79_MACH_AP90Q, /* YunCore AP90Q */ ATH79_MACH_AP90Q, /* YunCore AP90Q */
ATH79_MACH_AP96, /* Atheros AP96 */ ATH79_MACH_AP96, /* Atheros AP96 */
ATH79_MACH_ARCHER_C5, /* TP-LINK Archer C5 board */ ATH79_MACH_ARCHER_C5, /* TP-LINK Archer C5 board */

View File

@ -1,283 +0,0 @@
/*
* Atheros AP83 board specific SPI Controller driver
*
* Copyright (C) 2009 Gabor Juhos <juhosg@openwrt.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
*/
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/delay.h>
#include <linux/spinlock.h>
#include <linux/workqueue.h>
#include <linux/platform_device.h>
#include <linux/io.h>
#include <linux/spi/spi.h>
#include <linux/spi/spi_bitbang.h>
#include <linux/bitops.h>
#include <linux/gpio.h>
#include <asm/mach-ath79/ath79.h>
#define DRV_DESC "Atheros AP83 board SPI Controller driver"
#define DRV_VERSION "0.1.0"
#define DRV_NAME "ap83-spi"
#define AP83_SPI_CLK_HIGH (1 << 23)
#define AP83_SPI_CLK_LOW 0
#define AP83_SPI_MOSI_HIGH (1 << 22)
#define AP83_SPI_MOSI_LOW 0
#define AP83_SPI_GPIO_CS 1
#define AP83_SPI_GPIO_MISO 3
struct ap83_spi {
struct spi_bitbang bitbang;
void __iomem *base;
u32 addr;
struct platform_device *pdev;
};
static inline u32 ap83_spi_rr(struct ap83_spi *sp, u32 reg)
{
return __raw_readl(sp->base + reg);
}
static inline struct ap83_spi *spidev_to_sp(struct spi_device *spi)
{
return spi_master_get_devdata(spi->master);
}
static inline void setsck(struct spi_device *spi, int val)
{
struct ap83_spi *sp = spidev_to_sp(spi);
if (val)
sp->addr |= AP83_SPI_CLK_HIGH;
else
sp->addr &= ~AP83_SPI_CLK_HIGH;
dev_dbg(&spi->dev, "addr=%08x, SCK set to %s\n",
sp->addr, (val) ? "HIGH" : "LOW");
ap83_spi_rr(sp, sp->addr);
}
static inline void setmosi(struct spi_device *spi, int val)
{
struct ap83_spi *sp = spidev_to_sp(spi);
if (val)
sp->addr |= AP83_SPI_MOSI_HIGH;
else
sp->addr &= ~AP83_SPI_MOSI_HIGH;
dev_dbg(&spi->dev, "addr=%08x, MOSI set to %s\n",
sp->addr, (val) ? "HIGH" : "LOW");
ap83_spi_rr(sp, sp->addr);
}
static inline u32 getmiso(struct spi_device *spi)
{
u32 ret;
ret = gpio_get_value(AP83_SPI_GPIO_MISO) ? 1 : 0;
dev_dbg(&spi->dev, "get MISO: %d\n", ret);
return ret;
}
static inline void do_spidelay(struct spi_device *spi, unsigned nsecs)
{
ndelay(nsecs);
}
static void ap83_spi_chipselect(struct spi_device *spi, int on)
{
struct ap83_spi *sp = spidev_to_sp(spi);
dev_dbg(&spi->dev, "set CS to %d\n", (on) ? 0 : 1);
if (on) {
ath79_flash_acquire();
sp->addr = 0;
ap83_spi_rr(sp, sp->addr);
gpio_set_value(AP83_SPI_GPIO_CS, 0);
} else {
gpio_set_value(AP83_SPI_GPIO_CS, 1);
ath79_flash_release();
}
}
#define spidelay(nsecs) \
do { \
/* Steal the spi_device pointer from our caller. \
* The bitbang-API should probably get fixed here... */ \
do_spidelay(spi, nsecs); \
} while (0)
#define EXPAND_BITBANG_TXRX
#include <linux/spi/spi_bitbang.h>
#include "spi-bitbang-txrx.h"
static u32 ap83_spi_txrx_mode0(struct spi_device *spi,
unsigned nsecs, u32 word, u8 bits)
{
dev_dbg(&spi->dev, "TXRX0 word=%08x, bits=%u\n", word, bits);
return bitbang_txrx_be_cpha0(spi, nsecs, 0, 0, word, bits);
}
static u32 ap83_spi_txrx_mode1(struct spi_device *spi,
unsigned nsecs, u32 word, u8 bits)
{
dev_dbg(&spi->dev, "TXRX1 word=%08x, bits=%u\n", word, bits);
return bitbang_txrx_be_cpha1(spi, nsecs, 0, 0, word, bits);
}
static u32 ap83_spi_txrx_mode2(struct spi_device *spi,
unsigned nsecs, u32 word, u8 bits)
{
dev_dbg(&spi->dev, "TXRX2 word=%08x, bits=%u\n", word, bits);
return bitbang_txrx_be_cpha0(spi, nsecs, 1, 0, word, bits);
}
static u32 ap83_spi_txrx_mode3(struct spi_device *spi,
unsigned nsecs, u32 word, u8 bits)
{
dev_dbg(&spi->dev, "TXRX3 word=%08x, bits=%u\n", word, bits);
return bitbang_txrx_be_cpha1(spi, nsecs, 1, 0, word, bits);
}
static int ap83_spi_probe(struct platform_device *pdev)
{
struct spi_master *master;
struct ap83_spi *sp;
struct ap83_spi_platform_data *pdata;
struct resource *r;
int ret;
ret = gpio_request(AP83_SPI_GPIO_MISO, "spi-miso");
if (ret) {
dev_err(&pdev->dev, "gpio request failed for MISO\n");
return ret;
}
ret = gpio_request(AP83_SPI_GPIO_CS, "spi-cs");
if (ret) {
dev_err(&pdev->dev, "gpio request failed for CS\n");
goto err_free_miso;
}
ret = gpio_direction_input(AP83_SPI_GPIO_MISO);
if (ret) {
dev_err(&pdev->dev, "unable to set direction of MISO\n");
goto err_free_cs;
}
ret = gpio_direction_output(AP83_SPI_GPIO_CS, 0);
if (ret) {
dev_err(&pdev->dev, "unable to set direction of CS\n");
goto err_free_cs;
}
master = spi_alloc_master(&pdev->dev, sizeof(*sp));
if (master == NULL) {
dev_err(&pdev->dev, "failed to allocate spi master\n");
return -ENOMEM;
}
sp = spi_master_get_devdata(master);
platform_set_drvdata(pdev, sp);
pdata = pdev->dev.platform_data;
sp->bitbang.master = spi_master_get(master);
sp->bitbang.chipselect = ap83_spi_chipselect;
sp->bitbang.txrx_word[SPI_MODE_0] = ap83_spi_txrx_mode0;
sp->bitbang.txrx_word[SPI_MODE_1] = ap83_spi_txrx_mode1;
sp->bitbang.txrx_word[SPI_MODE_2] = ap83_spi_txrx_mode2;
sp->bitbang.txrx_word[SPI_MODE_3] = ap83_spi_txrx_mode3;
sp->bitbang.master->bus_num = pdev->id;
sp->bitbang.master->num_chipselect = 1;
r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (r == NULL) {
ret = -ENOENT;
goto err_spi_put;
}
sp->base = ioremap_nocache(r->start, r->end - r->start + 1);
if (!sp->base) {
ret = -ENXIO;
goto err_spi_put;
}
ret = spi_bitbang_start(&sp->bitbang);
if (!ret)
goto err_unmap;
dev_info(&pdev->dev, "AP83 SPI adapter at %08x\n", r->start);
return 0;
err_unmap:
iounmap(sp->base);
err_spi_put:
platform_set_drvdata(pdev, NULL);
spi_master_put(sp->bitbang.master);
err_free_cs:
gpio_free(AP83_SPI_GPIO_CS);
err_free_miso:
gpio_free(AP83_SPI_GPIO_MISO);
return ret;
}
static int ap83_spi_remove(struct platform_device *pdev)
{
struct ap83_spi *sp = platform_get_drvdata(pdev);
spi_bitbang_stop(&sp->bitbang);
iounmap(sp->base);
platform_set_drvdata(pdev, NULL);
spi_master_put(sp->bitbang.master);
return 0;
}
static struct platform_driver ap83_spi_drv = {
.probe = ap83_spi_probe,
.remove = ap83_spi_remove,
.driver = {
.name = DRV_NAME,
.owner = THIS_MODULE,
},
};
static int __init ap83_spi_init(void)
{
return platform_driver_register(&ap83_spi_drv);
}
module_init(ap83_spi_init);
static void __exit ap83_spi_exit(void)
{
platform_driver_unregister(&ap83_spi_drv);
}
module_exit(ap83_spi_exit);
MODULE_ALIAS("platform:" DRV_NAME);
MODULE_DESCRIPTION(DRV_DESC);
MODULE_VERSION(DRV_VERSION);
MODULE_AUTHOR("Gabor Juhos <juhosg@openwrt.org>");
MODULE_LICENSE("GPL v2");

View File

@ -20,13 +20,6 @@ define LegacyDevice/AP81
endef endef
LEGACY_DEVICES += AP81 LEGACY_DEVICES += AP81
define LegacyDevice/AP83
DEVICE_TITLE := Atheros AP83 reference board
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 \
vsc7385-ucode-ap83 vsc7395-ucode-ap83
endef
LEGACY_DEVICES += AP83
define LegacyDevice/AP96 define LegacyDevice/AP96
DEVICE_TITLE := Atheros AP96 reference board DEVICE_TITLE := Atheros AP96 reference board
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 DEVICE_PACKAGES := kmod-usb-core kmod-usb2

View File

@ -228,7 +228,6 @@ alfa_mtdlayout_16M=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,15936k(firmw
all0258n_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env),6272k(firmware),1536k(failsafe),64k(art)ro all0258n_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env),6272k(firmware),1536k(failsafe),64k(art)ro
all0315n_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,256k(u-boot-env),13568k(firmware),2048k(failsafe),256k(art)ro all0315n_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,256k(u-boot-env),13568k(firmware),2048k(failsafe),256k(art)ro
ap81_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,5120k(rootfs),2688k(kernel),64k(art)ro,7808k@0x50000(firmware) ap81_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,5120k(rootfs),2688k(kernel),64k(art)ro,7808k@0x50000(firmware)
ap83_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,128k(u-boot-env)ro,4096k(rootfs),3648k(kernel),64k(art)ro,7744k@0x60000(firmware)
ap96_mtdlayout=mtdparts=spi0.0:192k(u-boot)ro,64k(u-boot-env)ro,6144k(rootfs),1728k(kernel),64k(art)ro,7872k@0x40000(firmware) ap96_mtdlayout=mtdparts=spi0.0:192k(u-boot)ro,64k(u-boot-env)ro,6144k(rootfs),1728k(kernel),64k(art)ro,7872k@0x40000(firmware)
ap121_mtdlayout_8M=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,6144k(rootfs),1600k(kernel),64k(nvram),64k(art)ro,7744k@0x50000(firmware) ap121_mtdlayout_8M=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,6144k(rootfs),1600k(kernel),64k(nvram),64k(art)ro,7744k@0x50000(firmware)
ap121_mtdlayout_16M=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,10944k(rootfs),4992k(kernel),64k(nvram),64k(art)ro,15936k@0x50000(firmware) ap121_mtdlayout_16M=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,10944k(rootfs),4992k(kernel),64k(nvram),64k(art)ro,15936k@0x50000(firmware)
@ -881,7 +880,6 @@ $(eval $(call SingleProfile,ALFA,64k,HORNETUB,hornet-ub,HORNET-UB,ttyATH0,115200
$(eval $(call SingleProfile,ALFA,64k,TUBE2H8M,tube2h-8M,TUBE2H,ttyATH0,115200,$$(alfa_mtdlayout_8M),1638400,6291456,kernel.image,rootfs.image)) $(eval $(call SingleProfile,ALFA,64k,TUBE2H8M,tube2h-8M,TUBE2H,ttyATH0,115200,$$(alfa_mtdlayout_8M),1638400,6291456,kernel.image,rootfs.image))
$(eval $(call SingleProfile,AthGzip,64k,AP81,ap81,AP81,ttyS0,115200,$$(ap81_mtdlayout),RKuImage)) $(eval $(call SingleProfile,AthGzip,64k,AP81,ap81,AP81,ttyS0,115200,$$(ap81_mtdlayout),RKuImage))
$(eval $(call SingleProfile,AthGzip,64k,AP83,ap83,AP83,ttyS0,115200,$$(ap83_mtdlayout),RKuImage))
$(eval $(call SingleProfile,AthGzip,64k,AP96,ap96,AP96,ttyS0,115200,$$(ap96_mtdlayout),RKuImage)) $(eval $(call SingleProfile,AthGzip,64k,AP96,ap96,AP96,ttyS0,115200,$$(ap96_mtdlayout),RKuImage))
$(eval $(call SingleProfile,AthGzip,64k,WNDAP360,wndap360,WNDAP360,ttyS0,9600,$$(wndap360_mtdlayout),KRuImage)) $(eval $(call SingleProfile,AthGzip,64k,WNDAP360,wndap360,WNDAP360,ttyS0,9600,$$(wndap360_mtdlayout),KRuImage))

View File

@ -10,7 +10,6 @@
# CONFIG_ATH79_MACH_AP136 is not set # CONFIG_ATH79_MACH_AP136 is not set
# CONFIG_ATH79_MACH_AP147 is not set # CONFIG_ATH79_MACH_AP147 is not set
# CONFIG_ATH79_MACH_AP81 is not set # CONFIG_ATH79_MACH_AP81 is not set
# CONFIG_ATH79_MACH_AP83 is not set
# CONFIG_ATH79_MACH_AP96 is not set # CONFIG_ATH79_MACH_AP96 is not set
# CONFIG_ATH79_MACH_ARCHER_C7 is not set # CONFIG_ATH79_MACH_ARCHER_C7 is not set
# CONFIG_ATH79_MACH_AW_NR580 is not set # CONFIG_ATH79_MACH_AW_NR580 is not set

View File

@ -9,7 +9,6 @@
# CONFIG_ATH79_MACH_AP136 is not set # CONFIG_ATH79_MACH_AP136 is not set
# CONFIG_ATH79_MACH_AP147 is not set # CONFIG_ATH79_MACH_AP147 is not set
# CONFIG_ATH79_MACH_AP81 is not set # CONFIG_ATH79_MACH_AP81 is not set
# CONFIG_ATH79_MACH_AP83 is not set
# CONFIG_ATH79_MACH_AP96 is not set # CONFIG_ATH79_MACH_AP96 is not set
# CONFIG_ATH79_MACH_ARCHER_C7 is not set # CONFIG_ATH79_MACH_ARCHER_C7 is not set
# CONFIG_ATH79_MACH_AW_NR580 is not set # CONFIG_ATH79_MACH_AW_NR580 is not set

View File

@ -1,27 +0,0 @@
--- a/drivers/spi/Makefile
+++ b/drivers/spi/Makefile
@@ -12,6 +12,7 @@ obj-$(CONFIG_SPI_SPIDEV) += spidev.o
# SPI master controller drivers (bus)
obj-$(CONFIG_SPI_ALTERA) += spi-altera.o
obj-$(CONFIG_SPI_ATMEL) += spi-atmel.o
+obj-$(CONFIG_SPI_AP83) += spi-ap83.o
obj-$(CONFIG_SPI_ATH79) += spi-ath79.o
obj-$(CONFIG_SPI_AU1550) += spi-au1550.o
obj-$(CONFIG_SPI_BCM2835) += spi-bcm2835.o
--- a/drivers/spi/Kconfig
+++ b/drivers/spi/Kconfig
@@ -59,6 +59,14 @@ config SPI_ALTERA
help
This is the driver for the Altera SPI Controller.
+config SPI_AP83
+ tristate "Atheros AP83 specific SPI Controller"
+ depends on SPI_MASTER && ATH79_MACH_AP83
+ select SPI_BITBANG
+ help
+ This is a specific SPI controller driver for the Atheros AP83
+ reference board.
+
config SPI_ATH79
tristate "Atheros AR71XX/AR724X/AR913X SPI controller driver"
depends on ATH79 && GPIOLIB

View File

@ -1,6 +1,6 @@
--- a/drivers/spi/Kconfig --- a/drivers/spi/Kconfig
+++ b/drivers/spi/Kconfig +++ b/drivers/spi/Kconfig
@@ -728,6 +728,11 @@ config SPI_RB4XX_CPLD @@ -720,6 +720,11 @@ config SPI_RB4XX_CPLD
SPI driver for the Xilinx CPLD chip present on the SPI driver for the Xilinx CPLD chip present on the
MikroTik RB4xx boards. MikroTik RB4xx boards.
@ -14,7 +14,7 @@
# #
--- a/drivers/spi/Makefile --- a/drivers/spi/Makefile
+++ b/drivers/spi/Makefile +++ b/drivers/spi/Makefile
@@ -92,6 +92,7 @@ obj-$(CONFIG_SPI_TEGRA20_SLINK) += spi- @@ -91,6 +91,7 @@ obj-$(CONFIG_SPI_TEGRA20_SLINK) += spi-
obj-$(CONFIG_SPI_TLE62X0) += spi-tle62x0.o obj-$(CONFIG_SPI_TLE62X0) += spi-tle62x0.o
obj-$(CONFIG_SPI_TOPCLIFF_PCH) += spi-topcliff-pch.o obj-$(CONFIG_SPI_TOPCLIFF_PCH) += spi-topcliff-pch.o
obj-$(CONFIG_SPI_TXX9) += spi-txx9.o obj-$(CONFIG_SPI_TXX9) += spi-txx9.o

View File

@ -1,44 +0,0 @@
--- a/arch/mips/ath79/mach-ap83.c
+++ b/arch/mips/ath79/mach-ap83.c
@@ -42,41 +42,8 @@
#define AP83_KEYS_POLL_INTERVAL 20 /* msecs */
#define AP83_KEYS_DEBOUNCE_INTERVAL (3 * AP83_KEYS_POLL_INTERVAL)
-static struct mtd_partition ap83_flash_partitions[] = {
- {
- .name = "u-boot",
- .offset = 0,
- .size = 0x040000,
- .mask_flags = MTD_WRITEABLE,
- }, {
- .name = "u-boot-env",
- .offset = 0x040000,
- .size = 0x020000,
- .mask_flags = MTD_WRITEABLE,
- }, {
- .name = "kernel",
- .offset = 0x060000,
- .size = 0x140000,
- }, {
- .name = "rootfs",
- .offset = 0x1a0000,
- .size = 0x650000,
- }, {
- .name = "art",
- .offset = 0x7f0000,
- .size = 0x010000,
- .mask_flags = MTD_WRITEABLE,
- }, {
- .name = "firmware",
- .offset = 0x060000,
- .size = 0x790000,
- }
-};
-
static struct physmap_flash_data ap83_flash_data = {
.width = 2,
- .parts = ap83_flash_partitions,
- .nr_parts = ARRAY_SIZE(ap83_flash_partitions),
};
static struct resource ap83_flash_resources[] = {