From eb68c90f825063b986a97f098d752b5bdc064471 Mon Sep 17 00:00:00 2001
From: Florian Fainelli <florian@openwrt.org>
Date: Tue, 16 Jun 2009 22:01:24 +0000
Subject: [PATCH] backport some mainline fixes, refresh mtd driver

SVN-Revision: 16485
---
 .../007-r6040_git_updates.patch               | 46 +++++++++++++++++++
 .../patches-2.6.28/008-r8610_flash_map.patch  | 12 ++---
 2 files changed, 52 insertions(+), 6 deletions(-)

diff --git a/target/linux/rdc/patches-2.6.28/007-r6040_git_updates.patch b/target/linux/rdc/patches-2.6.28/007-r6040_git_updates.patch
index 6447be43b6b..704786ae768 100644
--- a/target/linux/rdc/patches-2.6.28/007-r6040_git_updates.patch
+++ b/target/linux/rdc/patches-2.6.28/007-r6040_git_updates.patch
@@ -193,3 +193,49 @@
  	/* Link new device into r6040_root_dev */
  	lp->pdev = pdev;
  	lp->dev = dev;
+--- a/drivers/net/r6040.c
++++ b/drivers/net/r6040.c
+@@ -742,6 +742,14 @@ static int r6040_up(struct net_device *d
+ 	struct r6040_private *lp = netdev_priv(dev);
+ 	void __iomem *ioaddr = lp->base;
+ 	int ret;
++	u16 val;
++
++	/* Check presence of a second PHY */
++	val = r6040_phy_read(ioaddr, lp->phy_addr, 2);
++	if (val == 0xFFFF) {
++		printk(KERN_ERR DRV_NAME " no second PHY attached\n");
++		return -EIO;
++	}
+ 
+ 	/* Initialise and alloc RX/TX buffers */
+ 	r6040_init_txbufs(dev);
+--- a/drivers/net/r6040.c
++++ b/drivers/net/r6040.c
+@@ -401,6 +401,9 @@ static void r6040_init_mac_regs(struct n
+ 	 * we may got called by r6040_tx_timeout which has left
+ 	 * some unsent tx buffers */
+ 	iowrite16(0x01, ioaddr + MTPR);
++
++	/* Check media */
++	mii_check_media(&lp->mii_if, 1, 1);
+ }
+ 
+ static void r6040_tx_timeout(struct net_device *dev)
+@@ -528,6 +531,8 @@ static int r6040_phy_mode_chk(struct net
+ 			phy_dat = 0x0000;
+ 	}
+ 
++	mii_check_media(&lp->mii_if, 0, 1);
++
+ 	return phy_dat;
+ };
+ 
+@@ -810,7 +815,6 @@ static void r6040_timer(unsigned long da
+ 		lp->phy_mode = phy_mode;
+ 		lp->mcr0 = (lp->mcr0 & 0x7fff) | phy_mode;
+ 		iowrite16(lp->mcr0, ioaddr);
+-		printk(KERN_INFO "Link Change %x \n", ioread16(ioaddr));
+ 	}
+ 
+ 	/* Timer active again */
diff --git a/target/linux/rdc/patches-2.6.28/008-r8610_flash_map.patch b/target/linux/rdc/patches-2.6.28/008-r8610_flash_map.patch
index a969ec56a88..755522cbc68 100644
--- a/target/linux/rdc/patches-2.6.28/008-r8610_flash_map.patch
+++ b/target/linux/rdc/patches-2.6.28/008-r8610_flash_map.patch
@@ -1,6 +1,6 @@
---- a/drivers/mtd/maps/Kconfig	2009-05-07 00:51:33.000000000 +0200
-+++ b/drivers/mtd/maps/Kconfig	2009-05-07 01:08:25.000000000 +0200
-@@ -156,6 +156,12 @@
+--- a/drivers/mtd/maps/Kconfig
++++ b/drivers/mtd/maps/Kconfig
+@@ -156,6 +156,12 @@ config MTD_RDC3210_BUSWIDTH
  	  Number of bytes addressed on the RDC-3210 flash device before
  	  addressing the same chip again
  
@@ -13,9 +13,9 @@
  config MTD_SC520CDP
  	tristate "CFI Flash device mapped on AMD SC520 CDP"
  	depends on X86 && MTD_CFI && MTD_CONCAT
---- a/drivers/mtd/maps/Makefile	2009-05-07 00:51:33.000000000 +0200
-+++ b/drivers/mtd/maps/Makefile	2009-05-07 01:07:28.000000000 +0200
-@@ -28,6 +28,7 @@
+--- a/drivers/mtd/maps/Makefile
++++ b/drivers/mtd/maps/Makefile
+@@ -28,6 +28,7 @@ obj-$(CONFIG_MTD_PMC_MSP_EVM)   += pmcms
  obj-$(CONFIG_MTD_PMC_MSP_RAMROOT)+= pmcmsp-ramroot.o
  obj-$(CONFIG_MTD_PCMCIA)	+= pcmciamtd.o
  obj-$(CONFIG_MTD_RDC3210)	+= rdc3210.o