"There are often transient line events when the system is powered up and initialized and it is often necessary for the gpio_chip driver to clear any interrupt flags in hardware before setting up the gpio chip, especially the irqchip portions of it." <http://lists.infradead.org/pipermail/openwrt-devel/2019-June/017630.html> This patch adds a fix for the APM821XX's interrupt controller to clear any bogus pending toggled interrupts that happens on various APM821XX boards on boot. The patch also changes the debouce-interval from the default 5ms debounce interval to 60ms all around. The default setting caused on occasions that the button state became stuck in a pressed state, even though the button was released. Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
		
			
				
	
	
		
			221 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			221 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
/*
 | 
						|
 * Device Tree Source for Netgear WNDAP620 and WNDAP660
 | 
						|
 *
 | 
						|
 * This file is licensed under the terms of the GNU General Public
 | 
						|
 * License version 2.  This program is licensed "as is" without
 | 
						|
 * any warranty of any kind, whether express or implied.
 | 
						|
 */
 | 
						|
 | 
						|
#include "apm82181.dtsi"
 | 
						|
 | 
						|
/ {
 | 
						|
	aliases {
 | 
						|
		serial0 = &UART0;
 | 
						|
		led-boot = &status;
 | 
						|
		led-failsafe = &failsafe;
 | 
						|
		led-running = &status;
 | 
						|
		led-upgrade = &status;
 | 
						|
	};
 | 
						|
 | 
						|
	chosen {
 | 
						|
		stdout-path = "/plb/opb/serial@ef600300";
 | 
						|
	};
 | 
						|
};
 | 
						|
 | 
						|
&CRYPTO {
 | 
						|
	status = "okay";
 | 
						|
};
 | 
						|
 | 
						|
&PKA {
 | 
						|
	status = "okay";
 | 
						|
};
 | 
						|
 | 
						|
&TRNG {
 | 
						|
	status = "okay";
 | 
						|
};
 | 
						|
 | 
						|
&EBC0 {
 | 
						|
	ndfc@1,0 {
 | 
						|
		status = "okay";
 | 
						|
		/* 32 MiB SLC NAND Flash */
 | 
						|
		nand {
 | 
						|
			partition@0 {
 | 
						|
				label = "u-boot";
 | 
						|
				reg = <0x00000000 0x00100000>;
 | 
						|
				read-only;
 | 
						|
			};
 | 
						|
 | 
						|
			partition@100000 {
 | 
						|
				label = "u-boot-env";
 | 
						|
				reg = <0x00100000 0x00010000>;
 | 
						|
				read-only;
 | 
						|
			};
 | 
						|
 | 
						|
			partition@110000,0 {
 | 
						|
				label = "firmware";
 | 
						|
				reg = <0x00110000 0x01ac0000>;
 | 
						|
			};
 | 
						|
 | 
						|
			partition@110000,1 {
 | 
						|
				/*
 | 
						|
				 * The u-boot bootloader will look at this
 | 
						|
				 * offset (0x110000) for an uImage binary.
 | 
						|
				 */
 | 
						|
				label = "kernel";
 | 
						|
				reg = <0x00110000 0x003f0000>;
 | 
						|
			};
 | 
						|
 | 
						|
			partition@500000 {
 | 
						|
				label = "ubi";
 | 
						|
				reg = <0x00500000 0x016d0000>;
 | 
						|
			};
 | 
						|
 | 
						|
			partition@1bd0000 {
 | 
						|
				/*
 | 
						|
				 * original vendor device-tree - do not use or
 | 
						|
				 * overwrite. The original u-boot also supports
 | 
						|
				 * the gzipped legacy monolithic/Multi-File Image
 | 
						|
				 * format, which is a better choice.
 | 
						|
				 */
 | 
						|
				label = "device-tree";
 | 
						|
				reg = <0x01bd0000 0x0010000>;
 | 
						|
				read-only;
 | 
						|
			};
 | 
						|
 | 
						|
			partition@1be0000 {
 | 
						|
				label = "var";
 | 
						|
				reg = <0x01be0000 0x0400000>;
 | 
						|
				read-only;
 | 
						|
			};
 | 
						|
 | 
						|
			partition@1fe0000 {
 | 
						|
				label = "manudata";
 | 
						|
				reg   = <0x01fe0000 0x20000 >;
 | 
						|
				read-only;
 | 
						|
			};
 | 
						|
		};
 | 
						|
	};
 | 
						|
};
 | 
						|
 | 
						|
&UART0 {
 | 
						|
	status = "okay";
 | 
						|
};
 | 
						|
 | 
						|
&GPIO0 {
 | 
						|
	status = "okay";
 | 
						|
};
 | 
						|
 | 
						|
