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

  • 大小: 33KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2021-05-09
  • 語言: 其他
  • 標簽: linux??驅動??LED??OK6410??

資源簡介

OK6410 linux混雜設備驅動LED程序,使用3.0.1內核編譯,還有驅動源碼、Makefile和測試程序

資源截圖

代碼片段和文件信息

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

#include?
#include?
#include?

#include?
#include?
#include?“led.h“

#define?DEVICE_NAME?“LED“

static?int?led_open(struct?inode?*inodestruct?file?*filp)
{
unsigned?int?tmp;

tmp?=?readl(S3C64XX_GPMCON);
tmp?=?(tmp?&?~(0xFFFFU))?|?(0x1111U);
writel(tmpS3C64XX_GPMCON);
tmp?=?readl(S3C64XX_GPMDAT);
tmp?|=?(0xFU);
writel(tmpS3C64XX_GPMDAT);
printk(“configure?led?init\n“);

return?0;
}

static?ssize_t?led_read(struct?file?*filpchar?__user?*bufsize_t?countloff_t?*f_pos)
{
unsigned?int?tmp;

tmp?=?readl(S3C64XX_GPMDAT);
if(copy_to_user(buf&tmp1))
{
printk(“led?read?copy?to?user?fail\n“);
return?-EFAULT;;
}
return?0;
}

static?ssize_t?led_write(struct?file?*filpconst?char?__user?*bufsize_t?countloff_t?*f_pos)
{
char?wbuf[10]; //防止傳遞下來數據過多
unsigned?int?tmp;

copy_from_user(wbufbufcount);
wbuf[0]?=?wbuf[0]&0xFU;
tmp?=?readl(S3C64XX_GPMDAT);
tmp?=?(tmp?&?~(0xFU))?|?(~wbuf[0]);
writel(tmpS3C64XX_GPMDAT);

return?count;
}

static?int?led_release(struct?inode?*inodestruct?file?*filp)
{
printk(“#########led?module?release########\n“);
return?0;
}

static?long?led_ioctl?(struct?file?*filp?unsigned?int?cmd?unsigned?long?arg)
{
int?err?=?0;
unsigned?int?tmp?=?0;
int?count?=?0;

?/*?檢測命令的有效性?*/
???? if?(_IOC_TYPE(cmd)?!=?LED_IOC_MAGIC)?
???????? return?-EINVAL;
???? if?(_IOC_NR(cmd)?>?LED_IOC_MAXNR)?
???????? return?-EINVAL;

?/*?根據命令類型,檢測參數空間是否可以訪問?*/
???? if?(_IOC_DIR(cmd)?&?_IOC_READ)
???????? err?=?!access_ok(VERIFY_WRITE?(void?*)arg?_IOC_SIZE(cmd));
???? else?if?(_IOC_DIR(cmd)?&?_IOC_WRITE)
???????? err?=?!access_ok(VERIFY_READ?(void?*)arg?_IOC_SIZE(cmd));
???? if?(err)?
???????? return?-EFAULT;

switch(cmd)
{
case?LED_LEFT:
for(count?=?1;count<32;)
{
if(count<16)
{
tmp?=?readl(S3C64XX_GPMDAT);
tmp?=?(tmp?&?~(0xFU))?|?(~count);
writel(tmpS3C64XX_GPMDAT);
}
else
{
tmp?=?readl(S3C64XX_GPMDAT);
tmp?=?(tmp?&?~(0xFU));
writel(tmpS3C64XX_GPMDAT);
}
msleep(200);
count?=?count?*?2;
}
break;
case?LED_RIGHT:
for(count?=?8;count!=0;)
{
tmp?=?readl(S3C64XX_GPMDAT);
tmp?=?(tmp?&?~(0xFU))?|?(~count);
writel(tmpS3C64XX_GPMDAT);
msleep(200);
count?=?count?/?2;
}
break;
case?LED_COUNT:
for(count?=?0;count<16;)
{
tmp?=?readl(S3C64XX_GPMDAT);
tmp?=?(tmp?&?~(0xFU))?|?(~count);
writel(tmpS3C64XX_GPMDAT);
msleep(200);
count++;
}
break;
default:
return?-EINVAL;
}

return?0;
}

struct?file_operations?led_fops?=?{
.owner?=?THIS_MODULE
.open?=?led_open
.wri

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????3725??2012-08-20?23:09??led\led.c

?????文件????????295??2012-08-20?22:45??led\led.h

?????文件??????76637??2012-08-20?23:09??led\led.ko

?????文件???????5985??2012-08-20?23:09??led\test

?????文件????????762??2012-08-20?23:09??led\test.c

?????目錄??????????0??2012-08-21?12:08??led

-----------?---------??----------?-----??----

????????????????87404????????????????????6


評論

共有 條評論