aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/lantiq/patches-3.7/0006-MIPS-lantiq-adds-GPHY-firmware-loader.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/lantiq/patches-3.7/0006-MIPS-lantiq-adds-GPHY-firmware-loader.patch')
-rw-r--r--target/linux/lantiq/patches-3.7/0006-MIPS-lantiq-adds-GPHY-firmware-loader.patch134
1 files changed, 0 insertions, 134 deletions
diff --git a/target/linux/lantiq/patches-3.7/0006-MIPS-lantiq-adds-GPHY-firmware-loader.patch b/target/linux/lantiq/patches-3.7/0006-MIPS-lantiq-adds-GPHY-firmware-loader.patch
deleted file mode 100644
index b8ff6b844d..0000000000
--- a/target/linux/lantiq/patches-3.7/0006-MIPS-lantiq-adds-GPHY-firmware-loader.patch
+++ /dev/null
@@ -1,134 +0,0 @@
-From 0224cde212df4abf251f89c3724a800b1949a774 Mon Sep 17 00:00:00 2001
-From: John Crispin <blogic@openwrt.org>
-Date: Mon, 22 Oct 2012 07:52:50 +0200
-Subject: [PATCH 6/6] MIPS: lantiq: adds GPHY firmware loader
-
-The internal GPHYs need a firmware blob to function properly. This patch adds
-the code needed to request the blob and load it to the PHY.
-
-Signed-off-by: John Crispin <blogic@openwrt.org>
-Patchwork: http://patchwork.linux-mips.org/patch/4523
----
- arch/mips/lantiq/Kconfig | 4 ++
- arch/mips/lantiq/xway/Makefile | 2 +
- arch/mips/lantiq/xway/xrx200_phy_fw.c | 97 +++++++++++++++++++++++++++++++++
- 3 files changed, 103 insertions(+)
- create mode 100644 arch/mips/lantiq/xway/xrx200_phy_fw.c
-
---- a/arch/mips/lantiq/Kconfig
-+++ b/arch/mips/lantiq/Kconfig
-@@ -36,4 +36,8 @@ config PCI_LANTIQ
- bool "PCI Support"
- depends on SOC_XWAY && PCI
-
-+config XRX200_PHY_FW
-+ bool "XRX200 PHY firmware loader"
-+ depends on SOC_XWAY
-+
- endif
---- a/arch/mips/lantiq/xway/Makefile
-+++ b/arch/mips/lantiq/xway/Makefile
-@@ -1 +1,3 @@
- obj-y := prom.o sysctrl.o clk.o reset.o dma.o gptu.o
-+
-+obj-$(CONFIG_XRX200_PHY_FW) += xrx200_phy_fw.o
---- /dev/null
-+++ b/arch/mips/lantiq/xway/xrx200_phy_fw.c
-@@ -0,0 +1,97 @@
-+/*
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 as published
-+ * by the Free Software Foundation.
-+ *
-+ * Copyright (C) 2012 John Crispin <blogic@openwrt.org>
-+ */
-+
-+#include <linux/delay.h>
-+#include <linux/dma-mapping.h>
-+#include <linux/module.h>
-+#include <linux/firmware.h>
-+#include <linux/of_platform.h>
-+
-+#include <lantiq_soc.h>
-+
-+#define XRX200_GPHY_FW_ALIGN (16 * 1024)
-+
-+static dma_addr_t xway_gphy_load(struct platform_device *pdev)
-+{
-+ const struct firmware *fw;
-+ dma_addr_t dev_addr = 0;
-+ const char *fw_name;
-+ void *fw_addr;
-+ size_t size;
-+
-+ if (of_property_read_string(pdev->dev.of_node, "firmware", &fw_name)) {
-+ dev_err(&pdev->dev, "failed to load firmware filename\n");
-+ return 0;
-+ }
-+
-+ dev_info(&pdev->dev, "requesting %s\n", fw_name);
-+ if (request_firmware(&fw, fw_name, &pdev->dev)) {
-+ dev_err(&pdev->dev, "failed to load firmware: %s\n", fw_name);
-+ return 0;
-+ }
-+
-+ /*
-+ * GPHY cores need the firmware code in a persistent and contiguous
-+ * memory area with a 16 kB boundary aligned start address
-+ */
-+ size = fw->size + XRX200_GPHY_FW_ALIGN;
-+
-+ fw_addr = dma_alloc_coherent(&pdev->dev, size, &dev_addr, GFP_KERNEL);
-+ if (fw_addr) {
-+ fw_addr = PTR_ALIGN(fw_addr, XRX200_GPHY_FW_ALIGN);
-+ dev_addr = ALIGN(dev_addr, XRX200_GPHY_FW_ALIGN);
-+ memcpy(fw_addr, fw->data, fw->size);
-+ } else {
-+ dev_err(&pdev->dev, "failed to alloc firmware memory\n");
-+ }
-+
-+ release_firmware(fw);
-+ return dev_addr;
-+}
-+
-+static int __devinit xway_phy_fw_probe(struct platform_device *pdev)
-+{
-+ dma_addr_t fw_addr;
-+ struct property *pp;
-+ unsigned char *phyids;
-+ int i, ret = 0;
-+
-+ fw_addr = xway_gphy_load(pdev);
-+ if (!fw_addr)
-+ return -EINVAL;
-+ pp = of_find_property(pdev->dev.of_node, "phys", NULL);
-+ if (!pp)
-+ return -ENOENT;
-+ phyids = pp->value;
-+ for (i = 0; i < pp->length && !ret; i++)
-+ ret = xrx200_gphy_boot(&pdev->dev, phyids[i], fw_addr);
-+ if (!ret)
-+ mdelay(100);
-+ return ret;
-+}
-+
-+static const struct of_device_id xway_phy_match[] = {
-+ { .compatible = "lantiq,phy-xrx200" },
-+ {},
-+};
-+MODULE_DEVICE_TABLE(of, xway_phy_match);
-+
-+static struct platform_driver xway_phy_driver = {
-+ .probe = xway_phy_fw_probe,
-+ .driver = {
-+ .name = "phy-xrx200",
-+ .owner = THIS_MODULE,
-+ .of_match_table = xway_phy_match,
-+ },
-+};
-+
-+module_platform_driver(xway_phy_driver);
-+
-+MODULE_AUTHOR("John Crispin <blogic@openwrt.org>");
-+MODULE_DESCRIPTION("Lantiq XRX200 PHY Firmware Loader");
-+MODULE_LICENSE("GPL");