blob: 46176b804576be9b1a74663437112e2a864b66c4 [file] [log] [blame]
Steven J. Hill30700332012-05-30 21:02:49 +00001/*
2 * This file is subject to the terms and conditions of the GNU General Public
3 * License. See the file "COPYING" in the main directory of this archive
4 * for more details.
5 *
6 * Copyright (C) 2012 MIPS Technologies, Inc. All rights reserved.
7 */
8#include <linux/module.h>
9#include <linux/irq.h>
Andrew Bresticker4060bbe2014-10-20 12:03:53 -070010#include <linux/irqchip/mips-gic.h>
Steven J. Hill30700332012-05-30 21:02:49 +000011#include <linux/platform_device.h>
12#include <linux/smsc911x.h>
13
Andrew Bresticker18743d22014-09-18 14:47:24 -070014#include <asm/mips-boards/sead3int.h>
15
Steven J. Hill30700332012-05-30 21:02:49 +000016static struct smsc911x_platform_config sead3_smsc911x_data = {
17 .irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW,
18 .irq_type = SMSC911X_IRQ_TYPE_PUSH_PULL,
19 .flags = SMSC911X_USE_32BIT | SMSC911X_SAVE_MAC_ADDRESS,
20 .phy_interface = PHY_INTERFACE_MODE_MII,
21};
22
Andrew Bresticker18743d22014-09-18 14:47:24 -070023struct resource sead3_net_resources[] = {
Steven J. Hill30700332012-05-30 21:02:49 +000024 {
Ralf Baechle70342282013-01-22 12:59:30 +010025 .start = 0x1f010000,
26 .end = 0x1f01ffff,
Steven J. Hill30700332012-05-30 21:02:49 +000027 .flags = IORESOURCE_MEM
28 },
29 {
Steven J. Hill30700332012-05-30 21:02:49 +000030 .flags = IORESOURCE_IRQ
31 }
32};
33
34static struct platform_device sead3_net_device = {
35 .name = "smsc911x",
36 .id = 0,
37 .dev = {
38 .platform_data = &sead3_smsc911x_data,
39 },
Andrew Bresticker18743d22014-09-18 14:47:24 -070040 .num_resources = ARRAY_SIZE(sead3_net_resources),
41 .resource = sead3_net_resources
Steven J. Hill30700332012-05-30 21:02:49 +000042};
43
44static int __init sead3_net_init(void)
45{
Andrew Bresticker18743d22014-09-18 14:47:24 -070046 if (gic_present)
47 sead3_net_resources[1].start = MIPS_GIC_IRQ_BASE + GIC_INT_NET;
48 else
49 sead3_net_resources[1].start = MIPS_CPU_IRQ_BASE + CPU_INT_NET;
Steven J. Hill30700332012-05-30 21:02:49 +000050 return platform_device_register(&sead3_net_device);
51}
52
53module_init(sead3_net_init);
54
55MODULE_AUTHOR("Chris Dearman <chris@mips.com>");
56MODULE_LICENSE("GPL");
57MODULE_DESCRIPTION("Network probe driver for SEAD-3");