AA-Ron!
Posts: 9
Joined: Wed May 02, 2018 10:37 am

WF111 wifi module on CM3

Tue May 15, 2018 9:37 am

Hi Everybody

I'm trying to integrate a WF111 WiFi module (by Scilabs, formerly BlueGiga) into a RPI CM3. The WiFi module is connected to the secondary SDIO connection. Scilabs provides custom drivers for their module which is not part of the Linux kernel, but I managed to build it using their developer guide. I can load the driver, but it is not yet being used by the OS. Moreover, I also don't get a /dev/unifi device to access the module.

On the hardware side, I'm a bit lost (I'm a SW guy). How do I activate the second mmc/sdio connection? And how can I associate a specific Linux driver? I suspect that I might have to modify the existing device tree or perhaps write a custom overlay for it, but I can only guess. At the moment I'm looking at the Device Trees, overlays, and parameters page trying to figure out how device trees work.

I know the question is a bit vague, I'm learning as I go. I'd be greatful for any pointers

AA-Ron!
Posts: 9
Joined: Wed May 02, 2018 10:37 am

Re: WF111 wifi module on CM3

Fri May 18, 2018 9:34 am

I'm still trying to figure this out. I've tried to load the sdio-overlay which activates the right pins on the CM3 board, but I still don't get a Linux device (/dev/unifi). On the Silabs forum I found somebody who had the exact same problem: WF111 AM4378 unifi_sdio - No /dev/unifi*. They solved it by modifying their device tree as follows:

Code: Select all

&mmc2 {
	#address-cells = <1>;
	#size-cells = <0>;

	vmmc-supply = <&evm_v3_3d>;
	status = "okay";
	ti,non-removable;

	bus-width = <4>;
	pinctrl-names = "default";
	pinctrl-0 = <&wifi_pins_default>;

	unifi_sdio: [email protected] {
		reg = <1>;
		compatible = "unifi_sdio";
	};
};
I've tried to apply the same solution to the rpi cm3 device tree. I've started by tweaking the existing sdio-overlay like this:

Code: Select all


/dts-v1/;
/plugin/;

/* Enable WF111 from MMC interface via GPIOs 22-27. Includes sdhost overlay. */

/{
        compatible = "brcm,bcm2708";

        [email protected] {
                target = <&mmc>;
                wf111_mmc: __overlay__ {
                        #address-cells = <1>;
                        #size-cells = <0>;

                        vmmc-supply = <&vdd_3v3_reg>;
                        status = "okay";
                        non-removable;

                        brcm,overclock-50 = <0>;
                        bus-width = <4>;
                        pinctrl-names = "default";
                        pinctrl-0 = <&sdio_pins>;

                        unifi_sdio: [email protected] {
                                reg = <1>;
                                compatible = "unifi_sdio";
                        };
                };
        };

        [email protected] {
                target = <&gpio>;
                __overlay__ {
                        sdio_pins: sdio_pins {
                                brcm,pins = <22 23 24 25 26 27>;
                                brcm,function = <7>; /* ALT3 = SD1 */
                                brcm,pull = <0 2 2 2 2 2>;
                        };
                };
        };

        __overrides__ {
                poll_once = <&wf111_mmc>,"non-removable?";
                bus_width = <&wf111_mmc>,"bus-width:0";
                sdio_overclock = <&wf111_mmc>,"brcm,overclock-50:0";
        };
};      
When I manually load my overlay (using dtoverlay) and the unifi_sdio driver (using modprobe), I get the following dmesg output:
...
[ 78.169936] unifi_sdio: loading out-of-tree module taints kernel.
[ 78.177125] UniFi SDIO Driver: 5.2.2-r3 May 14 2018 14:30:16
[ 78.177133] CSR SME with WEXT support
[ 78.177135] Split patch support
[ 78.177138] Kernel 4.9.80
[ 78.177165] UniFi: Using native Linux MMC driver for SDIO.
[ 86.458649] mmc-bcm2835 3f300000.mmc: could not find pctldev for node /soc/[email protected], deferring probe
There seems to be a problem with a missing node, but I have no I what I'm doing. So no big surprise there :)

AA-Ron!
Posts: 9
Joined: Wed May 02, 2018 10:37 am

Re: WF111 wifi module on CM3

Fri May 18, 2018 11:43 am

For reference here's my device tree dumped with dtc -I fs /proc/device-tree > cm3_wf111.dts

Code: Select all

/dts-v1/;

/ {
	compatible = "brcm,bcm2837", "brcm,bcm2836";
	serial-number = "00000000fa9f3239";
	model = "Raspberry Pi Compute Module 3 Rev 1.0";
	memreserve = <0x38000000 0x8000000>;
	interrupt-parent = <0x1>;
	#address-cells = <0x1>;
	#size-cells = <0x1>;

	clocks {
		compatible = "simple-bus";
		#address-cells = <0x1>;
		#size-cells = <0x0>;

		[email protected] {
			compatible = "fixed-clock";
			#clock-cells = <0x0>;
			phandle = <0x3>;
			reg = <0x3>;
			clock-output-names = "osc";
			clock-frequency = <0x124f800>;
		};

		[email protected] {
			compatible = "fixed-clock";
			#clock-cells = <0x0>;
			phandle = <0x13>;
			reg = <0x4>;
			clock-output-names = "otg";
			clock-frequency = <0x1c9c3800>;
		};
	};

	__overrides__ {
		i2c1 = "", "", "", "#status";
		i2c_vc = "", "", "", "\"status";
		sd_overclock = "", "", "", "(brcm,overclock-50:0";
		i2c0_baudrate = "", "", "", "\"clock-frequency:0";
		sd_pio_limit = "", "", "", "(brcm,pio-limit:0";
		act_led_trigger = "", "", "", "$linux,default-trigger";
		audio = "", "", "", "%status";
		sd_debug = "", "", "", "(brcm,debug";
		cache_line_size = [00 00 00 18 63 61 63 68 65 2d 6c 69 6e 65 2d 73 69 7a 65 3a 30 00];
		i2c1_baudrate = "", "", "", "#clock-frequency:0";
		spi = "", "", "", "!status";
		i2c_arm = "", "", "", "#status";
		uart0 = [00 00 00 1e 73 74 61 74 75 73 00];
		i2c2_iknowwhatimdoing = [00 00 00 11 73 74 61 74 75 73 00];
		i2s = "", "", "", " status";
		i2c0 = "", "", "", "\"status";
		arm_freq = <0x1a 0x636c6f63 0x6b2d6672 0x65717565 0x6e63793a 0x30000000 0x1b636c 0x6f636b2d 0x66726571 0x75656e63 0x793a3000 0x1c 0x636c6f63 0x6b2d6672 0x65717565 0x6e63793a 0x30000000 0x1d636c 0x6f636b2d 0x66726571 0x75656e63 0x793a3000>;
		watchdog = "", "", "", "&status";
		i2c_baudrate = "", "", "", "#clock-frequency:0";
		i2c_vc_baudrate = "", "", "", "\"clock-frequency:0";
		axiperf = [00 00 00 19 73 74 61 74 75 73 00];
		act_led_activelow = "", "", "", "$gpios:8";
		i2c2_baudrate = [00 00 00 11 63 6c 6f 63 6b 2d 66 72 65 71 75 65 6e 63 79 3a 30 00];
		sd_force_pio = "", "", "", "(brcm,force-pio?";
		uart1 = [00 00 00 1f 73 74 61 74 75 73 00];
		i2c_arm_baudrate = "", "", "", "#clock-frequency:0";
		random = "", "", "", "'status";
		act_led_gpio = "", "", "", "$gpios:4";
		i2c = "", "", "", "#status";
	};

	system {
		linux,serial = <0x0 0xfa9f3239>;
		linux,revision = <0xa220a0>;
	};

	__symbols__ {
		pwm = "/soc/[email protected]";
		clk_usb = "/clocks/[email protected]";
		pixelvalve0 = "/soc/[email protected]";
		intc = "/soc/[email protected]";
		spi2 = "/soc/[email protected]";
		dsi1 = "/soc/[email protected]";
		clocks = "/soc/[email protected]";
		i2c1 = "/soc/[email protected]";
		i2c_vc = "/soc/[email protected]";
		firmwarekms = "/soc/[email protected]";
		smi = "/soc/[email protected]";
		spi0 = "/soc/[email protected]";
		thermal = "/soc/thermal";
		vdd_5v0_reg = "/fixedregulator_5v0";
		vchiq = "/soc/vchiq";
		sdhost = "/soc/[email protected]";
		aux = "/soc/[email protected]";
		gpio = "/soc/[email protected]";
		dpi = "/soc/[email protected]";
		vcsm = "/soc/vcsm";
		v3d = "/soc/[email protected]";
		audio = "/soc/audio";
		vdd_3v3_reg = "/fixedregulator_3v3";
		dma = "/soc/[email protected]";
		spidev1 = "/soc/[email protected]/[email protected]";
		v7_cpu3 = "/cpus/[email protected]";
		vc4 = "/soc/gpu";
		power = "/soc/power";
		soc = "/soc";
		v7_cpu1 = "/cpus/[email protected]";
		leds = "/leds";
		i2s_pins = "/soc/[email protected]/i2s";
		firmware = "/soc/firmware";
		mmc = "/soc/[email protected]";
		pixelvalve1 = "/soc/[email protected]";
		spi = "/soc/[email protected]";
		spi0_pins = "/soc/[email protected]/spi0_pins";
		pitouchscreen_touch = "/soc/i2cdsi/[email protected]";
		i2c_arm = "/soc/[email protected]";
		clk_osc = "/clocks/[email protected]";
		uart0 = "/soc/[email protected]";
		i2c1_pins = "/soc/[email protected]/i2c1";
		fb = "/soc/fb";
		sdhost_pins = "/soc/[email protected]/sdhost_pins";
		i2c2 = "/soc/[email protected]";
		i2s = "/soc/[email protected]";
		spi1 = "/soc/[email protected]";
		virtgpio = "/soc/virtgpio";
		usb = "/soc/[email protected]";
		dsi0 = "/soc/[email protected]";
		expgpio = "/soc/expgpio";
		audio_pins = "/soc/[email protected]/audio_pins";
		i2c0 = "/soc/[email protected]";
		i2c0_pins = "/soc/[email protected]/i2c0";
		watchdog = "/soc/[email protected]";
		vec = "/soc/[email protected]";
		local_intc = "/soc/local_intc";
		i2c_dsi = "/soc/i2cdsi";
		axiperf = "/soc/axiperf";
		pitouchscreen_bridge = "/soc/i2cdsi/[email protected]";
		spi0_cs_pins = "/soc/[email protected]/spi0_cs_pins";
		sound = "/soc/sound";
		hvs = "/soc/[email protected]";
		act_led = "/leds/act";
		spidev0 = "/soc/[email protected]/[email protected]";
		v7_cpu2 = "/cpus/[email protected]";
		cpus = "/cpus";
		hdmi = "/soc/[email protected]";
		pixelvalve2 = "/soc/[email protected]";
		v7_cpu0 = "/cpus/[email protected]";
		mailbox = "/soc/[email protected]";
		uart1 = "/soc/[email protected]";
		random = "/soc/[email protected]";
		i2c = "/soc/[email protected]";
	};

	soc {
		compatible = "simple-bus";
		ranges = <0x7e000000 0x3f000000 0x1000000 0x40000000 0x40000000 0x40000>;
		#address-cells = <0x1>;
		#size-cells = <0x1>;
		phandle = <0x29>;
		dma-ranges = <0xc0000000 0x0 0x3f000000>;

		[email protected] {
			compatible = "brcm,bcm2835-pl011", "arm,pl011", "arm,primecell";
			clocks = <0x7 0x13 0x7 0x14>;
			clock-names = "uartclk", "apb_pclk";
			status = "disabled";
			interrupts = <0x2 0x19>;
			phandle = <0x1e>;
			arm,primecell-periphid = <0x241011>;
			reg = <0x7e201000 0x1000>;
			cts-event-workaround;
		};

		[email protected] {
			compatible = "brcm,bcm2835-pixelvalve1";
			status = "disabled";
			interrupts = <0x2 0xe>;
			phandle = <0x2d>;
			reg = <0x7e207000 0x100>;
		};

		[email protected] {
			compatible = "brcm,bcm2835-cprman";
			clocks = <0x3 0x4 0x0 0x4 0x1 0x4 0x2 0x5 0x0 0x5 0x1 0x5 0x2>;
			firmware = <0x6>;
			#clock-cells = <0x1>;
			phandle = <0x7>;
			reg = <0x7e101000 0x2000>;
		};

		[email protected] {
			compatible = "brcm,bcm2835-hvs";
			status = "disabled";
			interrupts = <0x2 0x1>;
			phandle = <0x31>;
			reg = <0x7e400000 0x6000>;
		};

		[email protected] {
			compatible = "brcm,bcm2835-gpio";
			gpio-controller;
			#interrupt-cells = <0x2>;
			interrupts = <0x2 0x11 0x2 0x12>;
			phandle = <0xa>;
			reg = <0x7e200000 0xb4>;
			#gpio-cells = <0x2>;
			interrupt-controller;

			i2c1 {
				brcm,pins = <0x2 0x3>;
				phandle = <0x10>;
				brcm,function = <0x4>;
			};

			spi0_pins {
				brcm,pins = <0x9 0xa 0xb>;
				phandle = <0xb>;
				brcm,function = <0x4>;
			};

			sdhost_pins {
				brcm,pins = <0x30 0x31 0x32 0x33 0x34 0x35>;
				phandle = <0x14>;
				brcm,pull = <0x0 0x2 0x2 0x2 0x2 0x2>;
				brcm,function = <0x4>;
			};

			i2s {
				brcm,pins = <0x12 0x13 0x14 0x15>;
				phandle = <0x9>;
				brcm,function = <0x4>;
			};

			audio_pins {
				brcm,pins;
				phandle = <0x16>;
				brcm,function;
			};

			i2c0 {
				brcm,pins = <0x0 0x1>;
				phandle = <0xd>;
				brcm,function = <0x4>;
			};

			spi0_cs_pins {
				brcm,pins = <0x8 0x7>;
				phandle = <0xc>;
				brcm,function = <0x1>;
			};

			sdio_pins {
				brcm,pins = <0x16 0x17 0x18 0x19 0x1a 0x1b>;
				phandle = <0x48>;
				brcm,pull = <0x0 0x2 0x2 0x2 0x2 0x2>;
				brcm,function = <0x7>;
				linux,phandle = <0x48>;
			};
		};

		[email protected] {
			compatible = "brcm,bcm2835-pixelvalve2";
			status = "disabled";
			interrupts = <0x2 0xa>;
			phandle = <0x33>;
			reg = <0x7e807000 0x100>;
		};

		[email protected] {
			power-domains = <0xf 0xa>;
			compatible = "brcm,vc4-v3d";
			status = "disabled";
			interrupts = <0x1 0xa>;
			phandle = <0x36>;
			reg = <0x7ec00000 0x1000>;
		};

		gpu {
			compatible = "brcm,bcm2835-vc4";
			status = "disabled";
			phandle = <0x37>;
		};

		[email protected] {
			compatible = "brcm,bcm2835-mmc";
			clocks = <0x7 0x1c>;
			status = "okay";
			#address-cells = <0x1>;
			interrupts = <0x2 0x1e>;
			brcm,overclock-50 = <0x0>;
			bus-width = <0x4>;
			#size-cells = <0x0>;
			dma-names = "rx-tx";
			phandle = <0x39>;
			reg = <0x7e300000 0x100>;
			pinctrl-0 = <0x1>;
			dmas = <0x8 0xb>;
			vmmc-supply = <0x44>;
			non-removable;
			pinctrl-names = "default";

			[email protected] {
				compatible = "unifi_sdio";
				reg = <0x1>;
			};
		};

		arm-pmu {
			compatible = "arm,cortex-a7-pmu";
			interrupt-parent = <0x2>;
			interrupts = <0x9>;
		};

		thermal {
			compatible = "brcm,bcm2835-thermal";
			firmware = <0x6>;
			phandle = <0x41>;
		};

		[email protected] {
			compatible = "brcm,bcm2835-spi";
			clocks = <0x7 0x14>;
			status = "disabled";
			#address-cells = <0x1>;
			interrupts = <0x2 0x16>;
			cs-gpios = <0xa 0x8 0x1 0xa 0x7 0x1>;
			#size-cells = <0x0>;
			dma-names = "tx", "rx";
			phandle = <0x21>;
			reg = <0x7e204000 0x1000>;
			pinctrl-0 = <0xb 0xc>;
			dmas = <0x8 0x6 0x8 0x7>;
			pinctrl-names = "default";

			[email protected] {
				compatible = "spidev";
				#address-cells = <0x1>;
				#size-cells = <0x0>;
				phandle = <0x2b>;
				reg = <0x1>;
				spi-max-frequency = <0x7735940>;
			};

			[email protected] {
				compatible = "spidev";
				#address-cells = <0x1>;
				#size-cells = <0x0>;
				phandle = <0x2a>;
				reg = <0x0>;
				spi-max-frequency = <0x7735940>;
			};
		};

		i2cdsi {
			compatible = "i2c-gpio";
			status = "disabled";
			#address-cells = <0x1>;
			#size-cells = <0x0>;
			phandle = <0x3c>;

			[email protected] {
				compatible = "raspberrypi,touchscreen-bridge-i2c";
				phandle = <0x3d>;
				reg = <0x45>;
			};

			[email protected] {
				compatible = "raspberrypi,touchscreen-ts-i2c";
				phandle = <0x3e>;
				reg = <0x38>;
			};
		};

		vchiq {
			compatible = "brcm,bcm2835-vchiq";
			cache-line-size = <0x40>;
			firmware = <0x6>;
			interrupts = <0x0 0x2>;
			phandle = <0x18>;
			reg = <0x7e00b840 0xf>;
		};

		[email protected] {
			compatible = "brcm,bcm2835-i2c";
			clocks = <0x7 0x14>;
			status = "okay";
			#address-cells = <0x1>;
			interrupts = <0x2 0x15>;
			#size-cells = <0x0>;
			phandle = <0x23>;
			reg = <0x7e804000 0x1000>;
			clock-frequency = <0x186a0>;
			pinctrl-0 = <0x10>;
			pinctrl-names = "default";
		};

		vcsm {
			compatible = "raspberrypi,bcm2835-vcsm";
			firmware = <0x6>;
			status = "okay";
			phandle = <0x40>;
		};

		audio {
			brcm,pwm-channels = <0x8>;
			compatible = "brcm,bcm2835-audio";
			status = "okay";
			phandle = <0x25>;
			pinctrl-0 = <0x16>;
			pinctrl-names = "default";
		};

		[email protected] {
			compatible = "brcm,bcm2835-i2s";
			clocks = <0x7 0x1f>;
			#sound-dai-cells = <0x0>;
			status = "disabled";
			dma-names = "tx", "rx";
			phandle = <0x20>;
			reg = <0x7e203000 0x24>;
			pinctrl-0 = <0x9>;
			dmas = <0x8 0x2 0x8 0x3>;
			pinctrl-names = "default";
		};

		[email protected] {
			compatible = "brcm,bcm2835-mbox";
			#mbox-cells = <0x0>;
			interrupts = <0x0 0x1>;
			phandle = <0x15>;
			reg = <0x7e00b880 0x40>;
		};

		gpiomem {
			compatible = "brcm,bcm2835-gpiomem";
			reg = <0x7e200000 0x1000>;
		};

		[email protected] {
			compatible = "brcm,bcm2835-vec";
			clocks = <0x7 0x18>;
			status = "disabled";
			interrupts = <0x2 0x1b>;
			phandle = <0x32>;
			reg = <0x7e806000 0x1000>;
		};

		power {
			compatible = "raspberrypi,bcm2835-power";
			firmware = <0x6>;
			phandle = <0xf>;
			#power-domain-cells = <0x1>;
		};

		[email protected] {
			compatible = "brcm,bcm2835-pixelvalve0";
			status = "disabled";
			interrupts = <0x2 0xd>;
			phandle = <0x2c>;
			reg = <0x7e206000 0x100>;
		};

		firmware {
			compatible = "raspberrypi,bcm2835-firmware";
			mboxes = <0x15>;
			phandle = <0x6>;
		};

		[email protected] {
			compatible = "brcm,bcm2835-dsi0";
			clocks = <0x7 0x20 0x7 0x2f 0x7 0x31>;
			clock-names = "phy", "escape", "pixel";
			status = "disabled";
			#address-cells = <0x1>;
			interrupts = <0x2 0x4>;
			#size-cells = <0x0>;
			#clock-cells = <0x1>;
			phandle = <0x4>;
			reg = <0x7e209000 0x78>;
			clock-output-names = "dsi0_byte", "dsi0_ddr2", "dsi0_ddr";
		};

		fb {
			compatible = "brcm,bcm2708-fb";
			firmware = <0x6>;
			status = "okay";
			phandle = <0x3f>;
		};

		[email protected] {
			compatible = "brcm,bcm2835-sdhost";
			clocks = <0x7 0x14>;
			brcm,pio-limit = <0x1>;
			status = "okay";
			interrupts = <0x2 0x18>;
			brcm,overclock-50 = <0x0>;
			bus-width = <0x4>;
			dma-names = "rx-tx";
			phandle = <0x28>;
			reg = <0x7e202000 0x100>;
			pinctrl-0 = <0x14>;
			dmas = <0x8 0xd>;
			non-removable;
			pinctrl-names = "default";
		};

		virtgpio {
			compatible = "brcm,bcm2835-virtgpio";
			gpio-controller;
			firmware = <0x6>;
			status = "okay";
			phandle = <0x17>;
			#gpio-cells = <0x2>;
		};

		[email protected] {
			compatible = "brcm,bcm2835-dpi";
			clocks = <0x7 0x14 0x7 0x2c>;
			clock-names = "core", "pixel";
			status = "disabled";
			#address-cells = <0x1>;
			#size-cells = <0x0>;
			phandle = <0x38>;
			reg = <0x7e208000 0x8c>;
		};

		expgpio {
			compatible = "brcm,bcm2835-expgpio";
			gpio-controller;
			firmware = <0x6>;
			status = "okay";
			phandle = <0x12>;
			#gpio-cells = <0x2>;
		};

		[email protected] {
			power-domains = <0xf 0x5>;
			compatible = "brcm,bcm2835-hdmi";
			clocks = <0x7 0x10 0x7 0x19>;
			clock-names = "pixel", "hdmi";
			ddc = <0x11>;
			status = "disabled";
			interrupts = <0x2 0x8 0x2 0x9>;
			dma-names = "audio-rx";
			phandle = <0x34>;
			hpd-gpios = <0x12 0x0 0x1>;
			reg = <0x7e902000 0x600 0x7e808000 0x100>;
			dmas = <0x8 0x11>;
		};

		timer {
			compatible = "arm,armv7-timer";
			always-on;
			interrupt-parent = <0x2>;
			interrupts = <0x0 0x1 0x3 0x2>;
		};

		[email protected] {
			compatible = "brcm,bcm2835-pwm";
			clocks = <0x7 0x1e>;
			status = "disabled";
			assigned-clock-rates = <0x989680>;
			assigned-clocks = <0x7 0x1e>;
			phandle = <0x30>;
			reg = <0x7e20c000 0x28>;
			#pwm-cells = <0x2>;
		};

		[email protected] {
			compatible = "brcm,bcm2835-pm-wdt";
			phandle = <0x26>;
			reg = <0x7e100000 0x28>;
		};

		[email protected] {
			compatible = "brcm,bcm2836-armctrl-ic";
			#interrupt-cells = <0x2>;
			interrupt-parent = <0x2>;
			interrupts = <0x8>;
			phandle = <0x1>;
			reg = <0x7e00b200 0x200>;
			interrupt-controller;
		};

		local_intc {
			compatible = "brcm,bcm2836-l1-intc";
			#interrupt-cells = <0x1>;
			interrupt-parent = <0x2>;
			phandle = <0x2>;
			reg = <0x40000000 0x100>;
			interrupt-controller;
		};

		[email protected] {
			power-domains = <0xf 0x12>;
			compatible = "brcm,bcm2835-dsi1";
			clocks = <0x7 0x23 0x7 0x30 0x7 0x32>;
			clock-names = "phy", "escape", "pixel";
			status = "disabled";
			#address-cells = <0x1>;
			interrupts = <0x2 0xc>;
			#size-cells = <0x0>;
			#clock-cells = <0x1>;
			phandle = <0x5>;
			reg = <0x7e700000 0x8c>;
			clock-output-names = "dsi1_byte", "dsi1_ddr2", "dsi1_ddr";
		};

		axiperf {
			compatible = "brcm,bcm2835-axiperf";
			firmware = <0x6>;
			status = "disabled";
			phandle = <0x19>;
			reg = <0x7e009800 0x100 0x7ee08000 0x100>;
		};

		sound {
			status = "disabled";
			phandle = <0x42>;
		};

		[email protected] {
			compatible = "brcm,bcm2835-i2c";
			clocks = <0x7 0x14>;
			status = "okay";
			#address-cells = <0x1>;
			interrupts = <0x2 0x15>;
			#size-cells = <0x0>;
			phandle = <0x22>;
			reg = <0x7e205000 0x1000>;
			clock-frequency = <0x186a0>;
			pinctrl-0 = <0xd>;
			pinctrl-names = "default";
		};

		[email protected] {
			compatible = "brcm,bcm2835-aux-uart";
			clocks = <0xe 0x0>;
			status = "disabled";
			interrupt-parent = <0xe>;
			interrupts = <0x0>;
			phandle = <0x1f>;
			reg = <0x7e215040 0x40>;
		};

		[email protected] {
			#dma-cells = <0x1>;
			compatible = "brcm,bcm2835-dma";
			brcm,dma-channel-mask = <0x7f34>;
			interrupts = <0x1 0x10 0x1 0x11 0x1 0x12 0x1 0x13 0x1 0x14 0x1 0x15 0x1 0x16 0x1 0x17 0x1 0x18 0x1 0x19 0x1 0x1a 0x1 0x1b 0x1 0x1b 0x1 0x1b 0x1 0x1b 0x1 0x1c>;
			phandle = <0x8>;
			reg = <0x7e007000 0xf00>;
			interrupt-names = "dma0", "dma1", "dma2", "dma3", "dma4", "dma5", "dma6", "dma7", "dma8", "dma9", "dma10", "dma11", "dma12", "dma13", "dma14", "dma-shared-all";
		};

		[email protected] {
			compatible = "brcm,bcm2835-i2c";
			clocks = <0x7 0x14>;
			status = "disabled";
			#address-cells = <0x1>;
			interrupts = <0x2 0x15>;
			#size-cells = <0x0>;
			phandle = <0x11>;
			reg = <0x7e805000 0x1000>;
			clock-frequency = <0x186a0>;
		};

		[email protected] {
			compatible = "brcm,bcm2835-aux-spi";
			clocks = <0xe 0x1>;
			status = "disabled";
			interrupt-parent = <0xe>;
			#address-cells = <0x1>;
			interrupts = <0x1>;
			#size-cells = <0x0>;
			phandle = <0x2e>;
			reg = <0x7e215080 0x40>;
		};

		[email protected] {
			compatible = "brcm,bcm2835-aux";
			clocks = <0x7 0x14>;
			#interrupt-cells = <0x1>;
			interrupts = <0x1 0x1d>;
			#clock-cells = <0x1>;
			phandle = <0xe>;
			reg = <0x7e215000 0x8>;
			interrupt-controller;
		};

		[email protected] {
			compatible = "raspberrypi,rpi-firmware-kms";
			status = "disabled";
			interrupts = <0x2 0x10>;
			brcm,firmware = <0x6>;
			phandle = <0x3a>;
			reg = <0x7e600000 0x100>;
		};

		[email protected] {
			compatible = "brcm,bcm2835-rng";
			phandle = <0x27>;
			reg = <0x7e104000 0x10>;
		};

		[email protected] {
			power-domains = <0xf 0x6>;
			compatible = "brcm,bcm2708-usb";
			clocks = <0x13>;
			clock-names = "otg";
			#address-cells = <0x1>;
			interrupts = <0x2 0x0 0x1 0x9>;
			#size-cells = <0x0>;
			phandle = <0x35>;
			reg = <0x7e980000 0x10000 0x7e006000 0x1000>;
		};

		[email protected] {
			compatible = "brcm,bcm2835-smi";
			clocks = <0x7 0x2a>;
			status = "disabled";
			interrupts = <0x2 0x10>;
			assigned-clock-rates = <0x7735940>;
			dma-names = "rx-tx";
			assigned-clocks = <0x7 0x2a>;
			phandle = <0x3b>;
			reg = <0x7e600000 0x100>;
			dmas = <0x8 0x4>;
		};

		[email protected] {
			compatible = "brcm,bcm2835-aux-spi";
			clocks = <0xe 0x2>;
			status = "disabled";
			interrupt-parent = <0xe>;
			#address-cells = <0x1>;
			interrupts = <0x2>;
			#size-cells = <0x0>;
			phandle = <0x2f>;
			reg = <0x7e2150c0 0x40>;
		};
	};

	leds {
		compatible = "gpio-leds";
		phandle = <0x45>;

		act {
			gpios = <0x17 0x0 0x0>;
			label = "led0";
			phandle = <0x24>;
			linux,default-trigger = "mmc0";
		};
	};

	aliases {
		intc = "/soc/[email protected]";
		spi2 = "/soc/[email protected]";
		i2c1 = "/soc/[email protected]";
		i2c_vc = "/soc/[email protected]";
		spi0 = "/soc/[email protected]";
		thermal = "/soc/thermal";
		vchiq = "/soc/vchiq";
		sdhost = "/soc/[email protected]";
		aux = "/soc/[email protected]";
		gpio = "/soc/[email protected]";
		audio = "/soc/audio";
		dma = "/soc/[email protected]";
		soc = "/soc";
		leds = "/leds";
		mmc = "/soc/[email protected]";
		serial1 = "/soc/[email protected]";
		i2c_arm = "/soc/[email protected]";
		uart0 = "/soc/[email protected]";
		fb = "/soc/fb";
		i2c2 = "/soc/[email protected]";
		i2s = "/soc/[email protected]";
		spi1 = "/soc/[email protected]";
		usb = "/soc/[email protected]";
		i2c0 = "/soc/[email protected]";
		watchdog = "/soc/[email protected]";
		axiperf = "/soc/axiperf";
		sound = "/soc/sound";
		mailbox = "/soc/[email protected]";
		uart1 = "/soc/[email protected]";
		random = "/soc/[email protected]";
		i2c = "/soc/[email protected]";
		serial0 = "/soc/[email protected]";
	};

	chosen {
		bootargs = "bcm2708_fb.fbwidth=1600 bcm2708_fb.fbheight=1200 bcm2708_fb.fbswap=1 smsc95xx.macaddr=B8:27:EB:9F:32:39 vc_mem.mem_base=0x3ec00000 vc_mem.mem_size=0x40000000  dwc_otg.lpm_enable=0 console=tty1 root=PARTUUID=c7f7f717-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles";
		kaslr-seed = <0xf7f9c3a0 0x99e6747>;
	};

	memory {
		device_type = "memory";
		reg = <0x0 0x38000000>;
	};

	fixedregulator_3v3 {
		compatible = "regulator-fixed";
		phandle = <0x44>;
		regulator-min-microvolt = <0x325aa0>;
		regulator-max-microvolt = <0x325aa0>;
		regulator-always-on;
		regulator-name = "3v3";
	};

	cpus {
		#address-cells = <0x1>;
		#size-cells = <0x0>;
		phandle = <0x46>;

		[email protected] {
			compatible = "arm,cortex-a7";
			device_type = "cpu";
			phandle = <0x1d>;
			reg = <0x3>;
			clock-frequency = <0x47868c00>;
		};

		[email protected] {
			compatible = "arm,cortex-a7";
			device_type = "cpu";
			phandle = <0x1b>;
			reg = <0x1>;
			clock-frequency = <0x47868c00>;
		};

		[email protected] {
			compatible = "arm,cortex-a7";
			device_type = "cpu";
			phandle = <0x1c>;
			reg = <0x2>;
			clock-frequency = <0x47868c00>;
		};

		[email protected] {
			compatible = "arm,cortex-a7";
			device_type = "cpu";
			phandle = <0x1a>;
			reg = <0x0>;
			clock-frequency = <0x47868c00>;
		};
	};

	fixedregulator_5v0 {
		compatible = "regulator-fixed";
		phandle = <0x43>;
		regulator-min-microvolt = <0x4c4b40>;
		regulator-max-microvolt = <0x4c4b40>;
		regulator-always-on;
		regulator-name = "5v0";
	};

	axi {

		vc_mem {
			reg = <0x3ec00000 0x40000000 0xc0000000>;
		};
	};
};


Killertechno
Posts: 151
Joined: Wed Jan 02, 2013 8:28 am

Re: WF111 wifi module on CM3

Fri Nov 30, 2018 8:55 am

Hi, did you solve issues?

Return to “Compute Module”