&EMAC0 {
 | 
						|
	status = "okay";
 | 
						|
 | 
						|
	fixed-link {
 | 
						|
		speed = <1000>;
 | 
						|
		full-duplex;
 | 
						|
		pause;
 | 
						|
		asym-pause;
 | 
						|
	};
 | 
						|
 | 
						|
	mdio0: mdio {
 | 
						|
		#address-cells = <1>;
 | 
						|
		#size-cells = <0>;
 | 
						|
	};
 | 
						|
};
 | 
						|
 | 
						|
&POB0 {
 | 
						|
	keys {
 | 
						|
		compatible = "gpio-keys";
 | 
						|
 | 
						|
		reset {
 | 
						|
			label = "Reset Button";
 | 
						|
			gpios = <&GPIO0 16 GPIO_ACTIVE_LOW>;
 | 
						|
			linux,code = <KEY_RESTART>;
 | 
						|
			interrupt-parent = <&UIC1>;
 | 
						|
			interrupts = <0x15 IRQ_TYPE_EDGE_FALLING>;
 | 
						|
			debounce-interval = <60>;
 | 
						|
		};
 | 
						|
	};
 | 
						|
 | 
						|
	LEDS: leds {
 | 
						|
		compatible = "gpio-leds";
 | 
						|
 | 
						|
		status: power {
 | 
						|
			label = "wndap6x0:green:power";
 | 
						|
			gpios = <&GPIO0 18 GPIO_ACTIVE_HIGH>;
 | 
						|
		};
 | 
						|
 | 
						|
		failsafe: test {
 | 
						|
			label = "wndap6x0:amber:test";
 | 
						|
			gpios = <&GPIO0 17 GPIO_ACTIVE_HIGH>;
 | 
						|
			panic-indicator;
 | 
						|
		};
 | 
						|
 | 
						|
		activity {
 | 
						|
			label = "wndap6x0:green:activity";
 | 
						|
			gpios = <&GPIO0 21 GPIO_ACTIVE_HIGH>;
 | 
						|
		};
 | 
						|
 | 
						|
		wlan2g {
 | 
						|
			label = "wndap6x0:green:wlan2g";
 | 
						|
			gpios = <&GPIO0 19 GPIO_ACTIVE_HIGH>;
 | 
						|
		};
 | 
						|
 | 
						|
		wlan5g {
 | 
						|
			label = "wndap6x0:green:wlan5g";
 | 
						|
			gpios = <&GPIO0 20 GPIO_ACTIVE_HIGH>;
 | 
						|
		};
 | 
						|
	};
 | 
						|
 | 
						|
	gpio-export {
 | 
						|
		compatible = "gpio-export";
 | 
						|
 | 
						|
		internal-antenna {
 | 
						|
			gpio-export,name = "wndap6x0:internal-antenna";
 | 
						|
			gpio-export,output = <1>;
 | 
						|
			gpios = <&GPIO0 11 GPIO_ACTIVE_HIGH>;
 | 
						|
		};
 | 
						|
 | 
						|
		external-antenna {
 | 
						|
			gpio-export,name = "wndap6x0:external-antenna";
 | 
						|
			gpio-export,output = <0>;
 | 
						|
			gpios = <&GPIO0 14 GPIO_ACTIVE_HIGH>;
 | 
						|
		};
 | 
						|
 | 
						|
		mains-powered {
 | 
						|
			/*
 | 
						|
			 * Input pin describing what powers the AP
 | 
						|
			 * 0/Low = PoE
 | 
						|
			 * 1/High = 12v mains powered
 | 
						|
			 */
 | 
						|
			gpio-export,name = "wndap620:mains-powered";
 | 
						|
			gpios = <&GPIO0 3 GPIO_ACTIVE_HIGH>;
 | 
						|
		};
 | 
						|
	};
 | 
						|
 | 
						|
	rtl8367b {
 | 
						|
		compatible = "realtek,rtl8367b";
 | 
						|
		cpu_port = <5>;
 | 
						|
		realtek,extif0 = <1 2 1 1 1 1 1 1 2>;
 | 
						|
		mii-bus = <&mdio0>;
 | 
						|
	};
 | 
						|
};
 | 
						|
 | 
						|
&PCIE0 {
 | 
						|
	status = "okay";
 | 
						|
};
 | 
						|
 | 
						|
&MSI {
 | 
						|
	status = "okay";
 | 
						|
};
 | 
						|
 | 
						|
&IIC0 {
 | 
						|
	status = "okay";
 | 
						|
 | 
						|
	at24@52 {
 | 
						|
		compatible = "atmel,24c04";
 | 
						|
		reg = <0x52>;
 | 
						|
		pagesize = <16>;
 | 
						|
		read-only;
 | 
						|
	};
 | 
						|
};
 | 
						|
 |