Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v2.6.14 101 lines 2.4 kB view raw
1/* 2 * arch/ppc/platforms/chrp_pegasos_eth.c 3 * 4 * Copyright (C) 2005 Sven Luther <sl@bplan-gmbh.de> 5 * Thanks to : 6 * Dale Farnsworth <dale@farnsworth.org> 7 * Mark A. Greer <mgreer@mvista.com> 8 * Nicolas DET <nd@bplan-gmbh.de> 9 * Benjamin Herrenschmidt <benh@kernel.crashing.org> 10 * And anyone else who helped me on this. 11 */ 12 13#include <linux/types.h> 14#include <linux/init.h> 15#include <linux/ioport.h> 16#include <linux/device.h> 17#include <linux/mv643xx.h> 18#include <linux/pci.h> 19 20/* Pegasos 2 specific Marvell MV 64361 gigabit ethernet port setup */ 21static struct resource mv643xx_eth_shared_resources[] = { 22 [0] = { 23 .name = "ethernet shared base", 24 .start = 0xf1000000 + MV643XX_ETH_SHARED_REGS, 25 .end = 0xf1000000 + MV643XX_ETH_SHARED_REGS + 26 MV643XX_ETH_SHARED_REGS_SIZE - 1, 27 .flags = IORESOURCE_MEM, 28 }, 29}; 30 31static struct platform_device mv643xx_eth_shared_device = { 32 .name = MV643XX_ETH_SHARED_NAME, 33 .id = 0, 34 .num_resources = ARRAY_SIZE(mv643xx_eth_shared_resources), 35 .resource = mv643xx_eth_shared_resources, 36}; 37 38static struct resource mv643xx_eth0_resources[] = { 39 [0] = { 40 .name = "eth0 irq", 41 .start = 9, 42 .end = 9, 43 .flags = IORESOURCE_IRQ, 44 }, 45}; 46 47static struct mv643xx_eth_platform_data eth0_pd; 48 49static struct platform_device eth0_device = { 50 .name = MV643XX_ETH_NAME, 51 .id = 0, 52 .num_resources = ARRAY_SIZE(mv643xx_eth0_resources), 53 .resource = mv643xx_eth0_resources, 54 .dev = { 55 .platform_data = &eth0_pd, 56 }, 57}; 58 59static struct resource mv643xx_eth1_resources[] = { 60 [0] = { 61 .name = "eth1 irq", 62 .start = 9, 63 .end = 9, 64 .flags = IORESOURCE_IRQ, 65 }, 66}; 67 68static struct mv643xx_eth_platform_data eth1_pd; 69 70static struct platform_device eth1_device = { 71 .name = MV643XX_ETH_NAME, 72 .id = 1, 73 .num_resources = ARRAY_SIZE(mv643xx_eth1_resources), 74 .resource = mv643xx_eth1_resources, 75 .dev = { 76 .platform_data = &eth1_pd, 77 }, 78}; 79 80static struct platform_device *mv643xx_eth_pd_devs[] __initdata = { 81 &mv643xx_eth_shared_device, 82 &eth0_device, 83 &eth1_device, 84}; 85 86 87int 88mv643xx_eth_add_pds(void) 89{ 90 int ret = 0; 91 static struct pci_device_id pci_marvell_mv64360[] = { 92 { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, PCI_DEVICE_ID_MARVELL_MV64360) }, 93 { } 94 }; 95 96 if (pci_dev_present(pci_marvell_mv64360)) { 97 ret = platform_add_devices(mv643xx_eth_pd_devs, ARRAY_SIZE(mv643xx_eth_pd_devs)); 98 } 99 return ret; 100} 101device_initcall(mv643xx_eth_add_pds);