These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / arch / arm / mach-pxa / pcm990-baseboard.c
index 2897da2..b71c96f 100644 (file)
@@ -24,6 +24,7 @@
 #include <linux/platform_device.h>
 #include <linux/i2c.h>
 #include <linux/i2c/pxa-i2c.h>
+#include <linux/pwm.h>
 #include <linux/pwm_backlight.h>
 
 #include <media/mt9v022.h>
@@ -148,11 +149,14 @@ static struct pxafb_mach_info pcm990_fbinfo __initdata = {
 };
 #endif
 
+static struct pwm_lookup pcm990_pwm_lookup[] = {
+       PWM_LOOKUP("pxa27x-pwm.0", 0, "pwm-backlight.0", NULL, 78770,
+                  PWM_POLARITY_NORMAL),
+};
+
 static struct platform_pwm_backlight_data pcm990_backlight_data = {
-       .pwm_id         = 0,
        .max_brightness = 1023,
        .dft_brightness = 1023,
-       .pwm_period_ns  = 78770,
        .enable_gpio    = -1,
 };
 
@@ -284,8 +288,9 @@ static struct irq_chip pcm990_irq_chip = {
        .irq_unmask     = pcm990_unmask_irq,
 };
 
-static void pcm990_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void pcm990_irq_handler(struct irq_desc *desc)
 {
+       unsigned int irq;
        unsigned long pending;
 
        pending = ~pcm990_cpld_readb(PCM990_CTRL_INTSETCLR);
@@ -311,7 +316,7 @@ static void __init pcm990_init_irq(void)
        for (irq = PCM027_IRQ(0); irq <= PCM027_IRQ(3); irq++) {
                irq_set_chip_and_handler(irq, &pcm990_irq_chip,
                                         handle_level_irq);
-               set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
+               irq_clear_status_flags(irq, IRQ_NOREQUEST | IRQ_NOPROBE);
        }
 
        /* disable all Interrupts */
@@ -541,6 +546,7 @@ void __init pcm990_baseboard_init(void)
 #ifndef CONFIG_PCM990_DISPLAY_NONE
        pxa_set_fb_info(NULL, &pcm990_fbinfo);
 #endif
+       pwm_add_table(pcm990_pwm_lookup, ARRAY_SIZE(pcm990_pwm_lookup));
        platform_device_register(&pcm990_backlight_device);
 
        /* MMC */