aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/broadcom-wl/patches/003-compat-2.6.35.patch
blob: 89b665371d1392e5be834d496d2025ce75133367 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
--- a/driver/wl_linux.c
+++ b/driver/wl_linux.c
@@ -2082,7 +2082,11 @@ static void
 _wl_set_multicast_list(struct net_device *dev)
 {
 	wl_info_t *wl;
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,34)
 	struct dev_mc_list *mclist;
+#else
+	struct netdev_hw_addr *ha;
+#endif
 	int i;
 
 	if (!dev)
@@ -2098,14 +2102,24 @@ _wl_set_multicast_list(struct net_device
 		wl->pub->allmulti = (dev->flags & IFF_ALLMULTI)? TRUE: FALSE;
 
 		/* copy the list of multicasts into our private table */
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,34)
 		for (i = 0, mclist = dev->mc_list; mclist && (i < dev->mc_count);
 			i++, mclist = mclist->next) {
+#else
+		i = 0;
+		netdev_for_each_mc_addr(ha, dev) {
+#endif
 			if (i >= MAXMULTILIST) {
 				wl->pub->allmulti = TRUE;
 				i = 0;
 				break;
 			}
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,34)
 			wl->pub->multicast[i] = *((struct ether_addr*) mclist->dmi_addr);
+#else
+			wl->pub->multicast[i] = *((struct ether_addr*) ha->addr);
+			i++;
+#endif
 		}
 		wl->pub->nmulticast = i;
 		wlc_set(wl->wlc, WLC_SET_PROMISC, (dev->flags & IFF_PROMISC));
'#n261'>261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320
/include/ "vr9.dtsi"

