- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
s3c2410gpiocfgpin等内核导出函数
s3c2410_gpio_cfgpin等内核导出函数2011-06-29 23:45:34| 分类:嵌入式驱动 | 标签: |字号大中小订阅s3c2410_gpio_cfgpin等内核导出函数收藏//这里面的函数都是内核导出函数/plat-s3c24XX/gpio.c中#include linux/kernel.h#include linux/init.h#include linux/module.h#include linux/interrupt.h#include linux/ioport.h#include linux/io.h#include mach/hardware.h#include mach/gpio-fns.h#include asm/irq.h#include mach/regs-gpio.h//设置gpio的工作模式,是输入,输出还是其他的//s3c2410_gpio_cfgpin(S3C2410_GPB(5),S3C2410_GPIO_INPUT),就是设置GPB5为输入模式void s3c2410_gpio_cfgpin(unsigned int pin, unsigned int function){void __iomem *base = S3C24XX_GPIO_BASE(pin);unsigned long mask;unsigned long con;unsigned long flags;if (pin S3C2410_GPIO_BANKB) {mask = 1 S3C2410_GPIO_OFFSET(pin);} else {mask = 3 S3C2410_GPIO_OFFSET(pin)*2;}switch (function) {case S3C2410_GPIO_LEAVE:mask = 0;function = 0;break;case S3C2410_GPIO_INPUT:case S3C2410_GPIO_OUTPUT:case S3C2410_GPIO_SFN2:case S3C2410_GPIO_SFN3:if (pin S3C2410_GPIO_BANKB) {function -= 1;function = 1;function = S3C2410_GPIO_OFFSET(pin);} else {function = 3;function = S3C2410_GPIO_OFFSET(pin)*2;}}/* modify the specified register wwith IRQs off */local_irq_save(flags);con = __raw_readl(base + 0x00);con = ~mask;con |= function;__raw_writel(con, base + 0x00);local_irq_restore(flags);}EXPORT_SYMBOL(s3c2410_gpio_cfgpin);//作用:返回对应的GPIO的配置情况,例如pin=s3c2410_GPB5,则unsigned int s3c2410_gpio_getcfg(unsigned int pin){void __iomem *base = S3C24XX_GPIO_BASE(pin);unsigned long val = __raw_readl(base);if (pin S3C2410_GPIO_BANKB) {val = S3C2410_GPIO_OFFSET(pin);val = 1;val += 1;} else {val = S3C2410_GPIO_OFFSET(pin)*2;val = 3;}return val | S3C2410_GPIO_INPUT;}EXPORT_SYMBOL(s3c2410_gpio_getcfg);//设置相应的GPIO的上拉电阻,当to为1时候,相应的pin引脚设置为1,表示该GPIO要上拉电阻,to为0时候,相应的pin引脚配置为0,表示不要上拉电阻void s3c2410_gpio_pullup(unsigned int pin, unsigned int to){void __iomem *base = S3C24XX_GPIO_BASE(pin);unsigned long offs = S3C2410_GPIO_OFFSET(pin);unsigned long flags;unsigned long up;if (pin S3C2410_GPIO_BANKB)return;local_irq_save(flags);up = __raw_readl(base + 0x08);u
原创力文档


文档评论(0)