mt_gpio_affix.c 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #include <linux/types.h>
  2. #include "mt-plat/sync_write.h"
  3. #include <linux/types.h>
  4. #include <linux/device.h>
  5. /* #include <mach/mt_gpio.h> */
  6. #include <mt-plat/mt_gpio_core.h>
  7. #include <6735_gpio.h>
  8. void mt_gpio_pin_decrypt(unsigned long *cipher)
  9. {
  10. /* just for debug, find out who used pin number directly */
  11. if ((*cipher & (0x80000000)) == 0) {
  12. GPIOERR("GPIO%u HARDCODE warning!!!\n", (unsigned int)(*cipher));
  13. dump_stack();
  14. /* return; */
  15. }
  16. /* GPIOERR("Pin magic number is %x\n",*cipher); */
  17. *cipher &= ~(0x80000000);
  18. }
  19. /*---------------------------------------------------------------------------*/
  20. static DEVICE_ATTR(pin, 0664, mt_gpio_show_pin, mt_gpio_store_pin);
  21. /*---------------------------------------------------------------------------*/
  22. static struct device_attribute *gpio_attr_list[] = {
  23. &dev_attr_pin,
  24. };
  25. /*---------------------------------------------------------------------------*/
  26. int mt_gpio_create_attr(struct device *dev)
  27. {
  28. int idx, err = 0;
  29. int num = (int)(sizeof(gpio_attr_list)/sizeof(gpio_attr_list[0]));
  30. if (!dev)
  31. return -EINVAL;
  32. for (idx = 0; idx < num; idx++) {
  33. if (device_create_file(dev, gpio_attr_list[idx]))
  34. break;
  35. }
  36. return err;
  37. }
  38. /*---------------------------------------------------------------------------*/
  39. int mt_gpio_delete_attr(struct device *dev)
  40. {
  41. int idx , err = 0;
  42. int num = (int)(sizeof(gpio_attr_list)/sizeof(gpio_attr_list[0]));
  43. if (!dev)
  44. return -EINVAL;
  45. for (idx = 0; idx < num; idx++)
  46. device_remove_file(dev, gpio_attr_list[idx]);
  47. return err;
  48. }