#define VIB_ON 0x11
#define VIB_OFF 0x22
static const struct file_operations GPIO_Viberator_ctl_ops={
.owner = THIS_MODULE,
.open = GPIO_VIB_open,
.read =GPIO_VIB_read,
.write =GPIO_VIB_write,
.ioctl = GPIO_VIB_ioctl,
.release =GPIO_VIB_release,
};
ssize_t GPIO_VIB_read(struct file * file,char * buf,size_t
count,loff_t * f_ops)
{
char sdas[5]={1,3,8,1,6};
ssize_t status = 5;
unsigned long missing;
missing = copy_to_user(buf, sdas, status);
if (missing == status)
status = -EFAULT;
else
status = status - missing;
printk(" GPIO_VIB_read = %d ,count = %d/r/n",status,count);
gpio_direction_output(S3C64XX_GPM(3), 0);//
return status ;
}
ssize_t GPIO_VIB_write (struct file * file,const char * buf, size_t
count,loff_t * f_ops)
{
unsigned long missing;
char inbuffer[512]={0};
int i;
missing = copy_from_user(inbuffer, buf, count);
printk(" GPIO_VIB_write count = %d missing =%d /r/n",count,missing);
gpio_direction_output(S3C64XX_GPM(3), 1);//
for(i=0;i<count;i++)
{
printk("Write:inbuffer[%d]=%d /r/n",i,inbuffer[i]);
}
return count;
}
//ssize_t GPIO_VIB_ioctl(struct inode * inode,struct file *
file,unsigned int cmd, long data)