⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 platform.c

📁 linux 内核源代码
💻 C
字号:
/* * Platform device support for Philips PNX8550 SoCs * * Copyright 2005, Embedded Alley Solutions, Inc * * Based on arch/mips/au1000/common/platform.c * Platform device support for Au1x00 SoCs. * * Copyright 2004, Matt Porter <mporter@kernel.crashing.org> * * This file is licensed under the terms of the GNU General Public * License version 2.  This program is licensed "as is" without any * warranty of any kind, whether express or implied. */#include <linux/device.h>#include <linux/kernel.h>#include <linux/init.h>#include <linux/resource.h>#include <linux/serial.h>#include <linux/serial_pnx8xxx.h>#include <linux/platform_device.h>#include <int.h>#include <usb.h>#include <uart.h>static struct resource pnx8550_usb_ohci_resources[] = {	[0] = {		.start		= PNX8550_USB_OHCI_OP_BASE,		.end		= PNX8550_USB_OHCI_OP_BASE +				  PNX8550_USB_OHCI_OP_LEN,		.flags		= IORESOURCE_MEM,	},	[1] = {		.start		= PNX8550_INT_USB,		.end		= PNX8550_INT_USB,		.flags		= IORESOURCE_IRQ,	},};static struct resource pnx8550_uart_resources[] = {	[0] = {		.start		= PNX8550_UART_PORT0,		.end		= PNX8550_UART_PORT0 + 0xfff,		.flags		= IORESOURCE_MEM,	},	[1] = {		.start		= PNX8550_UART_INT(0),		.end		= PNX8550_UART_INT(0),		.flags		= IORESOURCE_IRQ,	},	[2] = {		.start		= PNX8550_UART_PORT1,		.end		= PNX8550_UART_PORT1 + 0xfff,		.flags		= IORESOURCE_MEM,	},	[3] = {		.start		= PNX8550_UART_INT(1),		.end		= PNX8550_UART_INT(1),		.flags		= IORESOURCE_IRQ,	},};struct pnx8xxx_port pnx8xxx_ports[] = {	[0] = {		.port   = {			.type		= PORT_PNX8XXX,			.iotype		= UPIO_MEM,			.membase	= (void __iomem *)PNX8550_UART_PORT0,			.mapbase	= PNX8550_UART_PORT0,			.irq		= PNX8550_UART_INT(0),			.uartclk	= 3692300,			.fifosize	= 16,			.flags		= UPF_BOOT_AUTOCONF,			.line		= 0,		},	},	[1] = {		.port   = {			.type		= PORT_PNX8XXX,			.iotype		= UPIO_MEM,			.membase	= (void __iomem *)PNX8550_UART_PORT1,			.mapbase	= PNX8550_UART_PORT1,			.irq		= PNX8550_UART_INT(1),			.uartclk	= 3692300,			.fifosize	= 16,			.flags		= UPF_BOOT_AUTOCONF,			.line		= 1,		},	},};/* The dmamask must be set for OHCI to work */static u64 ohci_dmamask = ~(u32)0;static u64 uart_dmamask = ~(u32)0;static struct platform_device pnx8550_usb_ohci_device = {	.name		= "pnx8550-ohci",	.id		= -1,	.dev = {		.dma_mask		= &ohci_dmamask,		.coherent_dma_mask	= 0xffffffff,	},	.num_resources	= ARRAY_SIZE(pnx8550_usb_ohci_resources),	.resource	= pnx8550_usb_ohci_resources,};static struct platform_device pnx8550_uart_device = {	.name		= "pnx8xxx-uart",	.id		= -1,	.dev = {		.dma_mask		= &uart_dmamask,		.coherent_dma_mask	= 0xffffffff,		.platform_data = pnx8xxx_ports,	},	.num_resources	= ARRAY_SIZE(pnx8550_uart_resources),	.resource	= pnx8550_uart_resources,};static struct platform_device *pnx8550_platform_devices[] __initdata = {	&pnx8550_usb_ohci_device,	&pnx8550_uart_device,};static int __init pnx8550_platform_init(void){	return platform_add_devices(pnx8550_platform_devices,			            ARRAY_SIZE(pnx8550_platform_devices));}arch_initcall(pnx8550_platform_init);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -