亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? main.h

?? PCM9880是一塊PC/104界面的雙端口隔離CAN總線通訊卡
?? H
字號:
/* main.h * Header file for the Linux CAN-bus driver. * Written by Arnaud Westenberg email:arnaud@wanadoo.nl * This software is released under the GPL-License. * Version 0.7  6 Aug 2001 */#include <linux/fs.h>#include <linux/version.h>#include <linux/wait.h>#include <asm/io.h>#include "./can.h"#include "./constants.h"#ifdef CAN_DEBUG	#define DEBUGMSG(fmt,args...) printk(KERN_ERR "can.o (debug): " fmt,\	##args)#else	#define DEBUGMSG(fmt,args...)#endif#define CANMSG(fmt,args...) printk(KERN_ERR "can.o: " fmt,##args)#define MINOR_NR \	(MINOR(file->f_dentry->d_inode->i_rdev))#define MSG_OFFSET(object) ((object)*0x10)struct canhardware_t {	int nr_boards;	struct rtr_id *rtr_queue;	spinlock_t rtr_lock;	struct candevice_t *candevice[MAX_HW_CARDS];};struct candevice_t {	char *hwname;	unsigned long io_addr;	unsigned long res_addr;	unsigned int flags;	/* Hardware chip configuration. In case of multiple chips *chip	 * is the first in an array of chip_t structures.	 */	int nr_82527_chips;	int nr_sja1000_chips;	struct chip_t *chip[MAX_HW_CHIPS];	struct hwspecops_t *hwspecops;	struct canhardware_t *hosthardware_p;};struct chip_t {	char *chip_type;	int chip_irq;	unsigned long chip_base_addr;	unsigned int flags;	int clock; // Chip clock in Hz	/* sja_cdr_reg holds hardware specific options for the Clock Divider	 * register. Options defined in the sja1000.h file:	 * CDR_CLKOUT_MASK, CDR_CLK_OFF, CDR_RXINPEN, CDR_CBP, CDR_PELICAN	 *	 * sja_ocr_reg holds hardware specific options for the Output Control	 * register. Options defined in the sja1000.h file:	 * OCR_MODE_BIPHASE, OCR_MODE_TEST, OCR_MODE_NORMAL, OCR_MODE_CLOCK,	 * OCR_TX0_LH, OCR_TX1_ZZ.	 *	 * int_clk_reg holds hardware specific options for the Clock Out	 * register. Options defined in the i82527.h file:	 * iCLK_CD0, iCLK_CD1, iCLK_CD2, iCLK_CD3, iCLK_SL0, iCLK_SL1.	 *	 * int_bus_reg holds hardware specific options for the Bus Configuration	 * register. Options defined in the i82527.h file:	 * iBUS_DR0, iBUS_DR1, iBUS_DT1, iBUS_POL, iBUS_CBY.	 *	 * int_cpu_reg holds hardware specific options for the CPU Interface	 * register. Options defined in the i82527.h file:	 * iCPU_CEN, iCPU_MUX, iCPU_SLP, iCPU_PWD, iCPU_DMC, iCPU_DSC, iCPU_RST.	 */	unsigned short sja_cdr_reg; // sja1000 only!	unsigned short sja_ocr_reg; // sja1000 only!	unsigned short int_cpu_reg; // intel 82527 only!	unsigned short int_clk_reg; // intel 82527 only!	unsigned short int_bus_reg; // intel 82527 only!	struct msgobj_t *msgobj[MAX_MSGOBJS];	struct chipspecops_t *chipspecops;	struct candevice_t *hostdevice;};struct msgobj_t {	unsigned long obj_base_addr;	unsigned int minor;	unsigned int object;	unsigned int flags; 	int ret;	struct canfifo_t *fifo;	struct chip_t *hostchip;};struct hwspecops_t {	int (*request_io)(unsigned long io_addr);	int (*release_io)(unsigned long io_addr);	int (*reset)(int card);	int (*init_hw_data)(int card);	int (*init_chip_data)(int card, int chipnr);	int (*init_obj_data)(int chipnr, int objnr);	void (*write_register)(unsigned char data,unsigned long address);	unsigned (*read_register)(unsigned long address);	int (*program_irq)(int card);};struct chipspecops_t {	int (*chip_config)(struct chip_t *chip);	int (*baud_rate)(struct chip_t *chip, int rate, int clock, int sjw,						int sampl_pt, int flags);	int (*standard_mask)(struct chip_t *chip, unsigned short code, 							unsigned short mask);	int (*extended_mask)(struct chip_t *chip, unsigned long code, 							unsigned long mask);	int (*message15_mask)(struct chip_t *chip, unsigned long code, 							unsigned long mask);	int (*clear_objects)(struct chip_t *chip);	int (*config_irqs)(struct chip_t *chip, short irqs);	int (*pre_read_config)(struct chip_t *chip, struct msgobj_t *obj);	int (*pre_write_config)(struct chip_t *chip, struct msgobj_t *obj,							struct canmsg_t *msg);	int (*send_msg)(struct chip_t *chip, struct msgobj_t *obj,							struct canmsg_t *msg);	int (*remote_request)(struct chip_t *chip, struct msgobj_t *obj);	int (*check_tx_stat)(struct chip_t *chip);	int (*enable_configuration)(struct chip_t *chip);	int (*disable_configuration)(struct chip_t *chip);	int (*set_btregs)(struct chip_t *chip, unsigned short btr0, 							unsigned short btr1);	int (*start_chip)(struct chip_t *chip);	int (*stop_chip)(struct chip_t *chip);	void (*irq_handler)(int irq, void *dev_id, struct pt_regs *regs);};struct mem_addr {	void *address;	struct mem_addr *next;};/* Structure for the drivers main input and output buffers. The readq, writeq * entries are the wait queues for the driver to sleep on in case of blocking * read/write calls. buf_rx_entry and buf_tx_entry are pointers to the input and * output buffers. The buffers are dynamically allocated. The tx_readp, * tx_writep, rx_readp and rx_writep pointers are the various read/write  * pointers used when reading or writing the input and output buffers. The  * rx/tx_size entries are the dynamically allocated input and output buffer size * The rx/tx_in_progress entries are used to determine whether the device is  * already set up for transmission. */#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,2,19))struct canfifo_t {	struct wait_queue *readq, *writeq; 	struct canmsg_t *buf_tx_entry;	struct canmsg_t *buf_rx_entry; 	struct canmsg_t *tx_readp;	struct canmsg_t *rx_writep;	struct canmsg_t *tx_writep;	struct canmsg_t *rx_readp;	int rx_size, tx_size;	volatile int rx_in_progress, tx_in_progress;	int head, tail; //TEMP!!!};#elsestruct canfifo_t {	struct __wait_queue_head readq;	struct __wait_queue_head writeq;	struct canmsg_t *buf_tx_entry;	struct canmsg_t *buf_rx_entry; 	struct canmsg_t *tx_readp;	struct canmsg_t *rx_writep;	struct canmsg_t *tx_writep;	struct canmsg_t *rx_readp;	int rx_size, tx_size;	volatile int rx_in_progress, tx_in_progress;	int head, tail; //TEMP!!!};#endif/* Structure for the RTR queue */struct rtr_id {	unsigned long id;	struct canmsg_t *rtr_message;#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,2,19))	struct wait_queue *rtr_wq;#else	struct __wait_queue_head rtr_wq;#endif	struct rtr_id *next;};extern int major;extern int minor[MAX_TOT_CHIPS];extern int extended;extern int baudrate;extern char *hw[MAX_HW_CARDS];extern int irq[MAX_IRQ];extern unsigned long io[MAX_HW_CARDS];extern struct canhardware_t *hardware_p;extern struct candevice_t *candevices_p[MAX_HW_CARDS];extern struct chip_t *chips_p[MAX_TOT_CHIPS];extern struct msgobj_t *objects_p[MAX_TOT_MSGOBJS];extern struct mem_addr *mem_head;/* Inline function to write to the hardware registers. The argument address is  * relative to the memory map of the chip and not the absolute memory address. */extern inline void can_write_reg(struct chip_t *chip, unsigned char data, unsigned short address){	unsigned short segment_number;	unsigned long address_to_write;	address_to_write = chip->chip_base_addr+address;	if ( (chip->flags & SEGMENTED) != 0) {		segment_number = (unsigned short)(address >> 6);		address_to_write += SPACING * segment_number;	}	chip->hostdevice->hwspecops->write_register(data, address_to_write);}extern inline unsigned can_read_reg(struct chip_t *chip, unsigned short address){	unsigned short segment_number;	unsigned long address_to_read;	address_to_read = chip->chip_base_addr+address;	if ( (chip->flags & SEGMENTED) != 0) {		segment_number = (unsigned short)(address >> 6);		address_to_read += SPACING * segment_number;	}	return chip->hostdevice->hwspecops->read_register(address_to_read);}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区不卡在线播放| 欧美在线免费观看视频| 精品成人一区二区三区四区| 日韩综合小视频| 91精品免费在线观看| 美女性感视频久久| 久久综合久久综合亚洲| 国产成人亚洲精品青草天美 | 蜜桃精品在线观看| 日韩欧美第一区| 狠狠色丁香九九婷婷综合五月| 久久久青草青青国产亚洲免观| 成人a区在线观看| 亚洲美女视频在线观看| 7777精品伊人久久久大香线蕉| 免费观看日韩电影| 国产精品天天看| 欧美性猛交xxxx乱大交退制版| 日韩电影免费一区| 日本一区二区不卡视频| 色吧成人激情小说| 精品无人区卡一卡二卡三乱码免费卡| 国产亚洲美州欧州综合国| 菠萝蜜视频在线观看一区| 亚洲福利视频一区二区| 久久先锋影音av鲁色资源| 不卡高清视频专区| 日本亚洲视频在线| 国产精品三级av| 欧美猛男超大videosgay| 国模少妇一区二区三区| 一区二区在线电影| 2023国产精品| 欧美美女直播网站| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲日本一区二区三区| 精品少妇一区二区三区在线播放 | 国产精品99久久久久久宅男| 自拍偷自拍亚洲精品播放| 在线不卡中文字幕| 99在线热播精品免费| 奇米综合一区二区三区精品视频| 国产精品久久久久久久久晋中 | 国产婷婷一区二区| 欧美日韩视频在线观看一区二区三区| 国产一区二区三区免费观看| 亚洲午夜精品17c| 国产精品污网站| 日韩欧美专区在线| 欧美综合天天夜夜久久| 成人综合在线观看| 麻豆成人av在线| 天使萌一区二区三区免费观看| 国产精品国产三级国产普通话99| 日韩精品一区在线观看| 欧美精品日日鲁夜夜添| 色综合色狠狠天天综合色| 国产 欧美在线| 国产一区二区在线影院| 美美哒免费高清在线观看视频一区二区| 亚洲素人一区二区| 1区2区3区精品视频| 国产网站一区二区三区| 久久免费看少妇高潮| 欧美va在线播放| 日韩三级在线免费观看| 欧美日韩国产综合久久| 欧美在线视频不卡| 在线观看亚洲a| 在线免费av一区| 99精品视频在线观看免费| 东方欧美亚洲色图在线| 国产河南妇女毛片精品久久久| 精品一区二区综合| 久久99久久久欧美国产| 青青草国产精品亚洲专区无| 三级在线观看一区二区| 日韩有码一区二区三区| 午夜av电影一区| 日韩精品欧美精品| 麻豆精品在线观看| 蜜桃一区二区三区在线观看| 久久99精品一区二区三区| 黄一区二区三区| 国产成人亚洲综合色影视| 丰满白嫩尤物一区二区| 波多野结衣中文字幕一区 | 亚洲视频在线观看三级| 亚洲欧洲在线观看av| 亚洲日本在线观看| 亚洲已满18点击进入久久| 午夜精品在线看| 美国av一区二区| 国产成人免费av在线| 97久久精品人人澡人人爽| 色婷婷av一区二区三区gif| 欧美三级午夜理伦三级中视频| 欧美日韩国产美| 日韩一区二区免费电影| 久久久久久久久久电影| 日韩一区有码在线| 亚洲成av人片观看| 激情小说欧美图片| 99免费精品视频| 欧美乱妇15p| 久久久久亚洲蜜桃| 亚洲欧美另类小说视频| 日韩中文欧美在线| 国产成人久久精品77777最新版本| k8久久久一区二区三区 | 91精品国产91久久综合桃花| 精品国产乱码久久久久久牛牛| 国产精品免费视频网站| 亚洲午夜免费福利视频| 国产精品羞羞答答xxdd| 在线观看视频一区| 欧美精品一区二区三区四区| 国产精品久久影院| 青青草国产成人av片免费| 成人高清免费观看| 欧美美女喷水视频| 国产精品久久综合| 蜜桃av噜噜一区二区三区小说| 成人黄色软件下载| 欧美一级xxx| 专区另类欧美日韩| 激情综合色播激情啊| 在线观看欧美黄色| 国产欧美一二三区| 免费成人在线观看视频| 99精品视频一区二区三区| 精品日韩在线观看| 一区二区三区日韩欧美精品| 国产美女视频一区| 欧美精品久久天天躁| 国产精品久久久爽爽爽麻豆色哟哟| 婷婷开心激情综合| 99久久国产综合色|国产精品| 精品久久一区二区| 婷婷中文字幕综合| 在线国产电影不卡| 亚洲欧美一区二区视频| 国产一区二区三区电影在线观看| 91国产福利在线| 中文字幕一区免费在线观看| 国产在线视视频有精品| 欧美美女视频在线观看| 亚洲综合在线五月| 91麻豆福利精品推荐| 国产精品天干天干在线综合| 精品午夜一区二区三区在线观看| 欧美高清www午色夜在线视频| 亚洲欧美一区二区三区孕妇| 成人丝袜高跟foot| 国产人久久人人人人爽| 国产一区在线观看视频| 日韩欧美成人一区二区| 日本特黄久久久高潮| 欧美午夜宅男影院| 一区二区三区免费在线观看| 99这里只有精品| 亚洲日本欧美天堂| 91美女在线看| 亚洲欧美另类久久久精品| av福利精品导航| 中文字幕不卡的av| 粉嫩高潮美女一区二区三区 | 欧美久久一二区| 亚洲电影视频在线| 欧美日韩视频在线观看一区二区三区 | 精品电影一区二区| 黄色日韩网站视频| 久久久精品黄色| 国产福利一区二区三区视频| 国产亚洲午夜高清国产拍精品| 国产九九视频一区二区三区| 国产人伦精品一区二区| www..com久久爱| 亚洲一区二区三区爽爽爽爽爽| 在线精品视频免费播放| 首页国产欧美久久| 精品人在线二区三区| 国产成人欧美日韩在线电影| 国产精品不卡视频| 欧美影片第一页| 日韩成人免费电影| 久久精品亚洲精品国产欧美 | 国产iv一区二区三区| 老司机精品视频在线| 欧美成人一区二区| 成人免费毛片片v| 亚洲综合成人在线| 日韩免费在线观看| 成人伦理片在线| 亚洲国产中文字幕在线视频综合| 欧美一区二区三区喷汁尤物| 国产一区二区三区四| 亚洲欧美日韩在线播放| 欧美日韩国产高清一区二区三区| 蜜桃视频第一区免费观看|