Initial commit
This commit is contained in:
		
							
								
								
									
										97
									
								
								target/linux/ramips/patches-5.10/855-linkit_bootstrap.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										97
									
								
								target/linux/ramips/patches-5.10/855-linkit_bootstrap.patch
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,97 @@ | ||||
| --- a/drivers/misc/Makefile | ||||
| +++ b/drivers/misc/Makefile | ||||
| @@ -50,6 +50,7 @@ obj-$(CONFIG_GENWQE)		+= genwqe/ | ||||
|  obj-$(CONFIG_ECHO)		+= echo/ | ||||
|  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); | ||||
		Reference in New Issue
	
	Block a user
	 domenico
					domenico