iTOP-4412οLEDܣ
2014-06-12

iTOP-4412ӢṩLEDܣԭͼʾ

ԭͼԿLEDһӵԴVSYSϣһͨܽӵأͨܵĻԵرLEDܵĻֱͨװӵİExynos 4412GPIO GPL2_0GPK1_1ϡ

һ½ѾiTOP-4412GPIOLED潫õһ½ڽܵļGPIOĺ

LEDںleds_initʵ£

static int __init leds_init(void)

{

return platform_driver_register(&leds_driver);

}

úں˺platform_driver_registerںעһӲ豸IJһplatform_driverṹleds_driver£

static struct platform_driver leds_driver = {

.probe = leds_probe,

.remove = leds_remove,

.suspend = leds_suspend,

.resume = leds_resume,

.driver = {

.name = DRIVER_NAME,

.owner = THIS_MODULE,

},

};

ں˵platform_driver_registerעӲ豸ʱջõplatform_driverṹprobe̽⺯iTOP-4412LED̽⺯leds_probe£

static int leds_probe(struct platform_device *pdev)

int ret, i;

char *banner = "leds Initialize\n";

printk(banner);

for(i=0; i< LED_NUM; i++ )

{

ret = gpio_request(led_gpios[i], "LED");

if (ret) {

printk("%s: request GPIO %d for LED failed, ret = %d\n", DRIVER_NAME,

led_gpios[i], ret);

return ret;

}

s3c_gpio_cfgpin(led_gpios[i], S3C_GPIO_OUTPUT);

gpio_set_value(led_gpios[i], 1);

}

ret = misc_register(&leds_dev);

if(ret<0)

{

printk("leds
:register device failed!\n");

goto exit;

}

return 0;

exit:

misc_deregister(&leds_dev);

return ret;

}

ʹGPIOIJLEDGPIOŵĹΪĬߵƽLEDGPIOĶled_gpiosУ£

static int led_gpios[] = {

EXYNOS4_GPL2(0),

EXYNOS4_GPK1(1),

};

ŻصLED̽⺯¿Żmisc_registerںעַ豸misc_registerݵIJmiscdevicemiscdevice豸ǶʽϵͳõñȽ϶һ豸Linuxں˵include/linuxĿ¼Miscdevice.hļҪԼmisc device豸ŶʵΪЩַ豸Ԥȷַ豸룬Щ豸10 һmisc deviceʵmisc_register10register_chrdev()ġiTOP-4412LEDmiscdeviceĽṹ£

static struct miscdevice leds_dev = {

.minor = MISC_DYNAMIC_MINOR,

.fops = &leds_ops,

.name = "leds",

};

ĶԿminor豸ŶMISC_DYNAMIC_MINORmiscϵͳ豸ŶMISC_DYNAMIC_MINORôעʱں˻ᶯ̬Ϊ豸豸šLED/devu¼´豸ڵleds

ṩ豸ļļopen,release,ioctlϲӦȵopenleds豸Ȼioctlledleds_ioctlʵʾ

long leds_ioctl(struct file *filp,unsigned int cmd,unsigned long arg)

{

printk("debug: leds_ioctl cmd is %d\n" , cmd);

switch(cmd)

{

case 0:

case 1:

if (arg > LED_NUM) {

return -EINVAL;

}

gpio_set_value(led_gpios[arg], cmd);

break;

default:

return -EINVAL;

}

return 0;

}

ͨĴ룬֪ϲӦʹioctlҪcmdargcmdled״̬01argǴĸled
  • ѯ
  • ҷϢ
  • 绰ѯ

  • 01085270716
XML 地图