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

📄 ioc3.h

📁 Axis 221 camera embedded programing interface
💻 H
字号:
/* * This file is subject to the terms and conditions of the GNU General Public * License.  See the file "COPYING" in the main directory of this archive * for more details. * * Copyright (c) 2005 Stanislaw Skowronek <skylark@linux-mips.org> */#ifndef _LINUX_IOC3_H#define _LINUX_IOC3_H#include <asm/sn/ioc3.h>#define IOC3_MAX_SUBMODULES	32#define IOC3_CLASS_NONE		0#define IOC3_CLASS_BASE_IP27	1#define IOC3_CLASS_BASE_IP30	2#define IOC3_CLASS_MENET_123	3#define IOC3_CLASS_MENET_4	4#define IOC3_CLASS_CADDUO	5#define IOC3_CLASS_SERIAL	6/* One of these per IOC3 */struct ioc3_driver_data {	struct list_head list;	int id;				/* IOC3 sequence number */	/* PCI mapping */	unsigned long pma;		/* physical address */	struct ioc3 __iomem *vma;	/* pointer to registers */	struct pci_dev *pdev;		/* PCI device */	/* IRQ stuff */	int dual_irq;			/* set if separate IRQs are used */	int irq_io, irq_eth;		/* IRQ numbers */	/* GPIO magic */	spinlock_t gpio_lock;	unsigned int gpdr_shadow;	/* NIC identifiers */	char nic_part[32];	char nic_serial[16];	char nic_mac[6];	/* submodule set */	int class;	void *data[IOC3_MAX_SUBMODULES];	/* for submodule use */	int active[IOC3_MAX_SUBMODULES];	/* set if probe succeeds */	/* is_ir_lock must be held while	 * modifying sio_ie values, so	 * we can be sure that sio_ie is	 * not changing when we read it	 * along with sio_ir.	 */	spinlock_t ir_lock;	/* SIO_IE[SC] mod lock */};/* One per submodule */struct ioc3_submodule {	char *name;		/* descriptive submodule name */	struct module *owner;	/* owning kernel module */	int ethernet;		/* set for ethernet drivers */	int (*probe) (struct ioc3_submodule *, struct ioc3_driver_data *);	int (*remove) (struct ioc3_submodule *, struct ioc3_driver_data *);	int id;			/* assigned by IOC3, index for the "data" array */	/* IRQ stuff */	unsigned int irq_mask;	/* IOC3 IRQ mask, leave clear for Ethernet */	int reset_mask;		/* non-zero if you want the ioc3.c module to reset interrupts */	int (*intr) (struct ioc3_submodule *, struct ioc3_driver_data *, unsigned int);	/* private submodule data */	void *data;		/* assigned by submodule */};/********************************** * Functions needed by submodules * **********************************/#define IOC3_W_IES		0#define IOC3_W_IEC		1/* registers a submodule for all existing and future IOC3 chips */extern int ioc3_register_submodule(struct ioc3_submodule *);/* unregisters a submodule */extern void ioc3_unregister_submodule(struct ioc3_submodule *);/* enables IRQs indicated by irq_mask for a specified IOC3 chip */extern void ioc3_enable(struct ioc3_submodule *, struct ioc3_driver_data *, unsigned int);/* ackowledges specified IRQs */extern void ioc3_ack(struct ioc3_submodule *, struct ioc3_driver_data *, unsigned int);/* disables IRQs indicated by irq_mask for a specified IOC3 chip */extern void ioc3_disable(struct ioc3_submodule *, struct ioc3_driver_data *, unsigned int);/* atomically sets GPCR bits */extern void ioc3_gpcr_set(struct ioc3_driver_data *, unsigned int);/* general ireg writer */extern void ioc3_write_ireg(struct ioc3_driver_data *idd, uint32_t value, int reg);#endif

⌨️ 快捷键说明

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