diff --git a/drivers/spi/spi_atben.c b/drivers/spi/spi_atben.c index f388aa8..925bd38 100644 --- a/drivers/spi/spi_atben.c +++ b/drivers/spi/spi_atben.c @@ -45,6 +45,7 @@ struct atben_prv { struct at86rf230_platform_data platform_data; /* copy platform_data so that we can adapt .reset_data */ + struct spi_device *spi; }; @@ -299,7 +300,6 @@ static int __devinit atben_probe(struct platform_device *pdev) struct spi_master *master; struct atben_prv *prv; struct resource *regs; - struct spi_device *spi; int err = -ENXIO; master = spi_alloc_master(&pdev->dev, sizeof(*prv)); @@ -372,15 +372,16 @@ static int __devinit atben_probe(struct platform_device *pdev) board_info.platform_data = &prv->platform_data; board_info.irq = prv->slave_irq; - spi = spi_new_device(master, &board_info); - if (!spi) { + prv->spi = spi_new_device(master, &board_info); + if (!prv->spi) { dev_err(&pdev->dev, "can't create new device for %s\n", board_info.modalias); err = -ENXIO; goto out_registered; } - dev_info(&spi->dev, "ATBEN ready for mischief (IRQ %d -> IRQ %d)\n", + dev_info(&prv->spi->dev, + "ATBEN ready for mischief (IRQ %d -> IRQ %d)\n", prv->gpio_irq, prv->slave_irq); return 0; @@ -417,6 +418,8 @@ static int __devexit atben_remove(struct platform_device *pdev) // restore GPIOs + spi_dev_put(prv->spi); + spi_unregister_master(master); free_irq(prv->gpio_irq, prv);