Dear all,
Why
I cannot read data form i
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/i
#include <linux/input.h>
#include <linux/delay.h>
#include <linux/clk.h>
#include <linux/gpio.h>
#include <asm/io.h>
#include
"../../../arch/arm/mach-mx51/crm_regs.h"
#include
"../../../arch/arm/mach-mx51/iomux.h"
#define ABC_I
#define I
#define ABC_DD_NAME "abc_dd"
struct abc_dd_priv {
struct i
struct input_dev
*input;
int irq;
};
static irqreturn_t abc_event_handler(int irq, void
*dev_id){
int
i;
u_int8_t
dd_data[10]={0};
struct
abc_dd_priv *priv = dev_id;
memset(dd_data,
0, sizeof(dd_data));
i
for(i=0;i<10;i++){
printk(KERN_INFO
"dd_data[%d]=%d\n",i,dd_data[i]);
}
return
IRQ_HANDLED;
}
/*
------------------------------------------------------------------------- */
static int abc_i
struct
input_dev *abc_inputdev;
struct
abc_dd_priv *priv;
unsigned long tmp;
int
retval;
int res;
priv
= kzalloc(sizeof(struct abc_dd_priv), GFP_KERNEL);
if (!priv)
{
dev_err(&client->dev, "failed to allocate driver data\n");
return -ENOMEM;
}
i
priv->client
= client;
priv->irq
= client->irq;
if(priv->irq){
tmp=readl(MXC_CCM_CWDR);
writel(tmp|0x00000008,
MXC_CCM_CWDR);
res=mxc_request_iomux(MX51_PIN_GPIO1_5,
IOMUX_CONFIG_ALT0);
gpio_config(0,5,false,GPIO_INT_HIGH_LEV);
gpio_request_irq(0,5,GPIO_LOW_PRIO,abc_event_handler,0,ABC_DD_NAME,priv);
}
abc_inputdev
= input_allocate_device();
if
(!abc_inputdev) {
printk(KERN_ERR
"not enough memory for input device\n");
return
-ENOMEM;
}
priv->input
= abc_inputdev;
input_set_drvdata(abc_inputdev,priv);
abc_inputdev->name = ABC_DD_NAME;
retval
= input_register_device(priv->input);
if (retval < 0) {
input_free_device(abc_inputdev);
return
retval;
}
return
0;
}
static const struct i
{
"abc_dd", 0 },
{ }
};
MODULE_DEVICE_TABLE(i
static struct i
.driver = {
.name = ABC_DD_NAME,
.owner =
THIS_MODULE,
},
.probe =
abc_i
.id_table = abc_dd_id,
};
/*
* module load/unload record keeping
*/
static int __init abc_dd_init(void)
{
printk(KERN_INFO
"Diver Initiating...\n");
return
i
}
static void __exit abc_dd_exit(void)
{
i
}
MODULE_AUTHOR("ABC International Inc.");
MODULE_DESCRIPTION("DD driver");
MODULE_LICENSE("GPL");
module_init(abc_dd_init);
module_exit(abc_dd_exit);