as suggested by checkpach.
Signed-off-by: Sergey Ryazanov <ryazanov.s.a@gmail.com>
SVN-Revision: 42486
+
--- /dev/null
+++ b/arch/mips/ar231x/ar5312.c
-@@ -0,0 +1,540 @@
+@@ -0,0 +1,542 @@
+/*
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License. See the file "COPYING" in the main directory of this archive
+ ar231x_irq_dispatch = ar5312_irq_dispatch;
+ for (i = 0; i < AR5312_MISC_IRQ_COUNT; i++) {
+ int irq = AR231X_MISC_IRQ_BASE + i;
++
+ irq_set_chip_and_handler(irq, &ar5312_misc_irq_chip,
+ handle_level_irq);
+ }
+ar5312_gpio_set_value(struct gpio_chip *chip, unsigned gpio, int value)
+{
+ u32 reg = ar231x_read_reg(AR5312_GPIO_DO);
++
+ reg = value ? reg | (1 << gpio) : reg & ~(1 << gpio);
+ ar231x_write_reg(AR5312_GPIO_DO, reg);
+}
+static int __init
+ar5312_gpio_init(void)
+{
-+ int ret;
-+ ret = gpiochip_add(&ar5312_gpio_chip);
++ int ret = gpiochip_add(&ar5312_gpio_chip);
++
+ if (ret) {
+ pr_err("%s: failed to add gpiochip\n", ar5312_gpio_chip.label);
+ return ret;
+
--- /dev/null
+++ b/arch/mips/ar231x/ar2315.c
-@@ -0,0 +1,556 @@
+@@ -0,0 +1,559 @@
+/*
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License. See the file "COPYING" in the main directory of this archive
+ gpiointval = ar231x_read_reg(AR2315_GPIO_DI);
+ for (i = 0; i < AR2315_MISC_IRQ_COUNT; i++) {
+ int irq = AR231X_MISC_IRQ_BASE + i;
++
+ irq_set_chip_and_handler(irq, &ar2315_misc_irq_chip,
+ handle_level_irq);
+ }
+ for (i = 0; i < AR2315_NUM_GPIO; i++) {
+ int irq = AR231X_GPIO_IRQ_BASE + i;
++
+ irq_set_chip_and_handler(irq, &ar2315_gpio_irq_chip,
+ handle_level_irq);
+ }
+ar2315_gpio_set_value(struct gpio_chip *chip, unsigned gpio, int value)
+{
+ u32 reg = ar231x_read_reg(AR2315_GPIO_DO);
++
+ reg = value ? reg | (1 << gpio) : reg & ~(1 << gpio);
+ ar231x_write_reg(AR2315_GPIO_DO, reg);
+}
+static int __init
+ar2315_gpio_init(void)
+{
-+ int ret;
-+ ret = gpiochip_add(&ar2315_gpio_chip);
++ int ret = gpiochip_add(&ar2315_gpio_chip);
++
+ if (ret) {
+ pr_err("%s: failed to add gpiochip\n", ar2315_gpio_chip.label);
+ return ret;
+obj-$(CONFIG_NET_AR231X) += ar231x.o
--- /dev/null
+++ b/drivers/net/ethernet/atheros/ar231x/ar231x.c
-@@ -0,0 +1,1250 @@
+@@ -0,0 +1,1254 @@
+/*
+ * ar231x.c: Linux driver for the Atheros AR231x Ethernet device.
+ *
+{
+ struct net_device *dev = platform_get_drvdata(pdev);
+ struct ar231x_private *sp = netdev_priv(dev);
++
+ rx_tasklet_cleanup(dev);
+ ar231x_init_cleanup(dev);
+ unregister_netdev(dev);
+static void ar231x_free_descriptors(struct net_device *dev)
+{
+ struct ar231x_private *sp = netdev_priv(dev);
++
+ if (sp->rx_ring != NULL) {
+ kfree((void *)KSEG0ADDR(sp->rx_ring));
+ sp->rx_ring = NULL;
+ /* Initialize the transmit Descriptors */
+ for (j = 0; j < AR2313_DESCR_ENTRIES; j++) {
+ ar231x_descr_t *td = &sp->tx_ring[j];
++
+ td->status = 0;
+ td->devcs = DMA_TX1_CHAINED;
+ td->addr = 0;
+ tasklet_hi_schedule(&sp->rx_tasklet);
+ } else {
+ unsigned long flags;
++
+ spin_lock_irqsave(&sp->lock, flags);
+ sp->dma_regs->intr_ena |= DMA_STATUS_RI;
+ spin_unlock_irqrestore(&sp->lock, flags);
static int ar231x_probe(struct platform_device *pdev)
{
struct net_device *dev;
-@@ -286,6 +313,23 @@ static int ar231x_probe(struct platform_
+@@ -286,6 +313,24 @@ static int ar231x_probe(struct platform_
mdiobus_register(sp->mii_bus);
+ */
+ if (!no_phy) {
+ u32 phy_id = 0;
++
+ get_phy_id(sp->mii_bus, 1, &phy_id);
+ if (phy_id == 0x00221450)
+ no_phy = true;
if (ar231x_mdiobus_probe(dev) != 0) {
printk(KERN_ERR "%s: mdiobus_probe failed\n", dev->name);
rx_tasklet_cleanup(dev);
-@@ -342,8 +386,10 @@ static int ar231x_remove(struct platform
+@@ -343,8 +388,10 @@ static int ar231x_remove(struct platform
rx_tasklet_cleanup(dev);
ar231x_init_cleanup(dev);
unregister_netdev(dev);
kfree(dev);
return 0;
}
-@@ -1104,6 +1150,9 @@ static int ar231x_ioctl(struct net_devic
+@@ -1108,6 +1155,9 @@ static int ar231x_ioctl(struct net_devic
struct ar231x_private *sp = netdev_priv(dev);
int ret;