mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-03 07:38:10 +00:00
MIPS: DTS: CI20: Enable support for WiFi / Bluetooth
Wire the WiFi/Bluetooth chip properly in the Device Tree. - Provide it with the correct regulators and clocks; - Change the MMC I/O bus to 1.8V which seems to be enough; - Change the MMC I/O bus frequency to 25 MHz as 50 MHz causes errors; - Fix the Bluetooth powerdown GPIO being inverted and add reset GPIO; - Convert host-wakeup-gpios to IRQ. With these changes, the WiFi works properly with the latest firmware provided by linux-firmware. The Bluetooth does not work very well here, as I cannot get my wireless keyboard to pair; but it does detect it, and it does see the key presses when I type the pairing code. Signed-off-by: Paul Cercueil <paul@crapouillou.net> Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
This commit is contained in:
parent
868b70b9e6
commit
c9f4b25272
1 changed files with 73 additions and 15 deletions
|
@ -97,10 +97,15 @@ ir: ir {
|
||||||
gpios = <&gpe 3 GPIO_ACTIVE_LOW>;
|
gpios = <&gpe 3 GPIO_ACTIVE_LOW>;
|
||||||
};
|
};
|
||||||
|
|
||||||
wlan0_power: fixedregulator-1 {
|
bt_power: fixedregulator-1 {
|
||||||
compatible = "regulator-fixed";
|
compatible = "regulator-fixed";
|
||||||
|
|
||||||
regulator-name = "wlan0_power";
|
regulator-name = "bt_power";
|
||||||
|
regulator-min-microvolt = <3300000>;
|
||||||
|
regulator-max-microvolt = <3300000>;
|
||||||
|
regulator-settling-time-us = <1400>;
|
||||||
|
|
||||||
|
vin-supply = <&vcc_50>;
|
||||||
|
|
||||||
gpio = <&gpb 19 0>;
|
gpio = <&gpb 19 0>;
|
||||||
enable-active-high;
|
enable-active-high;
|
||||||
|
@ -116,6 +121,40 @@ otg_power: fixedregulator-2 {
|
||||||
gpio = <&gpf 15 0>;
|
gpio = <&gpf 15 0>;
|
||||||
enable-active-high;
|
enable-active-high;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
wifi_power: fixedregulator-4 {
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
|
||||||
|
regulator-name = "wifi_power";
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Technically it's 5V, the WiFi chip has its own internal
|
||||||
|
* regulators; but the MMC/SD subsystem won't accept such a
|
||||||
|
* value.
|
||||||
|
*/
|
||||||
|
regulator-min-microvolt = <3300000>;
|
||||||
|
regulator-max-microvolt = <3300000>;
|
||||||
|
regulator-settling-time-us = <150000>;
|
||||||
|
|
||||||
|
vin-supply = <&bt_power>;
|
||||||
|
};
|
||||||
|
|
||||||
|
vcc_33v: fixedregulator-5 {
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
|
||||||
|
regulator-name = "vcc_33v";
|
||||||
|
regulator-min-microvolt = <3300000>;
|
||||||
|
regulator-max-microvolt = <3300000>;
|
||||||
|
regulator-always-on;
|
||||||
|
};
|
||||||
|
|
||||||
|
wifi_pwrseq: pwrseq {
|
||||||
|
compatible = "mmc-pwrseq-simple";
|
||||||
|
reset-gpios = <&gpf 7 GPIO_ACTIVE_LOW>;
|
||||||
|
|
||||||
|
clocks = <&rtc_dev>;
|
||||||
|
clock-names = "ext_clock";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&ext {
|
&ext {
|
||||||
|
@ -161,24 +200,33 @@ &mmc0 {
|
||||||
pinctrl-0 = <&pins_mmc0>;
|
pinctrl-0 = <&pins_mmc0>;
|
||||||
|
|
||||||
cd-gpios = <&gpf 20 GPIO_ACTIVE_LOW>;
|
cd-gpios = <&gpf 20 GPIO_ACTIVE_LOW>;
|
||||||
|
vmmc-supply = <&vcc_33v>;
|
||||||
|
vqmmc-supply = <&vcc_33v>;
|
||||||
};
|
};
|
||||||
|
|
||||||
&mmc1 {
|
&mmc1 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
bus-width = <4>;
|
bus-width = <4>;
|
||||||
max-frequency = <50000000>;
|
max-frequency = <25000000>;
|
||||||
|
mmc-pwrseq = <&wifi_pwrseq>;
|
||||||
|
vmmc-supply = <&wifi_power>;
|
||||||
|
vqmmc-supply = <&wifi_io>;
|
||||||
non-removable;
|
non-removable;
|
||||||
|
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pins_mmc1>;
|
pinctrl-0 = <&pins_mmc1>;
|
||||||
|
|
||||||
brcmf: wifi@1 {
|
#address-cells = <1>;
|
||||||
/* reg = <4>;*/
|
#size-cells = <0>;
|
||||||
compatible = "brcm,bcm4330-fmac";
|
|
||||||
vcc-supply = <&wlan0_power>;
|
wifi@1 {
|
||||||
device-wakeup-gpios = <&gpd 9 GPIO_ACTIVE_HIGH>;
|
compatible = "brcm,bcm4329-fmac";
|
||||||
shutdown-gpios = <&gpf 7 GPIO_ACTIVE_LOW>;
|
reg = <1>;
|
||||||
|
|
||||||
|
interrupt-parent = <&gpd>;
|
||||||
|
interrupts = <9 IRQ_TYPE_EDGE_FALLING>;
|
||||||
|
interrupt-names = "host-wake";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -205,11 +253,20 @@ &uart2 {
|
||||||
|
|
||||||
bluetooth {
|
bluetooth {
|
||||||
compatible = "brcm,bcm4330-bt";
|
compatible = "brcm,bcm4330-bt";
|
||||||
reset-gpios = <&gpf 8 GPIO_ACTIVE_HIGH>;
|
|
||||||
vcc-supply = <&wlan0_power>;
|
vbat-supply = <&bt_power>;
|
||||||
|
vddio-supply = <&wifi_io>;
|
||||||
|
|
||||||
|
interrupt-parent = <&gpf>;
|
||||||
|
interrupts = <6 IRQ_TYPE_EDGE_RISING>;
|
||||||
|
interrupt-names = "host-wakeup";
|
||||||
|
|
||||||
|
clocks = <&rtc_dev>;
|
||||||
|
clock-names = "lpo";
|
||||||
|
|
||||||
|
reset-gpios = <&gpf 8 GPIO_ACTIVE_LOW>;
|
||||||
device-wakeup-gpios = <&gpf 5 GPIO_ACTIVE_HIGH>;
|
device-wakeup-gpios = <&gpf 5 GPIO_ACTIVE_HIGH>;
|
||||||
host-wakeup-gpios = <&gpf 6 GPIO_ACTIVE_HIGH>;
|
shutdown-gpios = <&gpf 4 GPIO_ACTIVE_HIGH>;
|
||||||
shutdown-gpios = <&gpf 4 GPIO_ACTIVE_LOW>;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -270,8 +327,9 @@ vcc_25: LDO5 {
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
};
|
};
|
||||||
wifi_io: LDO6 {
|
wifi_io: LDO6 {
|
||||||
regulator-min-microvolt = <2500000>;
|
regulator-min-microvolt = <1800000>;
|
||||||
regulator-max-microvolt = <2500000>;
|
regulator-max-microvolt = <1800000>;
|
||||||
|
regulator-settling-time-us = <150000>;
|
||||||
inl-supply = <&vcc_33v>;
|
inl-supply = <&vcc_33v>;
|
||||||
};
|
};
|
||||||
cim_io_28: LDO7 {
|
cim_io_28: LDO7 {
|
||||||
|
|
Loading…
Reference in a new issue