|
@@ -79,10 +79,8 @@ static void ath79_spi_chipselect(struct spi_device *spi, int is_active)
|
|
|
}
|
|
|
|
|
|
if (spi->chip_select) {
|
|
|
- struct ath79_spi_controller_data *cdata = spi->controller_data;
|
|
|
-
|
|
|
/* SPI is normally active-low */
|
|
|
- gpio_set_value(cdata->gpio, cs_high);
|
|
|
+ gpio_set_value(spi->cs_gpio, cs_high);
|
|
|
} else {
|
|
|
if (cs_high)
|
|
|
sp->ioc_base |= AR71XX_SPI_IOC_CS0;
|
|
@@ -117,11 +115,9 @@ static void ath79_spi_disable(struct ath79_spi *sp)
|
|
|
|
|
|
static int ath79_spi_setup_cs(struct spi_device *spi)
|
|
|
{
|
|
|
- struct ath79_spi_controller_data *cdata;
|
|
|
int status;
|
|
|
|
|
|
- cdata = spi->controller_data;
|
|
|
- if (spi->chip_select && !cdata)
|
|
|
+ if (spi->chip_select && !gpio_is_valid(spi->cs_gpio))
|
|
|
return -EINVAL;
|
|
|
|
|
|
status = 0;
|
|
@@ -134,7 +130,7 @@ static int ath79_spi_setup_cs(struct spi_device *spi)
|
|
|
else
|
|
|
flags |= GPIOF_INIT_HIGH;
|
|
|
|
|
|
- status = gpio_request_one(cdata->gpio, flags,
|
|
|
+ status = gpio_request_one(spi->cs_gpio, flags,
|
|
|
dev_name(&spi->dev));
|
|
|
}
|
|
|
|
|
@@ -144,8 +140,7 @@ static int ath79_spi_setup_cs(struct spi_device *spi)
|
|
|
static void ath79_spi_cleanup_cs(struct spi_device *spi)
|
|
|
{
|
|
|
if (spi->chip_select) {
|
|
|
- struct ath79_spi_controller_data *cdata = spi->controller_data;
|
|
|
- gpio_free(cdata->gpio);
|
|
|
+ gpio_free(spi->cs_gpio);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -217,6 +212,7 @@ static int ath79_spi_probe(struct platform_device *pdev)
|
|
|
}
|
|
|
|
|
|
sp = spi_master_get_devdata(master);
|
|
|
+ master->dev.of_node = pdev->dev.of_node;
|
|
|
platform_set_drvdata(pdev, sp);
|
|
|
|
|
|
pdata = dev_get_platdata(&pdev->dev);
|
|
@@ -301,12 +297,18 @@ static void ath79_spi_shutdown(struct platform_device *pdev)
|
|
|
ath79_spi_remove(pdev);
|
|
|
}
|
|
|
|
|
|
+static const struct of_device_id ath79_spi_of_match[] = {
|
|
|
+ { .compatible = "qca,ar7100-spi", },
|
|
|
+ { },
|
|
|
+};
|
|
|
+
|
|
|
static struct platform_driver ath79_spi_driver = {
|
|
|
.probe = ath79_spi_probe,
|
|
|
.remove = ath79_spi_remove,
|
|
|
.shutdown = ath79_spi_shutdown,
|
|
|
.driver = {
|
|
|
.name = DRV_NAME,
|
|
|
+ .of_match_table = ath79_spi_of_match,
|
|
|
},
|
|
|
};
|
|
|
module_platform_driver(ath79_spi_driver);
|