Removed upstreamed/solved elsewhere upstream: - 0001-MIPS-ralink-Add-rt3352-SPI_CS1-pinmux.patch - 0002-MIPS-pci-rt2880-set-pci-controller-of_node.patch - 0004-MIPS-ralink-add-MT7621-pcie-driver.patch - 0009-PCI-MIPS-enable-PCIe-on-MT7688.patch - 0025-pinctrl-ralink-add-pinctrl-driver.patch - 0028-GPIO-ralink-add-mt7621-gpio-controller.patch - 0043-spi-add-mt7621-support.patch - 0045-i2c-add-mt7621-driver.patch - 0047-DMA-ralink-add-rt2880-dma-engine.patch - 0053-mtd-spi-nor-add-w25q256-3b-mode-switch.patch - 0054-mtd-spi-nor-w25q256-respect-default-mode.patch - 0099-pci-mt7620.patch - 304-spi-nor-enable-4B-opcodes-for-mx25l25635f.patch Removed because of the new NAND driver: - 0038-Revert-mtd-nand-Remove-unused-chip-write_page-hook.patch - 0039-mtd-add-mt7621-nand-support.patch - 0040-nand-hack.patch Remove patch that no longer applies (needs rework): - 0034-NET-multi-phy-support.patch Signed-off-by: DENG Qingfang <dengqf6@mail2.sysu.edu.cn>
		
			
				
	
	
		
			98 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			98 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
--- a/drivers/misc/Makefile
 | 
						|
+++ b/drivers/misc/Makefile
 | 
						|
@@ -52,6 +52,7 @@ obj-$(CONFIG_ECHO)		+= echo/
 | 
						|
 obj-$(CONFIG_VEXPRESS_SYSCFG)	+= vexpress-syscfg.o
 | 
						|
 obj-$(CONFIG_CXL_BASE)		+= cxl/
 | 
						|
 obj-$(CONFIG_PCI_ENDPOINT_TEST)	+= pci_endpoint_test.o
 | 
						|
+obj-$(CONFIG_SOC_MT7620)	+= linkit.o
 | 
						|
 obj-$(CONFIG_OCXL)		+= ocxl/
 | 
						|
 obj-y				+= cardreader/
 | 
						|
 obj-$(CONFIG_PVPANIC)   	+= pvpanic.o
 | 
						|
--- /dev/null
 | 
						|
+++ b/drivers/misc/linkit.c
 | 
						|
@@ -0,0 +1,84 @@
 | 
						|
+/*
 | 
						|
+ *  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
 | 
						|
+ *  publishhed by the Free Software Foundation.
 | 
						|
+ *
 | 
						|
+ *  Copyright (C) 2015 John Crispin <blogic@openwrt.org>
 | 
						|
+ */
 | 
						|
+
 | 
						|
+#include <linux/module.h>
 | 
						|
+#include <linux/platform_device.h>
 | 
						|
+#include <linux/of.h>
 | 
						|
+#include <linux/mtd/mtd.h>
 | 
						|
+#include <linux/gpio.h>
 | 
						|
+
 | 
						|
+#define LINKIT_LATCH_GPIO	11
 | 
						|
+
 | 
						|
+struct linkit_hw_data {
 | 
						|
+	char board[16];
 | 
						|
+	char rev[16];
 | 
						|
+};
 | 
						|
+
 | 
						|
+static void sanify_string(char *s)
 | 
						|
+{
 | 
						|
+	int i;
 | 
						|
+
 | 
						|
+	for (i = 0; i < 15; i++)
 | 
						|
+		if (s[i] <= 0x20)
 | 
						|
+			s[i] = '\0';
 | 
						|
+	s[15] = '\0';
 | 
						|
+}
 | 
						|
+
 | 
						|
+static int linkit_probe(struct platform_device *pdev)
 | 
						|
+{
 | 
						|
+	struct linkit_hw_data hw;
 | 
						|
+	struct mtd_info *mtd;
 | 
						|
+	size_t retlen;
 | 
						|
+	int ret;
 | 
						|
+
 | 
						|
+	mtd = get_mtd_device_nm("factory");
 | 
						|
+	if (IS_ERR(mtd))
 | 
						|
+		return PTR_ERR(mtd);
 | 
						|
+
 | 
						|
+	ret = mtd_read(mtd, 0x400, sizeof(hw), &retlen, (u_char *) &hw);
 | 
						|
+	put_mtd_device(mtd);
 | 
						|
+
 | 
						|
+	sanify_string(hw.board);
 | 
						|
+	sanify_string(hw.rev);
 | 
						|
+
 | 
						|
+	dev_info(&pdev->dev, "Version  : %s\n", hw.board);
 | 
						|
+	dev_info(&pdev->dev, "Revision : %s\n", hw.rev);
 | 
						|
+
 | 
						|
+	if (!strcmp(hw.board, "LINKITS7688")) {
 | 
						|
+		dev_info(&pdev->dev, "setting up bootstrap latch\n");
 | 
						|
+
 | 
						|
+		if (devm_gpio_request(&pdev->dev, LINKIT_LATCH_GPIO, "bootstrap")) {
 | 
						|
+			dev_err(&pdev->dev, "failed to setup bootstrap gpio\n");
 | 
						|
+			return -1;
 | 
						|
+		}
 | 
						|
+		gpio_direction_output(LINKIT_LATCH_GPIO, 0);
 | 
						|
+	}
 | 
						|
+
 | 
						|
+	return 0;
 | 
						|
+}
 | 
						|
+
 | 
						|
+static const struct of_device_id linkit_match[] = {
 | 
						|
+	{ .compatible = "mediatek,linkit" },
 | 
						|
+	{},
 | 
						|
+};
 | 
						|
+MODULE_DEVICE_TABLE(of, linkit_match);
 | 
						|
+
 | 
						|
+static struct platform_driver linkit_driver = {
 | 
						|
+	.probe = linkit_probe,
 | 
						|
+	.driver = {
 | 
						|
+		.name = "mtk-linkit",
 | 
						|
+		.owner = THIS_MODULE,
 | 
						|
+		.of_match_table = linkit_match,
 | 
						|
+	},
 | 
						|
+};
 | 
						|
+
 | 
						|
+int __init linkit_init(void)
 | 
						|
+{
 | 
						|
+	return platform_driver_register(&linkit_driver);
 | 
						|
+}
 | 
						|
+late_initcall_sync(linkit_init);
 |