[OpenWrt-Devel] [PATCH] ar71xx: added ath79-spi devtree support
John Crispin
blogic at openwrt.org
Thu Oct 23 04:08:34 EDT 2014
Hi,
why do we need this ? ath79 does not have OF support, so i dont see why
this driver should have it.
John
On 23/10/2014 09:22, Дмитрий Смирнов wrote:
> Added ath79-spi Devtree Support
> http://www.crashcourse.ca/wiki/index.php/Kernel_parsing_of_device_trees
>
> source: https://www.codeaurora.org/cgit/quic/qsdk/oss/system/openwrt/tag/?h=aa/banana&id=AU_LINUX_QSDK_BANANA_10.4_TARGET_ALL.2.4.406
> thanks to Gerd
>
> Signed-off-by: Dmytro <dioptimizer at hotmail.com>
> ---
> diff --git a/target/linux/ar71xx/patches-3.10/465-QCA-MIPS-ath79-spi-devtree-support.patch b/target/linux/ar71xx/patches-3.10/465-QCA-MIPS-ath79-spi-devtree-support.patch
> new file mode 100644
> index 0000000..9e0cb47
> --- /dev/null
> +++ b/target/linux/ar71xx/patches-3.10/465-QCA-MIPS-ath79-spi-devtree-support.patch
> @@ -0,0 +1,62 @@
> +--- a/drivers/spi/spi-ath79.c 2013-06-21 16:53:13.000000000 +0800
> ++++ b/drivers/spi/spi-ath79.c 2013-06-26 10:22:29.643942633 +0800
> +@@ -27,6 +27,9 @@
> + &include <linux/gpio.h>
> + &include <linux/clk.h>
> + &include <linux/err.h>
> ++&ifdef CONFIG_OF
> ++&include <linux/of.h>
> ++&endif
> +
> + &include <asm/mach-ath79/ar71xx_regs.h>
> + &include <asm/mach-ath79/ath79_spi_platform.h>
> +@@ -183,11 +186,39 @@
> + }
> + }
> +
> ++&ifdef CONFIG_OF
> ++static struct ath79_spi_controller_data ath79_spi_of_cdata;
> ++static int ath79_spi_of_cdata_setup(struct spi_device *spi)
> ++{
> ++ u32 cdata[3];
> ++
> ++ if (!spi->dev.of_node)
> ++ return -EINVAL;
> ++
> ++ if (!of_property_read_u32_array(spi->dev.of_node,
> ++ "spi-controller-data", cdata, 3)) {
> ++ ath79_spi_of_cdata.is_flash = cdata[0];
> ++ ath79_spi_of_cdata.cs_type = cdata[1];
> ++ ath79_spi_of_cdata.cs_line = cdata[2];
> ++ spi->controller_data = &ath79_spi_of_cdata;
> ++ return 0;
> ++ }
> ++
> ++ return -EINVAL;
> ++}
> ++&else
> ++static int ath79_spi_of_cdata_setup(struct spi_device *spi)
> ++{
> ++ return -EINVAL;
> ++}
> ++&endif
> ++
> + static int ath79_spi_setup(struct spi_device *spi)
> + {
> + int status = 0;
> +
> +- if (spi->controller_data == NULL)
> ++ if (spi->controller_data == NULL &&
> ++ ath79_spi_of_cdata_setup(spi))
> + return -EINVAL;
> +
> + if (spi->bits_per_word> 32)
> +@@ -465,6 +496,8 @@
> + master->cleanup = ath79_spi_cleanup;
> + master->bus_num = pdata->bus_num;
> + master->num_chipselect = pdata->num_chipselect;
> ++ master->dev.parent = &pdev->dev;
> ++ master->dev.of_node = pdev->dev.of_node;
> +
> + sp->miso_line = pdata->miso_line;
> +
>
>
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
>
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
More information about the openwrt-devel
mailing list