/* #define SAGRAD_1091_1098_EVK_SPI */
 
 #ifdef SAGRAD_1091_1098_EVK_SDIO
-#if 0
-static struct resource cw1200_href_resources[] = {
-       {
-               .start = 215,  /* fix me as appropriate */
-               .end = 215,    /* ditto */
-               .flags = IORESOURCE_IO,
-               .name = "cw1200_wlan_reset",
-       },
-       {
-               .start = 216,  /* fix me as appropriate */
-               .end = 216,    /* ditto */
-               .flags = IORESOURCE_IO,
-               .name = "cw1200_wlan_powerup",
-       },
-       {
-               .start = NOMADIK_GPIO_TO_IRQ(216), /* fix me as appropriate */
-               .end = NOMADIK_GPIO_TO_IRQ(216),   /* ditto */
-               .flags = IORESOURCE_IRQ,
-               .name = "cw1200_wlan_irq",
-       },
-};
-#endif
-
 static int cw1200_power_ctrl(const struct cw1200_platform_data_sdio *pdata,
                             bool enable)
 {
        .ref_clk = 38400,
        .have_5ghz = false,
 #if 0
-       .reset = &cw1200_href_resources[0],
-       .powerup = &cw1200_href_resources[1],
-       .irq = &cw1200_href_resources[2],
+       .reset = GPIO_RF_RESET, /* Replace as appropriate */
+       .powerup = GPIO_RF_POWERUP, /* Replace as appropriate */
+       .irq = GPIO_TO_IRQ(GPIO_RF_IRQ), /* Replace as appropriate */
 #endif
        .power_ctrl = cw1200_power_ctrl,
        .clk_ctrl = cw1200_clk_ctrl,
 #endif
 
 #ifdef SAGRAD_1091_1098_EVK_SPI
-/* Note that this is an example of integrating into your board support file */
-static struct resource cw1200_href_resources[] = {
-       {
-               .start = GPIO_RF_RESET,
-               .end = GPIO_RF_RESET,
-               .flags = IORESOURCE_IO,
-               .name = "cw1200_wlan_reset",
-       },
-       {
-               .start = GPIO_RF_POWERUP,
-               .end = GPIO_RF_POWERUP,
-               .flags = IORESOURCE_IO,
-               .name = "cw1200_wlan_powerup",
-       },
-};
-
 static int cw1200_power_ctrl(const struct cw1200_platform_data_spi *pdata,
                             bool enable)
 {
 static struct cw1200_platform_data_spi cw1200_platform_data = {
        .ref_clk = 38400,
        .spi_bits_per_word = 16,
-       .reset = &cw1200_href_resources[0],
-       .powerup = &cw1200_href_resources[1],
+       .reset = GPIO_RF_RESET, /* Replace as appropriate */
+       .powerup = GPIO_RF_POWERUP, /* Replace as appropriate */
        .power_ctrl = cw1200_power_ctrl,
        .clk_ctrl = cw1200_clk_ctrl,
 /*     .macaddr = ??? */
 
 static int cw1200_request_irq(struct hwbus_priv *self)
 {
        int ret;
-       const struct resource *irq = self->pdata->irq;
        u8 cccr;
 
        cccr = sdio_f0_readb(self->func, SDIO_CCCR_IENx, &ret);
        if (WARN_ON(ret))
                goto err;
 
-       ret = enable_irq_wake(irq->start);
+       ret = enable_irq_wake(self->pdata->irq);
        if (WARN_ON(ret))
                goto err;
 
        /* Request the IRQ */
-       ret =  request_threaded_irq(irq->start, cw1200_gpio_hardirq,
+       ret =  request_threaded_irq(self->pdata->irq, cw1200_gpio_hardirq,
                                    cw1200_gpio_irq,
                                    IRQF_TRIGGER_HIGH | IRQF_ONESHOT,
-                                   irq->name, self);
+                                   "cw1200_wlan_irq", self);
        if (WARN_ON(ret))
                goto err;
 
        pr_debug("SW IRQ unsubscribe\n");
 
        if (self->pdata->irq) {
-               disable_irq_wake(self->pdata->irq->start);
-               free_irq(self->pdata->irq->start, self);
+               disable_irq_wake(self->pdata->irq);
+               free_irq(self->pdata->irq, self);
        } else {
                sdio_claim_host(self->func);
                ret = sdio_release_irq(self->func);
 
 static int cw1200_sdio_off(const struct cw1200_platform_data_sdio *pdata)
 {
-       const struct resource *reset = pdata->reset;
-
-       if (reset) {
-               gpio_set_value(reset->start, 0);
+       if (pdata->reset) {
+               gpio_set_value(pdata->reset, 0);
                msleep(30); /* Min is 2 * CLK32K cycles */
-               gpio_free(reset->start);
+               gpio_free(pdata->reset);
        }
 
        if (pdata->power_ctrl)
 
 static int cw1200_sdio_on(const struct cw1200_platform_data_sdio *pdata)
 {
-       const struct resource *reset = pdata->reset;
-       const struct resource *powerup = pdata->powerup;
-
        /* Ensure I/Os are pulled low */
-       if (reset) {
-               gpio_request(reset->start, reset->name);
-               gpio_direction_output(reset->start, 0);
+       if (pdata->reset) {
+               gpio_request(pdata->reset, "cw1200_wlan_reset");
+               gpio_direction_output(pdata->reset, 0);
        }
-       if (powerup) {
-               gpio_request(powerup->start, powerup->name);
-               gpio_direction_output(powerup->start, 0);
+       if (pdata->powerup) {
+               gpio_request(pdata->powerup, "cw1200_wlan_powerup");
+               gpio_direction_output(pdata->powerup, 0);
        }
-       if (reset || powerup)
-               msleep(50); /* Settle time */
+       if (pdata->reset || pdata->powerup)
+               msleep(10); /* Settle time? */
 
        /* Enable 3v3 and 1v8 to hardware */
        if (pdata->power_ctrl) {
        }
 
        /* Enable POWERUP signal */
-       if (powerup) {
-               gpio_set_value(powerup->start, 1);
+       if (pdata->powerup) {
+               gpio_set_value(pdata->powerup, 1);
                msleep(250); /* or more..? */
        }
        /* Enable RSTn signal */
-       if (reset) {
-               gpio_set_value(reset->start, 1);
+       if (pdata->reset) {
+               gpio_set_value(pdata->reset, 1);
                msleep(50); /* Or more..? */
        }
        return 0;
        int ret = 0;
 
        if (self->pdata->irq)
-               ret = irq_set_irq_wake(self->pdata->irq->start, suspend);
+               ret = irq_set_irq_wake(self->pdata->irq, suspend);
        return ret;
 }
 
 
        pr_info("cw1200_wlan_sdio: Probe called\n");
 
-       /* We are only able to handle the wlan function */
+       /* We are only able to handle the wlan function */
        if (func->num != 0x01)
                return -ENODEV;
 
 
 
 static int cw1200_spi_off(const struct cw1200_platform_data_spi *pdata)
 {
-       const struct resource *reset = pdata->reset;
-
-       if (reset) {
-               gpio_set_value(reset->start, 0);
+       if (pdata->reset) {
+               gpio_set_value(pdata->reset, 0);
                msleep(30); /* Min is 2 * CLK32K cycles */
-               gpio_free(reset->start);
+               gpio_free(pdata->reset);
        }
 
        if (pdata->power_ctrl)
 
 static int cw1200_spi_on(const struct cw1200_platform_data_spi *pdata)
 {
-       const struct resource *reset = pdata->reset;
-       const struct resource *powerup = pdata->powerup;
-
        /* Ensure I/Os are pulled low */
-       if (reset) {
-               gpio_request(reset->start, reset->name);
-               gpio_direction_output(reset->start, 0);
+       if (pdata->reset) {
+               gpio_request(pdata->reset, "cw1200_wlan_reset");
+               gpio_direction_output(pdata->reset, 0);
        }
-       if (powerup) {
-               gpio_request(powerup->start, powerup->name);
-               gpio_direction_output(powerup->start, 0);
+       if (pdata->powerup) {
+               gpio_request(pdata->powerup, "cw1200_wlan_powerup");
+               gpio_direction_output(pdata->powerup, 0);
        }
-       if (reset || powerup)
+       if (pdata->reset || pdata->powerup)
                msleep(10); /* Settle time? */
 
        /* Enable 3v3 and 1v8 to hardware */
        }
 
        /* Enable POWERUP signal */
-       if (powerup) {
-               gpio_set_value(powerup->start, 1);
+       if (pdata->powerup) {
+               gpio_set_value(pdata->powerup, 1);
                msleep(250); /* or more..? */
        }
        /* Enable RSTn signal */
-       if (reset) {
-               gpio_set_value(reset->start, 1);
+       if (pdata->reset) {
+               gpio_set_value(pdata->reset, 1);
                msleep(50); /* Or more..? */
        }
        return 0;
 
 
        /* All others are optional */
        bool have_5ghz;
-       const struct resource *reset;   /* GPIO to RSTn signal */
-       const struct resource *powerup; /* GPIO to POWERUP signal */
+       int reset;                     /* GPIO to RSTn signal (0 disables) */
+       int powerup;                   /* GPIO to POWERUP signal (0 disables) */
        int (*power_ctrl)(const struct cw1200_platform_data_spi *pdata,
                          bool enable); /* Control 3v3 / 1v8 supply */
        int (*clk_ctrl)(const struct cw1200_platform_data_spi *pdata,
        u16 ref_clk;                    /* REQUIRED (in KHz) */
 
        /* All others are optional */
-       const struct resource *irq;     /* if using GPIO for IRQ */
        bool have_5ghz;
-       bool no_nptb;                   /* SDIO hardware does not support non-power-of-2-blocksizes */
-       const struct resource *reset;   /* GPIO to RSTn signal */
-       const struct resource *powerup; /* GPIO to POWERUP signal */
+       bool no_nptb;       /* SDIO hardware does not support non-power-of-2-blocksizes */
+       int reset;          /* GPIO to RSTn signal (0 disables) */
+       int powerup;        /* GPIO to POWERUP signal (0 disables) */
+       int irq;            /* IRQ line or 0 to use SDIO IRQ */
        int (*power_ctrl)(const struct cw1200_platform_data_sdio *pdata,
                          bool enable); /* Control 3v3 / 1v8 supply */
        int (*clk_ctrl)(const struct cw1200_platform_data_sdio *pdata,