static void pwm_width(struct mpc52xx_gpt *gpt, u16 width)
{
out_be32(&gpt->pwm, (width<<16) | MPC52xx_GPT_PWM_OP);
+ //printk("pwm: %p=0x%x\n", gpt, width);
+
}
static void __devinit pwm_init(struct mpc52xx_gpt *gpt)
{
+ //while (((unsigned)gpt & 0xff) != 0x50) gpt++;
out_be32(&gpt->count, (1<<16) | PWM_PERIOD);
pwm_width(gpt, 0);
out_be32(&gpt->mode, MPC52xx_GPT_MODE_PWM);
+
+ //out_be32(&gpt->pwm, (500<<16) | MPC52xx_GPT_PWM_OP); /* REMOVE ME */
+
+ //out_be32(&gpt->mode, MPC52xx_GPT_MODE_GPIO | (2<<4));
+ //printk("pwm: %p\n", gpt);
}
static void pwm_done(struct mpc52xx_gpt *gpt)
return -ENXIO;
}
-/* /\* FIXME: This should be specified in device-tree *\/ */
-/* m->irq = irq_create_of_mapping( */
+ m->irq = irq_of_parse_and_map(dn, 0);
-/* err = request_irq(m->irq, motorek_irq, 0, "motorek", m); */
-/* if (err) */
-/* return err; */
+ err = request_irq(m->irq, motorek_irq, 0, "motorek", m);
+ if (err)
+ return err;
motorek_init(m);
printk(KERN_NOTICE "Removing motorek\n");
+ free_irq(m->irq, m);
+
motorek_done(m);
return 0;
}