Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #########################################
- # my dts file for the board.
- #########################################
- pinctrl@01c20800 {
- led_pins_cubieboard2: led_pins@0 {
- allwinner,pins = "PB21";
- allwinner,function = "gpio_out";
- allwinner,drive = <0>;
- allwinner,pull = <0>;
- };
- driver_pins_cubieboard2: driver_pins@0 {
- allwinner,pins = "PH20";
- allwinner,function = "irq";
- allwinner,drive = <0>;
- allwinner,pull = <1>;
- };
- };
- prismlx {
- compatible = "prismlx";
- pinctrl-0 = <&driver_pins_cubieboard2>;
- interrupts-extended = <&pio 7 20>;
- interrupt-names = "rebooter";
- };
- #########################################
- # my platform driver probe.
- #########################################
- static int __init prismlx_probe(struct platform_device *pdev)
- {
- irq = platform_get_irq_byname (pdev, "rebooter");
- printk (KERN_NOTICE "Got IRQ: %d\n", irq);
- if (request_irq(irq, &prismlx_interrupt, IRQF_SHARED | IRQF_RISING, "prismlx_irq", NULL)) {
- printk(KERN_ERR "prismlx-irq: cannot register IRQ %d\n", irq);
- return -EIO;
- }
- printk(KERN_INFO "prismlx-irq: registered for IRQ %d\n", irq);
- return 0;
- }
- ################################################
- # file: ./drivers/pinctrl/sunxi/pinctrl-sunxi.c
- ################################################
- static void sunxi_pmx_set(struct pinctrl_dev *pctldev,
- unsigned pin,
- u8 config)
- {
- ...
- ...
- ...
- printk (KERN_NOTICE "sunxi_pmx_set base %d pin %d addr %x val %08x\n",
- pctl->desc->pin_base,
- pin,
- (unsigned int) pctl->membase + sunxi_mux_reg(pin),
- val
- );
- mask = MUX_PINS_MASK << sunxi_mux_offset(pin);
- writel((val & ~mask) | config << sunxi_mux_offset(pin),
- pctl->membase + sunxi_mux_reg(pin));
- spin_unlock_irqrestore(&pctl->lock, flags);
- }
- static int sunxi_pinctrl_irq_request_resources(struct irq_data *d)
- {
- ...
- ...
- ...
- printk (KERN_NOTICE "sunxi_pinctrl_irq_request_resources val %d HW %lu func %s\n",
- func->muxval,
- irqd_to_hwirq(d),
- func->name
- );
- /* Change muxing to INT mode */
- sunxi_pmx_set(pctl->pctl_dev, pctl->irq_array[d->hwirq], func->muxval);
- return 0;
- }
- ###################################################
- # printk result of insmod prismlx.ko
- ###################################################
- [ 24.526443] sunxi_pctrl_dt_node_to_map PH20 base f009c800 function gpio_in group PA0 ngroups 175
- [ 24.535480] of_irq_parse_one: dev=/prismlx, index=0
- [ 24.540439] of_irq_parse_raw: /soc@01c00000/pinctrl@01c20800:00000007,00000014
- [ 24.547851] Got IRQ: 55
- [ 24.550327] sunxi_pinctrl_irq_request_resources val: 6 HW: 7 func->name: 'irq'
- [ 24.557548] sunxi_pmx_set base 0 pin 231 addr f009c8fc val 01001000
- [ 24.563873] dummy-irq: registered for IRQ 55
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement