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

📄 l3-sa1111.c

📁 linux和2410结合开发 用他可以生成2410所需的zImage文件
💻 C
字号:
/* * L3 SA1111 algorithm/adapter module. * *  By Russell King, *    gratuitously ripped from sa1111-uda1341.c by John Dorsey. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */#include <linux/module.h>#include <linux/init.h>#include <linux/delay.h>#include <linux/errno.h>#include <linux/l3/l3.h>#include <asm/hardware.h>#include <asm/semaphore.h>#include <asm/mach-types.h>#include <asm/arch/assabet.h>#include <asm/hardware/sa1111.h>static inline unsigned char l3_sa1111_recv_byte(unsigned char addr){	unsigned char dat;	L3_CAR = addr;	while ((SASR0 & SASR0_L3RD) == 0)		mdelay(1);	dat = L3_CDR;	SASCR = SASCR_RDD;	return dat;}static void l3_sa1111_recv_msg(struct l3_msg *msg){	int len = msg->len;	char *p = msg->buf;	if (len > 1) {		SACR1 |= SACR1_L3MB;		while ((len--) > 1)			*p++ = l3_sa1111_recv_byte(msg->addr);	}	SACR1 &= ~SACR1_L3MB;	*p = l3_sa1111_recv_byte(msg->addr);}static inline void l3_sa1111_send_byte(unsigned char addr, unsigned char dat){	L3_CAR = addr;	L3_CDR = dat;	while ((SASR0 & SASR0_L3WD) == 0)		mdelay(1);	SASCR = SASCR_DTS;}static void l3_sa1111_send_msg(struct l3_msg *msg){	int len = msg->len;	char *p = msg->buf;	if (len > 1) {		SACR1 |= SACR1_L3MB;		while ((len--) > 1)			l3_sa1111_send_byte(msg->addr, *p++);	}	SACR1 &= ~SACR1_L3MB;	l3_sa1111_send_byte(msg->addr, *p);}static int l3_sa1111_xfer(struct l3_adapter *adap, struct l3_msg msgs[], int num){	int i;	for (i = 0; i < num; i++) {		struct l3_msg *pmsg = &msgs[i];		if (pmsg->flags & L3_M_RD)			l3_sa1111_recv_msg(pmsg);		else			l3_sa1111_send_msg(pmsg);	}	return num;}static struct l3_algorithm l3_sa1111_algo = {	name:		"L3 SA1111 algorithm",	xfer:		l3_sa1111_xfer,};static DECLARE_MUTEX(sa1111_lock);static struct l3_adapter l3_sa1111_adapter = {	owner:		THIS_MODULE,	name:		"l3-sa1111",	algo:		&l3_sa1111_algo,	lock:		&sa1111_lock,};static int __init l3_sa1111_init(void){	int ret = -ENODEV;	if ((machine_is_assabet() && machine_has_neponset()) ||	    machine_is_jornada720() ||	    machine_is_badge4())		ret = l3_add_adapter(&l3_sa1111_adapter);	return ret;}static void __exit l3_sa1111_exit(void){	l3_del_adapter(&l3_sa1111_adapter);}module_init(l3_sa1111_init);module_exit(l3_sa1111_exit);

⌨️ 快捷键说明

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