PageRenderTime 21ms CodeModel.GetById 9ms app.highlight 8ms RepoModel.GetById 1ms app.codeStats 0ms

/arch/ppc/platforms/chrp_pegasos_eth.c

https://bitbucket.org/evzijst/gittest
C | 101 lines | 76 code | 13 blank | 12 comment | 1 complexity | 3c4060fd5e41ca5eba2aef87bf4d9b85 MD5 | raw file
  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);