/ {

    model = "VGV7519 - KPN Experiabox V8";

	chosen {
		bootargs = "console=ttyLTQ0,115200 init=/etc/preinit";
	};

	memory@0 {
		reg = <0x0 0x4000000>;
	};
	
	fpi@10000000 {
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "lantiq,fpi", "simple-bus";
		ranges = <0x0 0x10000000 0xEEFFFFF>;
		reg = <0x10000000 0xEF00000>;

		localbus@0 {
			#address-cells = <2>;
			#size-cells = <1>;
			compatible = "lantiq,localbus", "simple-bus";
		};

		gpio: pinmux@E100B10 {
			compatible = "lantiq,pinctrl-xr9";
			pinctrl-names = "default";
			pinctrl-0 = <&state_default>;
			
			interrupt-parent = <&icu0>;
			interrupts = <166 135 66 40 41 42 38>;

			#gpio-cells = <2>;
			gpio-controller;
			reg = <0xE100B10 0xA0>;

			state_default: pinmux {
				stp {
					lantiq,groups = "stp";
					lantiq,function = "stp";
				};
				spi {
					lantiq,groups = "spi";
					lantiq,function = "spi";
				};
				mdio {
					lantiq,groups = "mdio";
					lantiq,function = "mdio";
				};
				gphy-leds_out {
					lantiq,pins = "io7", "io44";
					lantiq,pull = <0>;
					lantiq,output = <1>;
				};
				stp_out {
					lantiq,pins = "io4", "io5", "io6";
					lantiq,open-drain = <0>;
					lantiq,output = <1>;
					lantiq,pull = <0>;
				};
				pci-rst {
					lantiq,pins = "io21";
					lantiq,open-drain = <0>;
					lantiq,pull = <0>;
					lantiq,output = <1>;
				};
				gphy-leds {
					lantiq,groups = "gphy0 led1", "gphy1 led0";
					lantiq,function = "gphy";
					lantiq,open-drain = <0>;
					lantiq,pull = <0>;
					lantiq,output = <1>;
				};
			};
		};

		eth@E108000 {
			#address-cells = <1>;
			#size-cells = <0>;
			compatible = "lantiq,xrx200-net";
			reg = <	0xE108000 0x3000 /* switch */
				0xE10B100 0x70 /* mdio */
				0xE10B1D8 0x30 /* mii */
				0xE10B308 0x30 /* pmac */
			>;
			interrupt-parent = <&icu0>;
			interrupts = <73 72>;

			lan: interface@0 {
				compatible = "lantiq,xrx200-pdi";
				#address-cells = <1>;
				#size-cells = <0>;
				reg = <0>;
				mac-address = [ 00 11 22 33 44 55 ];

				ethernet@0 {
					compatible = "lantiq,xrx200-pdi-port";
					reg = <0>;
					phy-mode = "rgmii";
					phy-handle = <&phy0>;
				};
				ethernet@1 {
					compatible = "lantiq,xrx200-pdi-port";
					reg = <1>;
					phy-mode = "rgmii";
					phy-handle = <&phy1>;
				};
				ethernet@2 {
					compatible = "lantiq,xrx200-pdi-port";
					reg = <2>;
					phy-mode = "gmii";
					phy-handle = <&phy11>;
				};
				ethernet@4 {
					compatible = "lantiq,xrx200-pdi-port";
					reg = <4>;
					phy-mode = "gmii";
					phy-handle = <&phy13>;
				};
			};

			wan: interface@1 {
				compatible = "lantiq,xrx200-pdi";
				#address-cells = <1>;
				#size-cells = <0>;
				reg = <1>;
				mac-address = [ 00 11 22 33 44 56 ];
				lantiq,wan;
				ethernet@5 {
					compatible = "lantiq,xrx200-pdi-port";
					reg = <5>;
					phy-mode = "rgmii";
					phy-handle = <&phy5>;
				};
			};

			mdio@0 {
				#address-cells = <1>;
				#size-cells = <0>;
				compatible = "lantiq,xrx200-mdio";
				phy0: ethernet-phy@0 {
					reg = <0x0>;
					compatible = "lantiq,phy11g", "ethernet-phy-ieee802.3-c22";
					lantiq,c45-reg-init = <1 0 0 0>; 
				};
				phy1: ethernet-phy@1 {
					reg = <0x1>;
					compatible = "lantiq,phy11g", "ethernet-phy-ieee802.3-c22";
					lantiq,c45-reg-init = <1 0 0 0>; 
				};
				phy5: ethernet-phy@5 {
					reg = <0x5>;
					compatible = "lantiq,phy11g", "ethernet-phy-ieee802.3-c22";
					lantiq,c45-reg-init = <1 0 0 0>; 
				};
				phy11: ethernet-phy@11 {
					reg = <0x11>;
					compatible = "lantiq,phy11g", "ethernet-phy-ieee802.3-c22";
					lantiq,c45-reg-init = <1 0 0 0>; 
				};
				phy13: ethernet-phy@13 {
					reg = <0x13>;
					compatible = "lantiq,phy11g", "ethernet-phy-ieee802.3-c22";
					lantiq,c45-reg-init = <1 0 0 0>; 
				};
			};
		};

		stp: stp@E100BB0 {
			compatible = "lantiq,gpio-stp-xway";
			reg = <0xE100BB0 0x40>;
			#gpio-cells = <2>;
			gpio-controller;

			lantiq,shadow = <0xffff>;
			lantiq,groups = <0x3>;
			lantiq,dsl = <0x0>;
			lantiq,phy1 = <0x0>;
			lantiq,phy2 = <0x0>;
			/* lantiq,rising; */
		};

		ifxhcd@E101000 {
			status = "okay";
			gpios = <&gpio 32 0>;
			lantiq,portmask = <0x3>;
		};

		pci@E105400 {
			status = "okay";
			#address-cells = <3>;
			#size-cells = <2>;
			#interrupt-cells = <1>;
			compatible = "lantiq,pci-xway";
			bus-range = <0x0 0x0>;
			ranges = <0x2000000 0 0x8000000 0x8000000 0 0x2000000   /* pci memory */
				0x1000000 0 0x00000000 0xAE00000 0 0x200000>; /* io space */
			reg = <0x7000000 0x8000         /* config space */
				0xE105400 0x400>;       /* pci bridge */
			lantiq,bus-clock = <33333333>;
			/*lantiq,external-clock;*/
			lantiq,delay-hi = <0>; /* 0ns delay */
			lantiq,delay-lo = <0>; /* 0.0ns delay */
			interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
			interrupt-map = <
				0x7000 0 0 1 &icu0 30 1 // slot 14, irq 30
				>;
			gpio-reset = <&gpio 21 0>;
			req-mask = <0x1>;	/* GNT1 */
		};

		pcie@d900000 {
			status = "disabled";
		};
	};

	gphy-xrx200 {
		compatible = "lantiq,phy-xrx200";
		firmware1 = "lantiq/vr9_phy11g_a1x.bin";	/*VR9 1.1*/
		firmware2 = "lantiq/vr9_phy11g_a2x.bin";	/*VR9 1.2*/
		phys = [ 00 01 ];
	};

	ralink_eep {
		compatible = "ralink,eeprom";
		ralink,eeprom = "RT2860.eeprom";
	};

	gpio-keys-polled {
		compatible = "gpio-keys-polled";
		#address-cells = <1>;
		#size-cells = <0>;
		poll-interval = <100>;
		reset {
			label = "reset";
			gpios = <&gpio 9 1>;
			linux,code = <0x198>;
		};
		eco {
			label = "eco";
			gpios = <&gpio 41 1>;
			linux,code = <247>;
		};
		rfkill {
			label = "rfkill";
			gpios = <&gpio 45 1>;
			linux,code = <0xf7>;
		};
		wps {
			label = "wps";
			gpios = <&gpio 10 1>;
			linux,code = <0x211>;
		};
	};

	gpio-leds {
		compatible = "gpio-leds";

		eco {					/* blue */
			label = "eco";
			gpios = <&stp 2 1>;
		};
		wps_red {				/* red */
			label = "wps_red";
			gpios = <&stp 3 1>;
		};
		wps_yellow {				/* yellow */
			label = "wps_yellow";
			gpios = <&stp 4 1>;
		};
		upgrade {				/* blue */
			label = "upgrade";
			gpios = <&stp 5 1>;
		};
		tv {					/* yellow */
			label = "tv";
			gpios = <&stp 6 1>;
		};
		internet_yellow {			/* yellow */
			label = "internet_yellow";
			gpios = <&stp 7 1>;
		};
		internet_red {				/* red */
			label = "internet_red";
			gpios = <&stp 8 1>;
		};
		broadband_red {				/* red */
			label = "broadband_red";
			gpios = <&stp 9 1>;
		};
		broadband_yellow {			/* yellow */
			label = "broadband_yellow";
			gpios = <&stp 10 1>;
		};
		voice {					/* yellow */
			label = "voice";
			gpios = <&stp 11 1>;
		};
		wireless_red {				/* red */
			label = "wireless_red";
			gpios = <&stp 12 1>;
		};
		wireless_yellow {			/* yellow */
			label = "wireless_yellow";
			gpios = <&stp 13 1>;
		};
		power2 {				/* yellow */
			label = "power2";
			gpios = <&stp 14 1>;
		};
		power {					/* red */
			label = "power";
			gpios = <&stp 15 1>;
			default-state = "on";
		};
	};
};