Merge branch 'for-linus' of git://git.kernel.dk/linux-block
[firefly-linux-kernel-4.4.55.git] / drivers / memory / omap-gpmc.c
index 3a27a84ad3ec376a2543c1ac9568c30e5d7c131b..6515dfc2b805d6c5198756e17bacd23724689dac 100644 (file)
@@ -696,7 +696,6 @@ int gpmc_cs_set_timings(int cs, const struct gpmc_timings *t,
        int div;
        u32 l;
 
-       gpmc_cs_show_timings(cs, "before gpmc_cs_set_timings");
        div = gpmc_calc_divider(t->sync_clk);
        if (div < 0)
                return div;
@@ -1176,8 +1175,8 @@ static int gpmc_setup_irq(void)
                gpmc_client_irq[i].irq = gpmc_irq_start + i;
                irq_set_chip_and_handler(gpmc_client_irq[i].irq,
                                        &gpmc_irq_chip, handle_simple_irq);
-               set_irq_flags(gpmc_client_irq[i].irq,
-                               IRQF_VALID | IRQF_NOAUTOEN);
+               irq_modify_status(gpmc_client_irq[i].irq, IRQ_NOREQUEST,
+                                 IRQ_NOAUTOEN);
        }
 
        /* Disable interrupts */
@@ -1200,7 +1199,6 @@ static int gpmc_free_irq(void)
        for (i = 0; i < GPMC_NR_IRQ; i++) {
                irq_set_handler(gpmc_client_irq[i].irq, NULL);
                irq_set_chip(gpmc_client_irq[i].irq, &no_irq_chip);
-               irq_modify_status(gpmc_client_irq[i].irq, 0, 0);
        }
 
        irq_free_descs(gpmc_irq_start, GPMC_NR_IRQ);
@@ -1989,6 +1987,7 @@ static int gpmc_probe_generic_child(struct platform_device *pdev,
        if (ret < 0)
                goto err;
 
+       gpmc_cs_show_timings(cs, "before gpmc_cs_program_settings");
        ret = gpmc_cs_program_settings(cs, &gpmc_s);
        if (ret < 0)
                goto err;
@@ -2245,6 +2244,9 @@ void omap3_gpmc_save_context(void)
 {
        int i;
 
+       if (!gpmc_base)
+               return;
+
        gpmc_context.sysconfig = gpmc_read_reg(GPMC_SYSCONFIG);
        gpmc_context.irqenable = gpmc_read_reg(GPMC_IRQENABLE);
        gpmc_context.timeout_ctrl = gpmc_read_reg(GPMC_TIMEOUT_CONTROL);
@@ -2277,6 +2279,9 @@ void omap3_gpmc_restore_context(void)
 {
        int i;
 
+       if (!gpmc_base)
+               return;
+
        gpmc_write_reg(GPMC_SYSCONFIG, gpmc_context.sysconfig);
        gpmc_write_reg(GPMC_IRQENABLE, gpmc_context.irqenable);
        gpmc_write_reg(GPMC_TIMEOUT_CONTROL, gpmc_context.timeout_ctrl);