Eu tenho uma placa customizada baseada em RK3288 com chipset AP6212A wifi / bt. Eu estou usando o rockhip-linux 4.4 com o driver bcmdhd. Está usando o protocolo SDIO. Após o carregamento do driver, o kernel congela ao tentar executar o comando "WLC_UP" em qualquer lugar do driver.
dhd_conf_set_intiovar (dhd, WLC_UP, "acima", 0, 0, FALSE);
O console fica congelado e o HDMI também congela. Se eu comentar as linhas com o WLC_UP no driver, então eu recebo uma inicialização normal e também o wlan0 é registrado e está ativo, mas não pode escanear ou conectar-se ao wifi.
Aqui está o snippet do dts para a seção sdio e wireless:
wireless-bluetooth {
compatible = "bluetooth-platdata";
clocks = <&rk818 1>;
clock-names = "ext_clock";
uart_rts_gpios = <&gpio4 19 GPIO_ACTIVE_LOW>;
pinctrl-names = "default", "rts_gpio";
pinctrl-0 = <&uart0_rts>;
pinctrl-1 = <&uart0_gpios>;
BT,reset_gpio = <&gpio4 29 GPIO_ACTIVE_HIGH>;
BT,wake_gpio = <&gpio4 26 GPIO_ACTIVE_HIGH>;
BT,wake_host_irq = <&gpio4 31 GPIO_ACTIVE_HIGH>;
status = "okay";
};
wireless-wlan {
compatible = "wlan-platdata";
rockchip,grf = <&grf>;
wifi_chip_type = "ap6212";
sdio_vref = <1800>;
WIFI,host_wake_irq = <&gpio4 30 GPIO_ACTIVE_HIGH>;
status = "okay";
};
&sdio0 {
clock-frequency = <50000000>;
clock-freq-min-max = <200000 50000000>;
bus-width = <4>;
cap-sd-highspeed;
cap-sdio-irq;
disable-wp;
ignore-pm-notify;
keep-power-in-suspend;
mmc-pwrseq = <&sdio_pwrseq>;
non-removable;
num-slots = <1>;
pinctrl-names = "default";
pinctrl-0 = <&sdio0_bus4 &sdio0_cmd &sdio0_clk &sdio0_int>;
sd-uhs-sdr104;
supports-sdio;
vmmc-supply = <&vcc_wlin>;
vqmmc-supply = <&vccio_wl>;
status = "okay";
};
Tags kernel-modules linux