/* Controller-specific per-slave state */
 struct atmel_spi_device {
-       struct gpio_desc        *npcs_pin;
        u32                     csr;
 };
 
                }
 
                mr = spi_readl(as, MR);
-               if (asd->npcs_pin)
-                       gpiod_set_value(asd->npcs_pin, 1);
+               if (spi->cs_gpiod)
+                       gpiod_set_value(spi->cs_gpiod, 1);
        } else {
                u32 cpol = (spi->mode & SPI_CPOL) ? SPI_BIT(CPOL) : 0;
                int i;
 
                mr = spi_readl(as, MR);
                mr = SPI_BFINS(PCS, ~(1 << spi->chip_select), mr);
-               if (asd->npcs_pin && spi->chip_select != 0)
-                       gpiod_set_value(asd->npcs_pin, 1);
+               if (spi->cs_gpiod && spi->chip_select != 0)
+                       gpiod_set_value(spi->cs_gpiod, 1);
                spi_writel(as, MR, mr);
        }
 
 
 static void cs_deactivate(struct atmel_spi *as, struct spi_device *spi)
 {
-       struct atmel_spi_device *asd = spi->controller_state;
        u32 mr;
 
        /* only deactivate *this* device; sometimes transfers to
 
        dev_dbg(&spi->dev, "DEactivate NPCS, mr %08x\n", mr);
 
-       if (!asd->npcs_pin)
+       if (!spi->cs_gpiod)
                spi_writel(as, CR, SPI_BIT(LASTXFER));
        else if (atmel_spi_is_v2(as) || spi->chip_select != 0)
-               gpiod_set_value(asd->npcs_pin, 0);
+               gpiod_set_value(spi->cs_gpiod, 0);
 }
 
 static void atmel_spi_lock(struct atmel_spi *as) __acquires(&as->lock)
                if (!asd)
                        return -ENOMEM;
 
-               if (spi->cs_gpiod)
-                       asd->npcs_pin = spi->cs_gpiod;
-
                spi->controller_state = asd;
        }