162747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi/* Specification for the SMSC911x NIC
262747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi *
362747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi * Copyright (C) 2006 Matsushita Electric Industrial Co., Ltd.
462747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi * All Rights Reserved.
562747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi *
662747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi * This program is free software; you can redistribute it and/or
762747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi * modify it under the terms of the GNU General Public License
862747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi * as published by the Free Software Foundation; either version
962747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi * 2 of the License, or (at your option) any later version.
1062747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi */
1162747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi
1262747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi#include <linux/kernel.h>
1362747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi#include <linux/init.h>
1462747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi#include <linux/platform_device.h>
1562747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi#include <linux/io.h>
1662747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi#include <linux/ioport.h>
1762747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi#include <linux/smsc911x.h>
1862747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi#include <unit/smsc911x.h>
1962747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi
2062747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchistatic struct smsc911x_platform_config smsc911x_config = {
2162747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi	.irq_polarity	= SMSC911X_IRQ_POLARITY_ACTIVE_LOW,
2262747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi	.irq_type	= SMSC911X_IRQ_TYPE_OPEN_DRAIN,
2362747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi	.flags		= SMSC911X_USE_32BIT,
2462747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi};
2562747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi
2662747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchistatic struct resource smsc911x_resources[] = {
2762747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi	[0] = {
2862747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi		.start	= SMSC911X_BASE,
2962747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi		.end	= SMSC911X_BASE_END,
3062747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi		.flags	= IORESOURCE_MEM,
3162747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi	},
3262747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi	[1] = {
3362747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi		.start	= SMSC911X_IRQ,
3462747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi		.end	= SMSC911X_IRQ,
3562747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi		.flags	= IORESOURCE_IRQ,
3662747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi	},
3762747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi};
3862747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi
3962747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchistatic struct platform_device smsc911x_device = {
4062747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi	.name		= "smsc911x",
4162747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi	.id		= 0,
4262747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi	.num_resources	= ARRAY_SIZE(smsc911x_resources),
4362747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi	.resource	= smsc911x_resources,
4462747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi	.dev		= {
4562747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi		.platform_data = &smsc911x_config,
4662747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi	}
4762747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi};
4862747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi
4962747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi/*
5062747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi * add platform devices
5162747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi */
5262747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchistatic int __init unit_device_init(void)
5362747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi{
5462747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi	platform_device_register(&smsc911x_device);
5562747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi	return 0;
5662747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi}
5762747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchi
5862747cd27ee241ffa32d501e45980cdc441d4a09Akira Takeuchidevice_initcall(unit_device_init);
59