91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 7KB
    文件類型: .c
    金幣: 1
    下載: 0 次
    發布日期: 2021-06-04
  • 語言: 其他
  • 標簽: I2C驅動??

資源簡介

2440 linux2.6下I2C驅動,編譯通過,大家可以參考下進行修改

資源截圖

代碼片段和文件信息

#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?

#define?DEVICE??????????“i3c“
#define?DATA_LEN????????6

int?major?=?233;
int?minor?=?0;
void?*R_GPECON*R_GPEUP*R_IICCON*R_IICSTAT*R_IICADD*R_IICDS;

int?IIC_open(struct?inode?*?struct?file?*);
int?IIC_release(struct?inode?*?struct?file?*);
ssize_t?IIC_read(struct?file?*file?char*?buf?size_t?count?loff_t?*f_pos);
unsigned?int?IIC_poll(struct?file*?file?poll_table*?wait);
irqreturn_t?interrupt_handle(?int?irq?void*?dev_id?struct?pt_regs*?regs?);

static?void?address_map(void)
{
#define??IIC_base???????(0x54000000)
#define??IIC_GPECON?????(?IIC_base?+?0x40?)
#define??IIC_GPEUP??????(?IIC_base?+?0x48?)
#define??IIC_CON????????(?IIC_base?+?0x0?)
#define??IIC_STAT???????(?IIC_base?+?0x4?)
#define??IIC_ADDR???????(?IIC_base?+?0x8?)
#define??IIC_DS?????????(?IIC_base?+?0xC?)
????????R_GPECON??=?ioremap(IIC_GPECON4);
????????R_GPEUP???=?ioremap(IIC_GPEUP?4);
????????R_IICCON??=?ioremap(IIC_CON???4);
????????R_IICSTAT?=?ioremap(IIC_STAT??4);
????????R_IICADD??=?ioremap(IIC_ADDR??4);
????????R_IICDS???=?ioremap(IIC_DS????4);
}

static?void?address_unmap(void)
{
????????iounmap(?R_GPECON?);
????????iounmap(?R_GPEUP?);
????????iounmap(?R_IICCON?);
????????iounmap(?R_IICSTAT?);
????????iounmap(?R_IICADD?);
????????iounmap(?R_IICDS?);
}

static?struct?file_operations?fops?=?{
????????owner?:?????????THIS_MODULE
????????read:???????????IIC_read
????????open:???????????IIC_open
????????release:????????IIC_release
????????poll:???????????IIC_poll
};

struct?IIC_dev{
????????wait_queue_head_t?rq;???//?讀取等待隊列
????????uint8_t?*buffer;
????????uint32_t?size;
????????uint32_t?index;
????????struct?semaphore?sem;
????????struct?cdev?cdev;
};
struct?IIC_dev?*my_dev;

static?int?__init?IIC_init(void)
{
????????//?1.?分配主設備號
????????dev_t?devno?=?MKDEV(?major?minor?);
????????int?ret?=?register_chrdev_region(?devno?1?DEVICE?);
????????if(?ret?????????{
??????????printk(KERN_DEBUG?“register?major?number?failed?with?%d\n“?ret);
??????????return?ret;
????????}
????????printk(KERN_DEBUG?“%s:register?major?number?OK\n“DEVICE);

????????//?2.?注冊設備
????????my_dev?=?kmalloc(sizeof(struct?IIC_dev)?GFP_KERNEL);
????????memset(?my_dev?0?sizeof(struct?IIC_dev)?);
????????cdev_init(?&my_dev->cdev?&fops?);
????????my_dev->cdev.ops?=?&fops;
????????my_dev->cdev.owner?=?THIS_MODULE;
????????ret?=?cdev_add(?&my_dev->cdev?devno?1?);
????????if(?ret?????????{
??????????printk(KERN_DEBUG?“register?device?failed?with?%d\n“?ret);
??????????return?ret;
????????}
????????printk(KERN_DEBUG?“%s:register?device?OK\n“DEVICE);

????????//?3.?分配本驅動要使用的內存
????????my_dev->index?=?0;
????????my

評論

共有 條評論