mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 03:40:35 +09:00
wifi: meson64: support ath10k pcie wifi and sdio wifi in s400/s420
PD#142470: wifi 1. add ath10k driver compile as module add cfg80211_wext_compat to support wext command. CONFIG_CFG80211_WEXT=y CONFIG_ATH_COMMON=m CONFIG_ATH10K=m CONFIG_ATH10K_PCI=m 2. fix wifi enalbe & irq pin num 3. add pwm config for 32k 4. add 32k pin mux Change-Id: I71872ceef147b6cc49a76bce837a9aff0d5be66f Signed-off-by: Weiguang Ruan <Weiguang.ruan@amlogic.com> Signed-off-by: Yun Cai <yun.cai@amlogic.com>
This commit is contained in:
committed by
Victor Wan
parent
05614edf3e
commit
80b59a00c9
@@ -303,13 +303,20 @@
|
||||
compatible = "amlogic, aml_wifi";
|
||||
dev_name = "aml_wifi";
|
||||
status = "okay";
|
||||
interrupt_pin = <&gpio GPIOX_7 GPIO_ACTIVE_HIGH>;
|
||||
interrupts = < 0 68 4>;
|
||||
interrupt_pin = <&gpio GPIOX_6 GPIO_ACTIVE_HIGH>;
|
||||
interrupts = < 0 67 4>;
|
||||
irq_trigger_type = "GPIO_IRQ_LOW";
|
||||
power_on_pin = <&gpio GPIOX_6 GPIO_ACTIVE_HIGH>;
|
||||
// pinctrl-names = "wifi_32k_pins";
|
||||
// pinctrl-0 = <&wifi_32k_pins>;
|
||||
// pwm_config = <&wifi_pwm_conf>;
|
||||
power_on_pin = <&gpio GPIOX_7 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-names = "wifi_32k_pins";
|
||||
pinctrl-0 = <&wifi_32k_pins>;
|
||||
pwm_config = <&wifi_pwm_conf>;
|
||||
};
|
||||
|
||||
wifi_pwm_conf:wifi_pwm_conf{
|
||||
pwm_channel1 = <PWM_A>;
|
||||
pwm_channel2 = <PWM_A2>;
|
||||
pwm_channel1_conf = <30541 15270 6>;
|
||||
pwm_channel2_conf = <30518 15259 9>;
|
||||
};
|
||||
|
||||
sd_emmc_c: emmc@ffe07000 {
|
||||
|
||||
@@ -245,9 +245,16 @@
|
||||
interrupts = < 0 67 4>;
|
||||
irq_trigger_type = "GPIO_IRQ_LOW";
|
||||
power_on_pin = <&gpio GPIOX_7 GPIO_ACTIVE_HIGH>;
|
||||
// pinctrl-names = "wifi_32k_pins";
|
||||
// pinctrl-0 = <&wifi_32k_pins>;
|
||||
// pwm_config = <&wifi_pwm_conf>;
|
||||
pinctrl-names = "wifi_32k_pins";
|
||||
pinctrl-0 = <&wifi_32k_pins>;
|
||||
pwm_config = <&wifi_pwm_conf>;
|
||||
};
|
||||
|
||||
wifi_pwm_conf:wifi_pwm_conf{
|
||||
pwm_channel1 = <PWM_A>;
|
||||
pwm_channel2 = <PWM_A2>;
|
||||
pwm_channel1_conf = <30541 15270 6>;
|
||||
pwm_channel2_conf = <30518 15259 9>;
|
||||
};
|
||||
sd_emmc_c: emmc@ffe07000 {
|
||||
status = "disabled";
|
||||
|
||||
@@ -152,15 +152,15 @@
|
||||
power_on_pin = <&gpio GPIOX_6 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-names = "wifi_32k_pins";
|
||||
pinctrl-0 = <&wifi_32k_pins>;
|
||||
// pwm_config = <&wifi_pwm_conf>;
|
||||
pwm_config = <&wifi_pwm_conf>;
|
||||
};
|
||||
|
||||
// wifi_pwm_conf:wifi_pwm_conf{
|
||||
// pwm_channel1 = <PWM_E>;
|
||||
// pwm_channel2 = <PWM_E2>;
|
||||
// pwm_channel1_conf = <30541 15270 6>;
|
||||
// pwm_channel2_conf = <30518 15259 9>;
|
||||
// };
|
||||
wifi_pwm_conf:wifi_pwm_conf{
|
||||
pwm_channel1 = <PWM_E>;
|
||||
pwm_channel2 = <PWM_E2>;
|
||||
pwm_channel1_conf = <30541 15270 6>;
|
||||
pwm_channel2_conf = <30518 15259 9>;
|
||||
};
|
||||
|
||||
sd_emmc_c: emmc@d0074000 {
|
||||
status = "okay";
|
||||
|
||||
@@ -153,15 +153,15 @@
|
||||
power_on_pin = <&gpio GPIOX_6 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-names = "wifi_32k_pins";
|
||||
pinctrl-0 = <&wifi_32k_pins>;
|
||||
// pwm_config = <&wifi_pwm_conf>;
|
||||
pwm_config = <&wifi_pwm_conf>;
|
||||
};
|
||||
|
||||
// wifi_pwm_conf:wifi_pwm_conf{
|
||||
// pwm_channel1 = <PWM_E>;
|
||||
// pwm_channel2 = <PWM_E2>;
|
||||
// pwm_channel1_conf = <30541 15270 6>;
|
||||
// pwm_channel2_conf = <30518 15259 9>;
|
||||
// };
|
||||
wifi_pwm_conf:wifi_pwm_conf{
|
||||
pwm_channel1 = <PWM_E>;
|
||||
pwm_channel2 = <PWM_E2>;
|
||||
pwm_channel1_conf = <30541 15270 6>;
|
||||
pwm_channel2_conf = <30518 15259 9>;
|
||||
};
|
||||
|
||||
sd_emmc_c: emmc@d0074000 {
|
||||
status = "okay";
|
||||
|
||||
@@ -80,15 +80,15 @@
|
||||
power_on_pin = <&gpio GPIOX_6 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-names = "wifi_32k_pins";
|
||||
pinctrl-0 = <&wifi_32k_pins>;
|
||||
// pwm_config = <&wifi_pwm_conf>;
|
||||
pwm_config = <&wifi_pwm_conf>;
|
||||
};
|
||||
|
||||
// wifi_pwm_conf:wifi_pwm_conf{
|
||||
// pwm_channel1 = <PWM_E>;
|
||||
// pwm_channel2 = <PWM_E2>;
|
||||
// pwm_channel1_conf = <30541 15270 6>;
|
||||
// pwm_channel2_conf = <30518 15259 9>;
|
||||
// };
|
||||
wifi_pwm_conf:wifi_pwm_conf{
|
||||
pwm_channel1 = <PWM_E>;
|
||||
pwm_channel2 = <PWM_E2>;
|
||||
pwm_channel1_conf = <30541 15270 6>;
|
||||
pwm_channel2_conf = <30518 15259 9>;
|
||||
};
|
||||
|
||||
sd_emmc_c: emmc@d0074000 {
|
||||
status = "okay";
|
||||
|
||||
@@ -80,15 +80,15 @@
|
||||
power_on_pin = <&gpio GPIOX_6 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-names = "wifi_32k_pins";
|
||||
pinctrl-0 = <&wifi_32k_pins>;
|
||||
// pwm_config = <&wifi_pwm_conf>;
|
||||
pwm_config = <&wifi_pwm_conf>;
|
||||
};
|
||||
|
||||
// wifi_pwm_conf:wifi_pwm_conf{
|
||||
// pwm_channel1 = <PWM_E>;
|
||||
// pwm_channel2 = <PWM_E2>;
|
||||
// pwm_channel1_conf = <30541 15270 6>;
|
||||
// pwm_channel2_conf = <30518 15259 9>;
|
||||
// };
|
||||
wifi_pwm_conf:wifi_pwm_conf{
|
||||
pwm_channel1 = <PWM_E>;
|
||||
pwm_channel2 = <PWM_E2>;
|
||||
pwm_channel1_conf = <30541 15270 6>;
|
||||
pwm_channel2_conf = <30518 15259 9>;
|
||||
};
|
||||
|
||||
sd_emmc_c: emmc@d0074000 {
|
||||
status = "disabled";
|
||||
|
||||
@@ -145,15 +145,15 @@
|
||||
power_on_pin = <&gpio GPIOX_6 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-names = "wifi_32k_pins";
|
||||
pinctrl-0 = <&wifi_32k_pins>;
|
||||
// pwm_config = <&wifi_pwm_conf>;
|
||||
pwm_config = <&wifi_pwm_conf>;
|
||||
};
|
||||
|
||||
// wifi_pwm_conf:wifi_pwm_conf{
|
||||
// pwm_channel1 = <PWM_E>;
|
||||
// pwm_channel2 = <PWM_E2>;
|
||||
// pwm_channel1_conf = <30541 15270 6>;
|
||||
// pwm_channel2_conf = <30518 15259 9>;
|
||||
// };
|
||||
wifi_pwm_conf:wifi_pwm_conf{
|
||||
pwm_channel1 = <PWM_E>;
|
||||
pwm_channel2 = <PWM_E2>;
|
||||
pwm_channel1_conf = <30541 15270 6>;
|
||||
pwm_channel2_conf = <30518 15259 9>;
|
||||
};
|
||||
|
||||
sd_emmc_c: emmc@d0074000 {
|
||||
status = "okay";
|
||||
|
||||
@@ -764,5 +764,12 @@
|
||||
};
|
||||
};
|
||||
|
||||
wifi_32k_pins:wifi_32k_pins {
|
||||
mux {
|
||||
groups ="GPIOX_20";
|
||||
function = "pwm_a";
|
||||
};
|
||||
};
|
||||
|
||||
}; /* end of pinctrl_periphs */
|
||||
|
||||
|
||||
@@ -188,6 +188,7 @@ CONFIG_BT_HIDP=y
|
||||
CONFIG_BT_HCIUART=y
|
||||
CONFIG_BT_HCIUART_H4=y
|
||||
CONFIG_CFG80211=y
|
||||
CONFIG_CFG80211_WEXT=y
|
||||
CONFIG_MAC80211=y
|
||||
CONFIG_RFKILL=y
|
||||
CONFIG_AMLOGIC_DRIVER=y
|
||||
@@ -331,6 +332,9 @@ CONFIG_PPPOE=y
|
||||
CONFIG_PPPOL2TP=y
|
||||
CONFIG_PPP_ASYNC=y
|
||||
CONFIG_USB_USBNET=y
|
||||
CONFIG_ATH_COMMON=m
|
||||
CONFIG_ATH10K=m
|
||||
CONFIG_ATH10K_PCI=m
|
||||
CONFIG_INPUT_POLLDEV=y
|
||||
CONFIG_INPUT_EVDEV=y
|
||||
CONFIG_INPUT_JOYSTICK=y
|
||||
|
||||
@@ -461,14 +461,14 @@ int pwm_double_channel_conf_dt(struct wifi_plat_info *plat)
|
||||
if (ret) {
|
||||
pr_err("not match wifi_pwm_config node\n");
|
||||
return -1;
|
||||
} else {
|
||||
pwm_phandle = val;
|
||||
np_wifi_pwm_conf = of_find_node_by_phandle(pwm_phandle);
|
||||
if (!np_wifi_pwm_conf) {
|
||||
pr_err("can't find wifi_pwm_config node\n");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
pwm_phandle = val;
|
||||
np_wifi_pwm_conf = of_find_node_by_phandle(pwm_phandle);
|
||||
if (!np_wifi_pwm_conf) {
|
||||
pr_err("can't find wifi_pwm_config node\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
ret = of_property_read_u32(np_wifi_pwm_conf, "pwm_channel1",
|
||||
&(plat->gxtv_conf.pwm_channel1));
|
||||
@@ -648,36 +648,12 @@ static int wifi_dev_probe(struct platform_device *pdev)
|
||||
if (of_get_property(pdev->dev.of_node,
|
||||
"pinctrl-names", NULL)) {
|
||||
unsigned int pwm_misc;
|
||||
unsigned int pwm_time_count;
|
||||
|
||||
if (get_cpu_type() >= MESON_CPU_MAJOR_ID_GXTVBB) {
|
||||
WIFI_INFO("set pwm as 32k output");
|
||||
aml_write_cbus(0x21b0, 0x16d016e);
|
||||
aml_write_cbus(0x21b5, 0x16d016d);
|
||||
|
||||
pwm_time_count = aml_read_cbus(0x21b4);
|
||||
pwm_time_count &= ~(0xffff << 16);
|
||||
pwm_time_count |= ((3 << 16) | (2 << 24));
|
||||
aml_write_cbus(0x21b4, pwm_time_count);
|
||||
|
||||
pwm_misc = aml_read_cbus(0x21b2);
|
||||
pwm_misc &= ~((0x7f << 8) | (3 << 4) |
|
||||
(1 << 2) | (1 << 0));
|
||||
pwm_misc |= ((3 << 24) | (1 << 15) |
|
||||
(0 << 8) | (0 << 4));
|
||||
aml_write_cbus(0x21b2, (pwm_misc | (1 << 0)));
|
||||
|
||||
pwm_double_channel_conf_dt(plat);
|
||||
pwm_double_channel_conf(plat);
|
||||
} else if (get_cpu_type() == MESON_CPU_MAJOR_ID_GXBB) {
|
||||
|
||||
WIFI_INFO("set pwm as 32k output");
|
||||
aml_write_cbus(0x21b0, 0x7f107f2);
|
||||
pwm_misc = aml_read_cbus(0x21b2);
|
||||
pwm_misc &= ~((0x7f << 8) | (3 << 4) |
|
||||
(1 << 2) | (1 << 0));
|
||||
pwm_misc |= ((1 << 15) | (4 << 8) | (3 << 4));
|
||||
aml_write_cbus(0x21b2, pwm_misc);
|
||||
aml_write_cbus(0x21b2, (pwm_misc | (1 << 0)));
|
||||
|
||||
pwm_single_channel_conf_dt(plat);
|
||||
pwm_single_channel_conf(plat);
|
||||
} else if (get_cpu_type() == MESON_CPU_MAJOR_ID_M8B) {
|
||||
|
||||
WIFI_INFO("set pwm as 32k output");
|
||||
|
||||
Reference in New Issue
Block a user