。
writel(5, SW_MUX_GPIO1_IO03);
寄存器SW_PAD_GPIO1_IO03设置IO属性
bit 16:0 HYS关闭
bit [15:14]: 00 默认下拉
bit [13]: 0 kepper功能
bit [12]: 1 pull/keeper使能
bit [11]: 0 关闭开路输出
bit [7:6]: 10 速度100Mhz
bit [5:3]: 110 R0/6驱动能力
bit [0]: 0 低转换率
writel(0x10B0, SW_PAD_GPIO1_IO03);
4、设置GPIO1_IO03为输出功能
val = readl(GPIO1_GDIR);
val &= ~(1 << 3); 清除以前的设置
val |= (1 << 3); 设置为输出
writel(val, GPIO1_GDIR);
5、默认关闭LED
val = readl(GPIO1_DR);
val |= (1 << 3);
writel(val, GPIO1_DR);
或
writel(readl(led_dev->GPIO1_DR) | (1 << 3),led_dev->GPIO1_DR);
*/
return 0;
err_2:
class_destroy(led_dev->cls);
err_1:
unregister_chrdev(led_dev->dev_major, "chr_dev_test");
err_0:
kfree(&led_dev);
return ret;
return ret;
}
static void __exit chr_dev_exit(void)
{
//一般都是释放资源
/* 取消映射 */
iounmap(IMX6U_CCM_CCGR1);
iounmap(SW_MUX_GPIO1_IO03);
iounmap(SW_PAD_GPIO1_IO03);
iounmap(GPIO1_DR);
iounmap(GPIO1_GDIR);
device_destroy(led_dev->cls, MKDEV(led_dev->dev_major, 0));
class_destroy(led_dev->cls);
unregister_chrdev(led_dev->dev_major, "chr_dev_test");
}
//①实现模块的加载和卸载入口函数
module_init(chr_dev_init);
module_exit(chr_dev_exit);
MODULE_LICENSE("GPL");
|