aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Dooks <ben-linux@fluff.org>2008-02-04 19:02:01 -0500
committerJeff Garzik <jeff@garzik.org>2008-02-11 11:05:22 -0500
commit33ba509191dd6c6735cc96d2ba411fa311f9a6be (patch)
tree94294478bc81af77c5e05cd977314baf207d37e6
parent931165739a75f88530d5b02cafaacf9bb6b66d87 (diff)
DM9000: Add platform data to specify external phy
Patch from: Laurent Pinchart <laurentp@cse-semaphore.com> This patch adds a flag to the DM9000 platform data which, when set, configures the device to use an external PHY. Signed-off-by: Laurent Pinchart <laurentp@cse-semaphore.com> Signed-off-by: Ben Dooks <ben-linuy@fluff.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
-rw-r--r--drivers/net/dm9000.c6
-rw-r--r--include/linux/dm9000.h1
2 files changed, 7 insertions, 0 deletions
diff --git a/drivers/net/dm9000.c b/drivers/net/dm9000.c
index e4390d917b81..b5e47dfa5529 100644
--- a/drivers/net/dm9000.c
+++ b/drivers/net/dm9000.c
@@ -137,6 +137,7 @@ typedef struct board_info {
137 u16 dbug_cnt; 137 u16 dbug_cnt;
138 u8 io_mode; /* 0:word, 2:byte */ 138 u8 io_mode; /* 0:word, 2:byte */
139 u8 phy_addr; 139 u8 phy_addr;
140 unsigned int flags;
140 141
141 void (*inblk)(void __iomem *port, void *data, int length); 142 void (*inblk)(void __iomem *port, void *data, int length);
142 void (*outblk)(void __iomem *port, void *data, int length); 143 void (*outblk)(void __iomem *port, void *data, int length);
@@ -525,6 +526,8 @@ dm9000_probe(struct platform_device *pdev)
525 526
526 if (pdata->dumpblk != NULL) 527 if (pdata->dumpblk != NULL)
527 db->dumpblk = pdata->dumpblk; 528 db->dumpblk = pdata->dumpblk;
529
530 db->flags = pdata->flags;
528 } 531 }
529 532
530 dm9000_reset(db); 533 dm9000_reset(db);
@@ -665,6 +668,9 @@ dm9000_init_dm9000(struct net_device *dev)
665 iow(db, DM9000_GPCR, GPCR_GEP_CNTL); /* Let GPIO0 output */ 668 iow(db, DM9000_GPCR, GPCR_GEP_CNTL); /* Let GPIO0 output */
666 iow(db, DM9000_GPR, 0); /* Enable PHY */ 669 iow(db, DM9000_GPR, 0); /* Enable PHY */
667 670
671 if (db->flags & DM9000_PLATF_EXT_PHY)
672 iow(db, DM9000_NCR, NCR_EXT_PHY);
673
668 /* Program operating register */ 674 /* Program operating register */
669 iow(db, DM9000_TCR, 0); /* TX Polling clear */ 675 iow(db, DM9000_TCR, 0); /* TX Polling clear */
670 iow(db, DM9000_BPTR, 0x3f); /* Less 3Kb, 200us */ 676 iow(db, DM9000_BPTR, 0x3f); /* Less 3Kb, 200us */
diff --git a/include/linux/dm9000.h b/include/linux/dm9000.h
index 0008e2ad0c9f..ea530fd1be74 100644
--- a/include/linux/dm9000.h
+++ b/include/linux/dm9000.h
@@ -19,6 +19,7 @@
19#define DM9000_PLATF_8BITONLY (0x0001) 19#define DM9000_PLATF_8BITONLY (0x0001)
20#define DM9000_PLATF_16BITONLY (0x0002) 20#define DM9000_PLATF_16BITONLY (0x0002)
21#define DM9000_PLATF_32BITONLY (0x0004) 21#define DM9000_PLATF_32BITONLY (0x0004)
22#define DM9000_PLATF_EXT_PHY (0x0008)
22 23
23/* platfrom data for platfrom device structure's platfrom_data field */ 24/* platfrom data for platfrom device structure's platfrom_data field */
24 25