Advertisement
Guest User

Untitled

a guest
Feb 18th, 2015
271
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.95 KB | None | 0 0
  1. #########################################
  2. # my dts file for the board.
  3. #########################################
  4.  
  5. pinctrl@01c20800 {
  6. led_pins_cubieboard2: led_pins@0 {
  7. allwinner,pins = "PB21";
  8. allwinner,function = "gpio_out";
  9. allwinner,drive = <0>;
  10. allwinner,pull = <0>;
  11. };
  12. driver_pins_cubieboard2: driver_pins@0 {
  13. allwinner,pins = "PH20";
  14. allwinner,function = "irq";
  15. allwinner,drive = <0>;
  16. allwinner,pull = <1>;
  17. };
  18. };
  19.  
  20. prismlx {
  21. compatible = "prismlx";
  22. pinctrl-0 = <&driver_pins_cubieboard2>;
  23. interrupts-extended = <&pio 7 20>;
  24. interrupt-names = "rebooter";
  25. };
  26.  
  27. #########################################
  28. # my platform driver probe.
  29. #########################################
  30.  
  31. static int __init prismlx_probe(struct platform_device *pdev)
  32. {
  33.  
  34. irq = platform_get_irq_byname (pdev, "rebooter");
  35. printk (KERN_NOTICE "Got IRQ: %d\n", irq);
  36.  
  37. if (request_irq(irq, &prismlx_interrupt, IRQF_SHARED | IRQF_RISING, "prismlx_irq", NULL)) {
  38. printk(KERN_ERR "prismlx-irq: cannot register IRQ %d\n", irq);
  39. return -EIO;
  40. }
  41. printk(KERN_INFO "prismlx-irq: registered for IRQ %d\n", irq);
  42.  
  43. return 0;
  44. }
  45.  
  46.  
  47. ################################################
  48. # file: ./drivers/pinctrl/sunxi/pinctrl-sunxi.c
  49. ################################################
  50.  
  51. static void sunxi_pmx_set(struct pinctrl_dev *pctldev,
  52. unsigned pin,
  53. u8 config)
  54. {
  55. ...
  56. ...
  57. ...
  58. printk (KERN_NOTICE "sunxi_pmx_set base %d pin %d addr %x val %08x\n",
  59. pctl->desc->pin_base,
  60. pin,
  61. (unsigned int) pctl->membase + sunxi_mux_reg(pin),
  62. val
  63. );
  64.  
  65. mask = MUX_PINS_MASK << sunxi_mux_offset(pin);
  66. writel((val & ~mask) | config << sunxi_mux_offset(pin),
  67. pctl->membase + sunxi_mux_reg(pin));
  68.  
  69. spin_unlock_irqrestore(&pctl->lock, flags);
  70. }
  71.  
  72.  
  73. static int sunxi_pinctrl_irq_request_resources(struct irq_data *d)
  74. {
  75. ...
  76. ...
  77. ...
  78. printk (KERN_NOTICE "sunxi_pinctrl_irq_request_resources val %d HW %lu func %s\n",
  79. func->muxval,
  80. irqd_to_hwirq(d),
  81. func->name
  82. );
  83.  
  84. /* Change muxing to INT mode */
  85. sunxi_pmx_set(pctl->pctl_dev, pctl->irq_array[d->hwirq], func->muxval);
  86.  
  87. return 0;
  88. }
  89.  
  90.  
  91. ###################################################
  92. # printk result of insmod prismlx.ko
  93. ###################################################
  94.  
  95. [ 24.526443] sunxi_pctrl_dt_node_to_map PH20 base f009c800 function gpio_in group PA0 ngroups 175
  96. [ 24.535480] of_irq_parse_one: dev=/prismlx, index=0
  97. [ 24.540439] of_irq_parse_raw: /soc@01c00000/pinctrl@01c20800:00000007,00000014
  98. [ 24.547851] Got IRQ: 55
  99. [ 24.550327] sunxi_pinctrl_irq_request_resources val: 6 HW: 7 func->name: 'irq'
  100. [ 24.557548] sunxi_pmx_set base 0 pin 231 addr f009c8fc val 01001000
  101. [ 24.563873] dummy-irq: registered for IRQ 55
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement