Compare commits
10 Commits
2d94361c54
...
3ff9574a32
| Author | SHA1 | Date |
|---|---|---|
|
|
3ff9574a32 | |
|
|
5b622f37c7 | |
|
|
b0002e2962 | |
|
|
41b50f1388 | |
|
|
5d241654fa | |
|
|
6c49f0aa67 | |
|
|
012b053912 | |
|
|
047fffd6c6 | |
|
|
e65ecde6de | |
|
|
37be4bf486 |
|
|
@ -55,6 +55,7 @@ dtbo-$(CONFIG_ARCH_ROCKCHIP) += \
|
|||
rk3588-opi5plus-lcd.dtbo \
|
||||
rk3588-opi5pro-lcd.dtbo \
|
||||
rk3588-opi5max-lcd.dtbo \
|
||||
rk3588-opiaimax-lcd.dtbo \
|
||||
rk3588-opi5ultra-lcd.dtbo \
|
||||
rk3588-ov13850-c1.dtbo \
|
||||
rk3588-ov13850-c2.dtbo \
|
||||
|
|
@ -94,6 +95,10 @@ dtbo-$(CONFIG_ARCH_ROCKCHIP) += \
|
|||
rk3588-opi5plus-disable-leds.dtbo \
|
||||
rk3588-opi5pro-disable-leds.dtbo \
|
||||
rk3588-opi5max-disable-leds.dtbo \
|
||||
rk3588-opi5ultra-disable-leds.dtbo \
|
||||
rk3588-opiaimax-disable-leds.dtbo \
|
||||
rk3588-opiaimax-ov13850.dtbo \
|
||||
rk3588-opiaimax-ov13855.dtbo \
|
||||
rk3588-opi5pro-sfc.dtbo \
|
||||
rk3588-opicm5-blink-gpio.dtbo \
|
||||
rk3588-opicm5-cam1.dtbo \
|
||||
|
|
@ -119,8 +124,8 @@ dtbo-$(CONFIG_ARCH_ROCKCHIP) += \
|
|||
rk356x-pwm11-m1.dtbo \
|
||||
rk356x-pwm15-m1.dtbo \
|
||||
rk356x-pwm7.dtbo \
|
||||
rk356x-ov5647-c1.dtbo \
|
||||
rk356x-ov5647-c2.dtbo \
|
||||
rk356x-cam1.dtbo \
|
||||
rk356x-cam2.dtbo \
|
||||
rk3399-lcd1.dtbo \
|
||||
rk3399-lcd2.dtbo \
|
||||
rk3399-camera1.dtbo \
|
||||
|
|
|
|||
|
|
@ -66,4 +66,12 @@
|
|||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@8 {
|
||||
target = <&imx219>;
|
||||
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
@ -107,4 +107,12 @@
|
|||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@13 {
|
||||
target = <&imx219_1>;
|
||||
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
@ -71,6 +71,10 @@
|
|||
ov13855-1@36 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
imx586@1a {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,20 @@
|
|||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/ {
|
||||
fragment@0 {
|
||||
target = <&leds>;
|
||||
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
|
||||
blue_led@1 {
|
||||
linux,default-trigger = "none";
|
||||
};
|
||||
|
||||
green_led@2 {
|
||||
linux,default-trigger = "none";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/ {
|
||||
fragment@0 {
|
||||
target = <&leds>;
|
||||
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
|
||||
blue_led@1 {
|
||||
linux,default-trigger = "none";
|
||||
};
|
||||
|
||||
green_led@2 {
|
||||
linux,default-trigger = "none";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/ {
|
||||
fragment@0 {
|
||||
target = <&dsi1>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target = <&dsi1_panel>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target = <&dsi1_in_vp3>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
@ -0,0 +1,100 @@
|
|||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/ {
|
||||
fragment@0 {
|
||||
target = <&csi2_dphy0_hw>;
|
||||
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target = <&csi2_dphy0>;
|
||||
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target = <&mipi2_csi2>;
|
||||
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@3 {
|
||||
target = <&rkcif_mipi_lvds2>;
|
||||
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@4 {
|
||||
target = <&rkcif_mipi_lvds2_sditf>;
|
||||
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@5 {
|
||||
target = <&rkisp0_vir1>;
|
||||
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@6 {
|
||||
target = <&i2c3>;
|
||||
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
|
||||
vm149c-p1@c {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
ov13850-1@10 {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@7 {
|
||||
target = <&rkcif>;
|
||||
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@8 {
|
||||
target = <&rkcif_mmu>;
|
||||
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@9 {
|
||||
target = <&rkisp0>;
|
||||
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@10 {
|
||||
target = <&isp0_mmu>;
|
||||
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
@ -0,0 +1,100 @@
|
|||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/ {
|
||||
fragment@0 {
|
||||
target = <&csi2_dphy0_hw>;
|
||||
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target = <&csi2_dphy0>;
|
||||
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target = <&mipi2_csi2>;
|
||||
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@3 {
|
||||
target = <&rkcif_mipi_lvds2>;
|
||||
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@4 {
|
||||
target = <&rkcif_mipi_lvds2_sditf>;
|
||||
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@5 {
|
||||
target = <&rkisp0_vir1>;
|
||||
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@6 {
|
||||
target = <&i2c3>;
|
||||
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
|
||||
dw9714-p1@c {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
ov13855-1@36 {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@7 {
|
||||
target = <&rkcif>;
|
||||
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@8 {
|
||||
target = <&rkcif_mmu>;
|
||||
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@9 {
|
||||
target = <&rkisp0>;
|
||||
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@10 {
|
||||
target = <&isp0_mmu>;
|
||||
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
@ -191,10 +191,10 @@
|
|||
regulator-boot-on;
|
||||
};
|
||||
|
||||
ext_cam_ov5647_clk: external-camera-ov5647-clock {
|
||||
ext_cam_clk_25m: external-camera-clock {
|
||||
compatible = "fixed-clock";
|
||||
clock-frequency = <25000000>;
|
||||
clock-output-names = "ext_cam_ov5647_clk";
|
||||
clock-output-names = "ext_cam_clk_25m";
|
||||
#clock-cells = <0>;
|
||||
};
|
||||
|
||||
|
|
@ -1089,16 +1089,35 @@
|
|||
status = "disabled";
|
||||
compatible = "ovti,ov5647";
|
||||
reg = <0x36>;
|
||||
clocks = <&ext_cam_ov5647_clk>;
|
||||
clock-names = "ext_cam_ov5647_clk";
|
||||
clocks = <&ext_cam_clk_25m>;
|
||||
clock-names = "ext_cam_clk_25m";
|
||||
pwdn-gpios = <&gpio2 RK_PC6 GPIO_ACTIVE_LOW>;
|
||||
rockchip,camera-module-index = <0>;
|
||||
rockchip,camera-module-facing = "back";
|
||||
rockchip,camera-module-name = "LMM248";
|
||||
rockchip,camera-module-lens-name = "YXC-M804A2";
|
||||
rockchip,camera-module-name = "rpi-camera-v1";
|
||||
rockchip,camera-module-lens-name = "default";
|
||||
port {
|
||||
ov5647_out: endpoint {
|
||||
remote-endpoint = <&dphy1_in>;
|
||||
remote-endpoint = <&dphy1_in_ucam0>;
|
||||
data-lanes = <1 2>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
imx219: imx219@10 {
|
||||
status = "disabled";
|
||||
compatible = "sony,imx219";
|
||||
reg = <0x10>;
|
||||
clocks = <&ext_cam_clk_25m>;
|
||||
clock-names = "ext_cam_clk_25m";
|
||||
pwdn-gpios = <&gpio2 RK_PC6 GPIO_ACTIVE_LOW>;
|
||||
rockchip,camera-module-index = <0>;
|
||||
rockchip,camera-module-facing = "back";
|
||||
rockchip,camera-module-name = "rpi-camera-v2";
|
||||
rockchip,camera-module-lens-name = "default";
|
||||
port {
|
||||
imx219_out: endpoint {
|
||||
remote-endpoint = <&dphy1_in_ucam1>;
|
||||
data-lanes = <1 2>;
|
||||
};
|
||||
};
|
||||
|
|
@ -1147,11 +1166,17 @@
|
|||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
dphy1_in: endpoint@1 {
|
||||
reg = <1>;
|
||||
dphy1_in_ucam0: endpoint@0 {
|
||||
reg = <0>;
|
||||
remote-endpoint = <&ov5647_out>;
|
||||
data-lanes = <1 2>;
|
||||
};
|
||||
|
||||
dphy1_in_ucam1: endpoint@1 {
|
||||
reg = <1>;
|
||||
remote-endpoint = <&imx219_out>;
|
||||
data-lanes = <1 2>;
|
||||
};
|
||||
};
|
||||
|
||||
port@1 {
|
||||
|
|
|
|||
|
|
@ -191,10 +191,10 @@
|
|||
regulator-boot-on;
|
||||
};
|
||||
|
||||
ext_cam_ov5647_clk: external-camera-ov5647-clock {
|
||||
ext_cam_clk_25m: external-camera-clock {
|
||||
compatible = "fixed-clock";
|
||||
clock-frequency = <25000000>;
|
||||
clock-output-names = "ext_cam_ov5647_clk";
|
||||
clock-output-names = "ext_cam_clk_25m";
|
||||
#clock-cells = <0>;
|
||||
};
|
||||
|
||||
|
|
@ -1081,16 +1081,35 @@
|
|||
status = "disabled";
|
||||
compatible = "ovti,ov5647";
|
||||
reg = <0x36>;
|
||||
clocks = <&ext_cam_ov5647_clk>;
|
||||
clock-names = "ext_cam_ov5647_clk";
|
||||
clocks = <&ext_cam_clk_25m>;
|
||||
clock-names = "ext_cam_clk_25m";
|
||||
pwdn-gpios = <&gpio2 RK_PC6 GPIO_ACTIVE_LOW>;
|
||||
rockchip,camera-module-index = <0>;
|
||||
rockchip,camera-module-facing = "back";
|
||||
rockchip,camera-module-name = "LMM248";
|
||||
rockchip,camera-module-lens-name = "YXC-M804A2";
|
||||
rockchip,camera-module-name = "rpi-camera-v1";
|
||||
rockchip,camera-module-lens-name = "default";
|
||||
port {
|
||||
ov5647_out: endpoint {
|
||||
remote-endpoint = <&dphy1_in>;
|
||||
remote-endpoint = <&dphy1_in_ucam0>;
|
||||
data-lanes = <1 2>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
imx219: imx219@10 {
|
||||
status = "disabled";
|
||||
compatible = "sony,imx219";
|
||||
reg = <0x10>;
|
||||
clocks = <&ext_cam_clk_25m>;
|
||||
clock-names = "ext_cam_clk_25m";
|
||||
pwdn-gpios = <&gpio2 RK_PC6 GPIO_ACTIVE_LOW>;
|
||||
rockchip,camera-module-index = <0>;
|
||||
rockchip,camera-module-facing = "back";
|
||||
rockchip,camera-module-name = "rpi-camera-v2";
|
||||
rockchip,camera-module-lens-name = "default";
|
||||
port {
|
||||
imx219_out: endpoint {
|
||||
remote-endpoint = <&dphy1_in_ucam1>;
|
||||
data-lanes = <1 2>;
|
||||
};
|
||||
};
|
||||
|
|
@ -1139,11 +1158,17 @@
|
|||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
dphy1_in: endpoint@1 {
|
||||
reg = <1>;
|
||||
dphy1_in_ucam0: endpoint@0 {
|
||||
reg = <0>;
|
||||
remote-endpoint = <&ov5647_out>;
|
||||
data-lanes = <1 2>;
|
||||
};
|
||||
|
||||
dphy1_in_ucam1: endpoint@1 {
|
||||
reg = <1>;
|
||||
remote-endpoint = <&imx219_out>;
|
||||
data-lanes = <1 2>;
|
||||
};
|
||||
};
|
||||
|
||||
port@1 {
|
||||
|
|
@ -1155,6 +1180,7 @@
|
|||
reg = <1>;
|
||||
remote-endpoint = <&isp0_in>;
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -187,10 +187,10 @@
|
|||
regulator-boot-on;
|
||||
};
|
||||
|
||||
ext_cam_ov5647_clk: external-camera-ov5647-clock {
|
||||
ext_cam_clk_25m: external-camera-clock {
|
||||
compatible = "fixed-clock";
|
||||
clock-frequency = <25000000>;
|
||||
clock-output-names = "ext_cam_ov5647_clk";
|
||||
clock-output-names = "ext_cam_clk_25m";
|
||||
#clock-cells = <0>;
|
||||
};
|
||||
|
||||
|
|
@ -1068,18 +1068,35 @@
|
|||
status = "disabled";
|
||||
compatible = "ovti,ov5647";
|
||||
reg = <0x36>;
|
||||
clocks = <&ext_cam_ov5647_clk>;
|
||||
clock-names = "ext_cam_ov5647_clk";
|
||||
clocks = <&ext_cam_clk_25m>;
|
||||
clock-names = "ext_cam_clk_25m";
|
||||
pwdn-gpios = <&gpio2 RK_PC6 GPIO_ACTIVE_LOW>;
|
||||
rockchip,camera-module-index = <0>;
|
||||
rockchip,camera-module-facing = "back";
|
||||
rockchip,camera-module-name = "TongJu";
|
||||
rockchip,camera-module-lens-name = "CHT842-MD";
|
||||
//rockchip,camera-module-name = "THDS11073";
|
||||
//rockchip,camera-module-lens-name = "Largan-40122a1";
|
||||
rockchip,camera-module-name = "rpi-camera-v1";
|
||||
rockchip,camera-module-lens-name = "default";
|
||||
port {
|
||||
ov5647_out: endpoint {
|
||||
remote-endpoint = <&dphy1_in>;
|
||||
remote-endpoint = <&dphy1_in_ucam0>;
|
||||
data-lanes = <1 2>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
imx219: imx219@10 {
|
||||
status = "disabled";
|
||||
compatible = "sony,imx219";
|
||||
reg = <0x10>;
|
||||
clocks = <&ext_cam_clk_25m>;
|
||||
clock-names = "ext_cam_clk_25m";
|
||||
pwdn-gpios = <&gpio2 RK_PC6 GPIO_ACTIVE_LOW>;
|
||||
rockchip,camera-module-index = <0>;
|
||||
rockchip,camera-module-facing = "back";
|
||||
rockchip,camera-module-name = "rpi-camera-v2";
|
||||
rockchip,camera-module-lens-name = "default";
|
||||
port {
|
||||
imx219_out: endpoint {
|
||||
remote-endpoint = <&dphy1_in_ucam1>;
|
||||
data-lanes = <1 2>;
|
||||
};
|
||||
};
|
||||
|
|
@ -1116,19 +1133,37 @@
|
|||
compatible = "ovti,ov5647";
|
||||
reg = <0x36>;
|
||||
|
||||
clocks = <&ext_cam_ov5647_clk>;
|
||||
clock-names = "ext_cam_ov5647_clk";
|
||||
clocks = <&ext_cam_clk_25m>;
|
||||
clock-names = "ext_cam_clk_25m";
|
||||
pwdn-gpios = <&gpio2 RK_PC6 GPIO_ACTIVE_LOW>;
|
||||
rockchip,camera-module-index = <1>;
|
||||
rockchip,camera-module-facing = "front";
|
||||
rockchip,camera-module-name = "TongJu";
|
||||
rockchip,camera-module-lens-name = "CHT842-MD";
|
||||
//rockchip,camera-module-name = "THDS11073";
|
||||
//rockchip,camera-module-lens-name = "Largan-40122a1";
|
||||
rockchip,camera-module-facing = "back";
|
||||
rockchip,camera-module-name = "rpi-camera-v1";
|
||||
rockchip,camera-module-lens-name = "default";
|
||||
|
||||
port {
|
||||
ov5647_out1: endpoint {
|
||||
remote-endpoint = <&dphy2_in>;
|
||||
remote-endpoint = <&dphy2_in_ucam0>;
|
||||
data-lanes = <1 2>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
imx219_1: imx219@10 {
|
||||
status = "disabled";
|
||||
compatible = "sony,imx219";
|
||||
reg = <0x10>;
|
||||
clocks = <&ext_cam_clk_25m>;
|
||||
clock-names = "ext_cam_clk_25m";
|
||||
pwdn-gpios = <&gpio2 RK_PC6 GPIO_ACTIVE_LOW>;
|
||||
rockchip,camera-module-index = <1>;
|
||||
rockchip,camera-module-facing = "back";
|
||||
rockchip,camera-module-name = "rpi-camera-v2";
|
||||
rockchip,camera-module-lens-name = "default";
|
||||
|
||||
port {
|
||||
imx219_out1: endpoint {
|
||||
remote-endpoint = <&dphy2_in_ucam1>;
|
||||
data-lanes = <1 2>;
|
||||
};
|
||||
};
|
||||
|
|
@ -1173,11 +1208,17 @@
|
|||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
dphy1_in: endpoint@1 {
|
||||
reg = <1>;
|
||||
dphy1_in_ucam0: endpoint@0 {
|
||||
reg = <0>;
|
||||
remote-endpoint = <&ov5647_out>;
|
||||
data-lanes = <1 2>;
|
||||
};
|
||||
|
||||
dphy1_in_ucam1: endpoint@1 {
|
||||
reg = <1>;
|
||||
remote-endpoint = <&imx219_out>;
|
||||
data-lanes = <1 2>;
|
||||
};
|
||||
};
|
||||
|
||||
port@1 {
|
||||
|
|
@ -1209,11 +1250,17 @@
|
|||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
dphy2_in: endpoint@1 {
|
||||
reg = <1>;
|
||||
dphy2_in_ucam0: endpoint@0 {
|
||||
reg = <0>;
|
||||
remote-endpoint = <&ov5647_out1>;
|
||||
data-lanes = <1 2>;
|
||||
};
|
||||
|
||||
dphy2_in_ucam1: endpoint@1 {
|
||||
reg = <1>;
|
||||
remote-endpoint = <&imx219_out1>;
|
||||
data-lanes = <1 2>;
|
||||
};
|
||||
};
|
||||
|
||||
port@1 {
|
||||
|
|
|
|||
|
|
@ -187,10 +187,10 @@
|
|||
regulator-boot-on;
|
||||
};
|
||||
|
||||
ext_cam_ov5647_clk: external-camera-ov5647-clock {
|
||||
ext_cam_clk_25m: external-camera-clock {
|
||||
compatible = "fixed-clock";
|
||||
clock-frequency = <25000000>;
|
||||
clock-output-names = "ext_cam_ov5647_clk";
|
||||
clock-output-names = "ext_cam_clk_25m";
|
||||
#clock-cells = <0>;
|
||||
};
|
||||
|
||||
|
|
@ -1059,18 +1059,35 @@
|
|||
status = "disabled";
|
||||
compatible = "ovti,ov5647";
|
||||
reg = <0x36>;
|
||||
clocks = <&ext_cam_ov5647_clk>;
|
||||
clock-names = "ext_cam_ov5647_clk";
|
||||
clocks = <&ext_cam_clk_25m>;
|
||||
clock-names = "ext_cam_clk_25m";
|
||||
pwdn-gpios = <&gpio2 RK_PC6 GPIO_ACTIVE_LOW>;
|
||||
rockchip,camera-module-index = <0>;
|
||||
rockchip,camera-module-facing = "back";
|
||||
rockchip,camera-module-name = "TongJu";
|
||||
rockchip,camera-module-lens-name = "CHT842-MD";
|
||||
//rockchip,camera-module-name = "THDS11073";
|
||||
//rockchip,camera-module-lens-name = "Largan-40122a1";
|
||||
rockchip,camera-module-name = "rpi-camera-v1";
|
||||
rockchip,camera-module-lens-name = "default";
|
||||
port {
|
||||
ov5647_out: endpoint {
|
||||
remote-endpoint = <&dphy1_in>;
|
||||
remote-endpoint = <&dphy1_in_ucam0>;
|
||||
data-lanes = <1 2>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
imx219: imx219@10 {
|
||||
status = "disabled";
|
||||
compatible = "sony,imx219";
|
||||
reg = <0x10>;
|
||||
clocks = <&ext_cam_clk_25m>;
|
||||
clock-names = "ext_cam_clk_25m";
|
||||
pwdn-gpios = <&gpio2 RK_PC6 GPIO_ACTIVE_LOW>;
|
||||
rockchip,camera-module-index = <0>;
|
||||
rockchip,camera-module-facing = "back";
|
||||
rockchip,camera-module-name = "rpi-camera-v2";
|
||||
rockchip,camera-module-lens-name = "default";
|
||||
port {
|
||||
imx219_out: endpoint {
|
||||
remote-endpoint = <&dphy1_in_ucam1>;
|
||||
data-lanes = <1 2>;
|
||||
};
|
||||
};
|
||||
|
|
@ -1107,19 +1124,37 @@
|
|||
compatible = "ovti,ov5647";
|
||||
reg = <0x36>;
|
||||
|
||||
clocks = <&ext_cam_ov5647_clk>;
|
||||
clock-names = "ext_cam_ov5647_clk";
|
||||
clocks = <&ext_cam_clk_25m>;
|
||||
clock-names = "ext_cam_clk_25m";
|
||||
pwdn-gpios = <&gpio2 RK_PC6 GPIO_ACTIVE_LOW>;
|
||||
rockchip,camera-module-index = <1>;
|
||||
rockchip,camera-module-facing = "front";
|
||||
rockchip,camera-module-name = "TongJu";
|
||||
rockchip,camera-module-lens-name = "CHT842-MD";
|
||||
//rockchip,camera-module-name = "THDS11073";
|
||||
//rockchip,camera-module-lens-name = "Largan-40122a1";
|
||||
rockchip,camera-module-facing = "back";
|
||||
rockchip,camera-module-name = "rpi-camera-v1";
|
||||
rockchip,camera-module-lens-name = "default";
|
||||
|
||||
port {
|
||||
ov5647_out1: endpoint {
|
||||
remote-endpoint = <&dphy2_in>;
|
||||
remote-endpoint = <&dphy2_in_ucam0>;
|
||||
data-lanes = <1 2>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
imx219_1: imx219@10 {
|
||||
status = "disabled";
|
||||
compatible = "sony,imx219";
|
||||
reg = <0x10>;
|
||||
clocks = <&ext_cam_clk_25m>;
|
||||
clock-names = "ext_cam_clk_25m";
|
||||
pwdn-gpios = <&gpio2 RK_PC6 GPIO_ACTIVE_LOW>;
|
||||
rockchip,camera-module-index = <1>;
|
||||
rockchip,camera-module-facing = "back";
|
||||
rockchip,camera-module-name = "rpi-camera-v2";
|
||||
rockchip,camera-module-lens-name = "default";
|
||||
|
||||
port {
|
||||
imx219_out1: endpoint {
|
||||
remote-endpoint = <&dphy2_in_ucam1>;
|
||||
data-lanes = <1 2>;
|
||||
};
|
||||
};
|
||||
|
|
@ -1164,11 +1199,17 @@
|
|||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
dphy1_in: endpoint@1 {
|
||||
reg = <1>;
|
||||
dphy1_in_ucam0: endpoint@0 {
|
||||
reg = <0>;
|
||||
remote-endpoint = <&ov5647_out>;
|
||||
data-lanes = <1 2>;
|
||||
};
|
||||
|
||||
dphy1_in_ucam1: endpoint@1 {
|
||||
reg = <1>;
|
||||
remote-endpoint = <&imx219_out>;
|
||||
data-lanes = <1 2>;
|
||||
};
|
||||
};
|
||||
|
||||
port@1 {
|
||||
|
|
@ -1200,11 +1241,17 @@
|
|||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
dphy2_in: endpoint@1 {
|
||||
reg = <1>;
|
||||
dphy2_in_ucam0: endpoint@0 {
|
||||
reg = <0>;
|
||||
remote-endpoint = <&ov5647_out1>;
|
||||
data-lanes = <1 2>;
|
||||
};
|
||||
|
||||
dphy2_in_ucam1: endpoint@1 {
|
||||
reg = <1>;
|
||||
remote-endpoint = <&imx219_out1>;
|
||||
data-lanes = <1 2>;
|
||||
};
|
||||
};
|
||||
|
||||
port@1 {
|
||||
|
|
|
|||
|
|
@ -25,6 +25,12 @@
|
|||
remote-endpoint = <&ov13855_out1>;
|
||||
data-lanes = <1 2>;
|
||||
};
|
||||
|
||||
mipidphy1_in_ucam2: endpoint@2 {
|
||||
reg = <2>;
|
||||
remote-endpoint = <&imx586_out1>;
|
||||
data-lanes = <1 2 3 4>;
|
||||
};
|
||||
};
|
||||
port@1 {
|
||||
reg = <1>;
|
||||
|
|
@ -107,6 +113,28 @@
|
|||
};
|
||||
};
|
||||
};
|
||||
|
||||
imx586_1: imx586@1a {
|
||||
compatible = "sony,imx586";
|
||||
status = "disabled";
|
||||
reg = <0x1a>;
|
||||
clocks = <&cru CLK_MIPI_CAMARAOUT_M2>;
|
||||
clock-names = "xvclk";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&mipim1_camera2_clk>;
|
||||
reset-gpios = <&gpio3 RK_PB1 GPIO_ACTIVE_HIGH>;
|
||||
pwdn-gpios = <&gpio3 RK_PB3 GPIO_ACTIVE_HIGH>;
|
||||
rockchip,camera-module-index = <1>;
|
||||
rockchip,camera-module-facing = "back";
|
||||
rockchip,camera-module-name = "default";
|
||||
rockchip,camera-module-lens-name = "default";
|
||||
port {
|
||||
imx586_out1: endpoint {
|
||||
remote-endpoint = <&mipidphy1_in_ucam2>;
|
||||
data-lanes = <1 2 3 4>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&mipi4_csi2 {
|
||||
|
|
|
|||
|
|
@ -429,6 +429,10 @@
|
|||
};
|
||||
};
|
||||
|
||||
&av1d {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&av1d_mmu {
|
||||
status = "okay";
|
||||
};
|
||||
|
|
|
|||
|
|
@ -318,7 +318,7 @@
|
|||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
enable-active-high;
|
||||
gpio = <&gpio4 RK_PB3 GPIO_ACTIVE_HIGH>;
|
||||
gpio = <&gpio4 RK_PB1 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&vcc5v0_otg_en>;
|
||||
vin-supply = <&vcc5v0_usb>;
|
||||
|
|
@ -413,14 +413,14 @@
|
|||
status = "okay";
|
||||
|
||||
blue_led@1 {
|
||||
gpios = <&gpio0 RK_PC5 GPIO_ACTIVE_HIGH>;
|
||||
gpios = <&gpio0 RK_PC5 GPIO_ACTIVE_LOW>;
|
||||
label = "blue_led";
|
||||
linux,default-trigger = "heartbeat";
|
||||
linux,default-trigger-delay-ms = <0>;
|
||||
};
|
||||
|
||||
green_led@2 {
|
||||
gpios = <&gpio0 RK_PC6 GPIO_ACTIVE_HIGH>;
|
||||
gpios = <&gpio0 RK_PC6 GPIO_ACTIVE_LOW>;
|
||||
label = "green_led";
|
||||
linux,default-trigger = "heartbeat";
|
||||
linux,default-trigger-delay-ms = <0>;
|
||||
|
|
@ -458,6 +458,10 @@
|
|||
};
|
||||
};
|
||||
|
||||
&av1d {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&av1d_mmu {
|
||||
status = "okay";
|
||||
};
|
||||
|
|
@ -1140,7 +1144,7 @@
|
|||
|
||||
usb {
|
||||
vcc5v0_otg_en: vcc5v0-otg-en {
|
||||
rockchip,pins = <4 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
rockchip,pins = <4 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
|
||||
vcc5v0_host_en: vcc5v0-host-en {
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
/dts-v1/;
|
||||
|
||||
#include "rk3588-orangepi-5-plus.dtsi"
|
||||
#include "rk3588-orangepi-ai-max.dtsi"
|
||||
#include "rk3588-linux.dtsi"
|
||||
#include "rk3588-orangepi-5-plus-lcd.dtsi"
|
||||
#include "rk3588-orangepi-5-plus-camera1.dtsi"
|
||||
|
|
@ -51,6 +51,19 @@
|
|||
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
over-temp-shutdown@0 {
|
||||
compatible = "orangepi,over-temp-shutdown";
|
||||
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&over_temp_gpio>;
|
||||
|
||||
input-gpio = <&gpio3 RK_PB4 GPIO_ACTIVE_HIGH>;
|
||||
output1-gpio = <&gpio1 RK_PA0 GPIO_ACTIVE_HIGH>;
|
||||
output2-gpio = <&gpio1 RK_PA1 GPIO_ACTIVE_HIGH>;
|
||||
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
&sdhci {
|
||||
|
|
@ -183,6 +196,42 @@
|
|||
<3 RK_PB1 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
};
|
||||
};
|
||||
|
||||
over_temp_gpio {
|
||||
over_temp_gpio: over-temp-gpio {
|
||||
rockchip,pins = <3 RK_PB4 RK_FUNC_GPIO &pcfg_pull_down>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
status = "okay";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c1m2_xfer>;
|
||||
};
|
||||
|
||||
&i2c3 {
|
||||
status = "okay";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c3m0_xfer>;
|
||||
|
||||
bq25713: bq25713@6b {
|
||||
status = "okay";
|
||||
compatible = "ti,bq25713-aimax";
|
||||
reg = <0x6b>;
|
||||
|
||||
ti,charge-current = <2000000>;
|
||||
ti,max-input-voltage = <21000000>;
|
||||
ti,max-input-current = <3000000>;
|
||||
ti,max-charge-voltage = <12600000>;
|
||||
ti,input-current = <500000>;
|
||||
ti,input-current-sdp = <500000>;
|
||||
ti,input-current-dcp = <2000000>;
|
||||
ti,input-current-cdp = <2000000>;
|
||||
ti,minimum-sys-voltage = <7400000>;
|
||||
ti,otg-voltage = <5000000>;
|
||||
ti,otg-current = <1500000>;
|
||||
};
|
||||
};
|
||||
|
||||
/*** 40 pins ***/
|
||||
|
|
@ -321,7 +370,7 @@
|
|||
/*** 40 pins ***/
|
||||
|
||||
&hdmirx_ctrler {
|
||||
status = "disabled";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pcie30phy {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,751 @@
|
|||
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||
/*
|
||||
* Copyright (c) 2021 Rockchip Electronics Co., Ltd.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "dt-bindings/usb/pd.h"
|
||||
#include "rk3588.dtsi"
|
||||
#include "rk3588-orangepi.dtsi"
|
||||
#include "rk3588-rk806-single.dtsi"
|
||||
|
||||
/ {
|
||||
/* If hdmirx node is disabled, delete the reserved-memory node here. */
|
||||
reserved-memory {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
/* Reserve 128MB memory for hdmirx-controller@fdee0000 */
|
||||
cma {
|
||||
compatible = "shared-dma-pool";
|
||||
reusable;
|
||||
reg = <0x0 (256 * 0x100000) 0x0 (256 * 0x100000)>;
|
||||
linux,cma-default;
|
||||
};
|
||||
};
|
||||
|
||||
es8388_sound: es8388-sound {
|
||||
status = "okay";
|
||||
compatible = "rockchip,multicodecs-card";
|
||||
rockchip,card-name = "rockchip,es8388";
|
||||
hp-det-gpio = <&gpio1 RK_PD3 GPIO_ACTIVE_HIGH>;
|
||||
io-channels = <&saradc 3>;
|
||||
io-channel-names = "adc-detect";
|
||||
keyup-threshold-microvolt = <1800000>;
|
||||
poll-interval = <100>;
|
||||
spk-con-gpio = <&gpio3 RK_PC0 GPIO_ACTIVE_HIGH>;
|
||||
hp-con-gpio = <&gpio3 RK_PA7 GPIO_ACTIVE_HIGH>;
|
||||
rockchip,format = "i2s";
|
||||
rockchip,mclk-fs = <256>;
|
||||
rockchip,cpu = <&i2s0_8ch>;
|
||||
rockchip,codec = <&es8388>;
|
||||
rockchip,audio-routing =
|
||||
"Headphone", "LOUT1",
|
||||
"Headphone", "ROUT1",
|
||||
"Speaker", "LOUT2",
|
||||
"Speaker", "ROUT2",
|
||||
"Headphone", "Headphone Power",
|
||||
"Headphone", "Headphone Power",
|
||||
"Speaker", "Speaker Power",
|
||||
"Speaker", "Speaker Power",
|
||||
"LINPUT1", "Main Mic",
|
||||
"LINPUT2", "Main Mic",
|
||||
"RINPUT1", "Headset Mic",
|
||||
"RINPUT2", "Headset Mic";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&hp_det>;
|
||||
play-pause-key {
|
||||
label = "playpause";
|
||||
linux,code = <KEY_PLAYPAUSE>;
|
||||
press-threshold-microvolt = <2000>;
|
||||
};
|
||||
};
|
||||
|
||||
hdmiin-sound {
|
||||
compatible = "rockchip,hdmi";
|
||||
rockchip,mclk-fs = <128>;
|
||||
rockchip,format = "i2s";
|
||||
rockchip,bitclock-master = <&hdmirx_ctrler>;
|
||||
rockchip,frame-master = <&hdmirx_ctrler>;
|
||||
rockchip,card-name = "rockchip,hdmiin";
|
||||
rockchip,cpu = <&i2s7_8ch>;
|
||||
rockchip,codec = <&hdmirx_ctrler 0>;
|
||||
rockchip,jack-det;
|
||||
};
|
||||
|
||||
pcie20_avdd0v85: pcie20-avdd0v85 {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "pcie20_avdd0v85";
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
regulator-min-microvolt = <850000>;
|
||||
regulator-max-microvolt = <850000>;
|
||||
vin-supply = <&vdd_0v85_s0>;
|
||||
};
|
||||
|
||||
pcie20_avdd1v8: pcie20-avdd1v8 {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "pcie20_avdd1v8";
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
vin-supply = <&avcc_1v8_s0>;
|
||||
};
|
||||
|
||||
pcie30_avdd0v75: pcie30-avdd0v75 {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "pcie30_avdd0v75";
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <750000>;
|
||||
vin-supply = <&avdd_0v75_s0>;
|
||||
};
|
||||
|
||||
pcie30_avdd1v8: pcie30-avdd1v8 {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "pcie30_avdd1v8";
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
vin-supply = <&avcc_1v8_s0>;
|
||||
};
|
||||
|
||||
rk_headset: rk-headset {
|
||||
status = "disabled";
|
||||
compatible = "rockchip_headset";
|
||||
headset_gpio = <&gpio1 RK_PD3 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&hp_det>;
|
||||
io-channels = <&saradc 3>;
|
||||
};
|
||||
|
||||
vbus5v0_typec: vbus5v0-typec {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vbus5v0_typec";
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
enable-active-high;
|
||||
gpio = <&gpio4 RK_PB0 GPIO_ACTIVE_HIGH>;
|
||||
vin-supply = <&vcc5v0_usb>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&typec5v_pwren>;
|
||||
};
|
||||
|
||||
vcc3v3_pcie30: vcc3v3-pcie30 {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc3v3_pcie30";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
enable-active-high;
|
||||
gpios = <&gpio2 RK_PB6 GPIO_ACTIVE_HIGH>;
|
||||
startup-delay-us = <5000>;
|
||||
vin-supply = <&vcc5v0_sys>;
|
||||
};
|
||||
|
||||
vcc5v0_host: vcc5v0-host {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc5v0_host";
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
enable-active-high;
|
||||
gpio = <&gpio3 RK_PB7 GPIO_ACTIVE_HIGH>;
|
||||
vin-supply = <&vcc5v0_usb>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&vcc5v0_host_en>;
|
||||
};
|
||||
|
||||
vcc3v3_pcie2x1l0: vcc3v3-pcie2x1l0 {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc3v3_pcie2x1l0";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
enable-active-high;
|
||||
gpios = <&gpio2 RK_PC5 GPIO_ACTIVE_HIGH>;
|
||||
startup-delay-us = <50000>;
|
||||
vin-supply = <&vcc12v_dcin>;
|
||||
};
|
||||
|
||||
vcc_mipicsi0: vcc-mipicsi0-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc_mipicsi0";
|
||||
enable-active-high;
|
||||
};
|
||||
|
||||
vcc_mipicsi1: vcc-mipicsi1-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc_mipicsi1";
|
||||
enable-active-high;
|
||||
};
|
||||
|
||||
vcc_mipidcphy0: vcc-mipidcphy0-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc_mipicsi1";
|
||||
enable-active-high;
|
||||
};
|
||||
|
||||
wireless_bluetooth: wireless-bluetooth {
|
||||
compatible = "bluetooth-platdata";
|
||||
clocks = <&hym8563>;
|
||||
clock-names = "ext_clock";
|
||||
uart_rts_gpios = <&gpio4 RK_PC4 GPIO_ACTIVE_LOW>;
|
||||
pinctrl-names = "default", "rts_gpio";
|
||||
pinctrl-0 = <&uart9m0_rtsn>, <&bt_reset_gpio>, <&bt_wake_gpio>, <&bt_irq_gpio>;
|
||||
pinctrl-1 = <&uart9_gpios>;
|
||||
BT,reset_gpio = <&gpio0 RK_PC5 GPIO_ACTIVE_HIGH>;
|
||||
BT,wake_gpio = <&gpio4 RK_PC6 GPIO_ACTIVE_HIGH>;
|
||||
BT,wake_host_irq = <&gpio0 RK_PA0 GPIO_ACTIVE_HIGH>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
wireless_wlan: wireless-wlan {
|
||||
compatible = "wlan-platdata";
|
||||
wifi_chip_type = "ap6275p";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&wifi_host_wake_irq>;
|
||||
WIFI,host_wake_irq = <&gpio0 RK_PB0 GPIO_ACTIVE_HIGH>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
wifi_disable: wifi-diable-gpio-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "wifi_disable";
|
||||
enable-active-high;
|
||||
gpio = <&gpio0 RK_PC4 GPIO_ACTIVE_HIGH>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
};
|
||||
|
||||
&backlight {
|
||||
pwms = <&pwm2 0 25000 0>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&can2 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&combphy0_ps {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&combphy1_ps {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&combphy2_psu {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&dp0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&dp0_in_vp0 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&dp0_in_vp1 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&dp0_in_vp2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&dp0_sound{
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&spdif_tx2{
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
/*
|
||||
* mipi_dcphy0 needs to be enabled
|
||||
* when dsi0 is enabled
|
||||
*/
|
||||
&dsi0 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&dsi0_in_vp2 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&dsi0_in_vp3 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&dsi0_panel {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
/*
|
||||
* mipi_dcphy1 needs to be enabled
|
||||
* when dsi1 is enabled
|
||||
*/
|
||||
&dsi1 {
|
||||
status = "disabled";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&mipi_te1>;
|
||||
};
|
||||
|
||||
&dsi1_in_vp2 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&dsi1_in_vp3 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&dsi1_panel {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&gmac0 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&hdmi0 {
|
||||
status = "okay";
|
||||
enable-gpios = <&gpio4 RK_PB1 GPIO_ACTIVE_HIGH>;
|
||||
cec-enable = "true";
|
||||
};
|
||||
|
||||
&hdmi0_in_vp0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&hdmi0_in_vp1 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&hdmi0_in_vp2 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&hdmi0_sound {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&hdmi1 {
|
||||
status = "okay";
|
||||
enable-gpios = <&gpio4 RK_PB2 GPIO_ACTIVE_HIGH>;
|
||||
cec-enable = "true";
|
||||
};
|
||||
|
||||
&hdmi1_in_vp0 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&hdmi1_in_vp1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&hdmi1_in_vp2 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&hdmi1_sound {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
/* Should work with at least 128MB cma reserved above. */
|
||||
&hdmirx_ctrler {
|
||||
status = "disabled";
|
||||
|
||||
#sound-dai-cells = <1>;
|
||||
/* Effective level used to trigger HPD: 0-low, 1-high */
|
||||
hpd-trigger-level = <1>;
|
||||
hdmirx-det-gpios = <&gpio1 RK_PC6 GPIO_ACTIVE_LOW>;
|
||||
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&hdmim1_rx_cec &hdmim1_rx_hpdin &hdmim1_rx_scl &hdmim1_rx_sda &hdmirx_det>;
|
||||
};
|
||||
|
||||
&hdptxphy_hdmi0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&hdptxphy_hdmi1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c0 {
|
||||
status = "okay";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c0m2_xfer>;
|
||||
|
||||
vdd_cpu_big0_s0: vdd_cpu_big0_mem_s0: rk8602@42 {
|
||||
compatible = "rockchip,rk8602";
|
||||
reg = <0x42>;
|
||||
vin-supply = <&vcc5v0_sys>;
|
||||
regulator-compatible = "rk860x-reg";
|
||||
regulator-name = "vdd_cpu_big0_s0";
|
||||
regulator-min-microvolt = <550000>;
|
||||
regulator-max-microvolt = <1050000>;
|
||||
regulator-ramp-delay = <2300>;
|
||||
rockchip,suspend-voltage-selector = <1>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vdd_cpu_big1_s0: vdd_cpu_big1_mem_s0: rk8603@43 {
|
||||
compatible = "rockchip,rk8603";
|
||||
reg = <0x43>;
|
||||
vin-supply = <&vcc5v0_sys>;
|
||||
regulator-compatible = "rk860x-reg";
|
||||
regulator-name = "vdd_cpu_big1_s0";
|
||||
regulator-min-microvolt = <550000>;
|
||||
regulator-max-microvolt = <1050000>;
|
||||
regulator-ramp-delay = <2300>;
|
||||
rockchip,suspend-voltage-selector = <1>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&i2c6 {
|
||||
status = "okay";
|
||||
clock-frequency = <400000>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c6m0_xfer>;
|
||||
|
||||
usbc0: fusb302@22 {
|
||||
compatible = "fcs,fusb302";
|
||||
reg = <0x22>;
|
||||
interrupt-parent = <&gpio0>;
|
||||
interrupts = <RK_PD3 IRQ_TYPE_LEVEL_LOW>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&usbc0_int>;
|
||||
vbus-supply = <&vbus5v0_typec>;
|
||||
status = "okay";
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
usbc0_role_sw: endpoint@0 {
|
||||
remote-endpoint = <&dwc3_0_role_switch>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
usb_con: connector {
|
||||
compatible = "usb-c-connector";
|
||||
label = "USB-C";
|
||||
data-role = "dual";
|
||||
power-role = "dual";
|
||||
try-power-role = "sink";
|
||||
op-sink-microwatt = <1000000>;
|
||||
sink-pdos =
|
||||
<PDO_FIXED(5000, 1000, PDO_FIXED_USB_COMM)>;
|
||||
source-pdos =
|
||||
<PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
|
||||
|
||||
altmodes {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
altmode@0 {
|
||||
reg = <0>;
|
||||
svid = <0xff01>;
|
||||
vdo = <0xffffffff>;
|
||||
};
|
||||
};
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
usbc0_orien_sw: endpoint {
|
||||
remote-endpoint = <&usbdp_phy0_orientation_switch>;
|
||||
};
|
||||
};
|
||||
|
||||
port@1 {
|
||||
reg = <1>;
|
||||
dp_altmode_mux: endpoint {
|
||||
remote-endpoint = <&usbdp_phy0_dp_altmode_mux>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
hym8563: hym8563@51 {
|
||||
compatible = "haoyu,hym8563";
|
||||
reg = <0x51>;
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <32768>;
|
||||
clock-output-names = "hym8563";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&hym8563_int>;
|
||||
interrupt-parent = <&gpio0>;
|
||||
interrupts = <RK_PC6 IRQ_TYPE_LEVEL_LOW>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
status = "okay";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c1m2_xfer>;
|
||||
|
||||
vdd_npu_s0: vdd_npu_mem_s0: rk8602@42 {
|
||||
compatible = "rockchip,rk8602";
|
||||
reg = <0x42>;
|
||||
vin-supply = <&vcc5v0_sys>;
|
||||
regulator-compatible = "rk860x-reg";
|
||||
regulator-name = "vdd_npu_s0";
|
||||
regulator-min-microvolt = <550000>;
|
||||
regulator-max-microvolt = <950000>;
|
||||
regulator-ramp-delay = <2300>;
|
||||
rockchip,suspend-voltage-selector = <1>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&i2c7 {
|
||||
status = "okay";
|
||||
|
||||
es8388: es8388@11 {
|
||||
status = "okay";
|
||||
#sound-dai-cells = <0>;
|
||||
compatible = "everest,es8388", "everest,es8323";
|
||||
reg = <0x11>;
|
||||
clocks = <&mclkout_i2s0>;
|
||||
clock-names = "mclk";
|
||||
assigned-clocks = <&mclkout_i2s0>;
|
||||
assigned-clock-rates = <12288000>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2s0_mclk>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2s5_8ch {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2s6_8ch {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2s7_8ch {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&mdio0 {
|
||||
rgmii_phy: phy@1 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <0x1>;
|
||||
};
|
||||
};
|
||||
|
||||
&mipi_dcphy0 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&mipi_dcphy1 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
//phy1
|
||||
&pcie2x1l0 {
|
||||
reset-gpios = <&gpio4 RK_PA5 GPIO_ACTIVE_HIGH>;
|
||||
vpcie3v3-supply = <&vcc3v3_pcie2x1l0>;
|
||||
rockchip,skip-scan-in-resume;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
//phy2
|
||||
&pcie2x1l1 {
|
||||
reset-gpios = <&gpio3 RK_PB3 GPIO_ACTIVE_HIGH>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
//phy0
|
||||
&pcie2x1l2 {
|
||||
reset-gpios = <&gpio4 RK_PA2 GPIO_ACTIVE_HIGH>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pcie30phy {
|
||||
rockchip,pcie30-phymode = <PHY_MODE_PCIE_AGGREGATION>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pcie3x4 {
|
||||
reset-gpios = <&gpio4 RK_PB6 GPIO_ACTIVE_HIGH>;
|
||||
vpcie3v3-supply = <&vcc3v3_pcie30>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pinctrl {
|
||||
hdmi {
|
||||
hdmirx_det: hdmirx-det {
|
||||
rockchip,pins = <1 RK_PC6 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
};
|
||||
};
|
||||
|
||||
headphone {
|
||||
hp_det: hp-det {
|
||||
rockchip,pins = <1 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
};
|
||||
|
||||
hym8563 {
|
||||
hym8563_int: hym8563-int {
|
||||
rockchip,pins = <0 RK_PC6 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
};
|
||||
};
|
||||
|
||||
lcd {
|
||||
lcd_rst_gpio: lcd-rst-gpio {
|
||||
rockchip,pins = <2 RK_PC1 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
};
|
||||
|
||||
usb {
|
||||
vcc5v0_host_en: vcc5v0-host-en {
|
||||
rockchip,pins = <3 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
};
|
||||
|
||||
usb-typec {
|
||||
usbc0_int: usbc0-int {
|
||||
rockchip,pins = <0 RK_PD3 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
};
|
||||
|
||||
typec5v_pwren: typec5v-pwren {
|
||||
rockchip,pins = <4 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
};
|
||||
|
||||
wireless-bluetooth {
|
||||
uart9_gpios: uart9-gpios {
|
||||
rockchip,pins = <4 RK_PC4 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
|
||||
bt_reset_gpio: bt-reset-gpio {
|
||||
rockchip,pins = <0 RK_PC5 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
|
||||
bt_wake_gpio: bt-wake-gpio {
|
||||
rockchip,pins = <4 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
|
||||
bt_irq_gpio: bt-irq-gpio {
|
||||
rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_down>;
|
||||
};
|
||||
};
|
||||
|
||||
wireless-wlan {
|
||||
wifi_host_wake_irq: wifi-host-wake-irq {
|
||||
rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_down>;
|
||||
};
|
||||
};
|
||||
|
||||
sdmmc {
|
||||
sdmmc_pwr: sdmmc_pwr {
|
||||
rockchip,pins = <3 RK_PD5 RK_FUNC_GPIO &pcfg_pull_down>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&pwm2 {
|
||||
pinctrl-names = "active";
|
||||
pinctrl-0 = <&pwm2m2_pins>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&sata0 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&u2phy1_otg {
|
||||
phy-supply = <&vcc5v0_host>;
|
||||
};
|
||||
|
||||
&u2phy2_host {
|
||||
phy-supply = <&vcc5v0_host>;
|
||||
};
|
||||
|
||||
&u2phy3_host {
|
||||
phy-supply = <&vcc5v0_host>;
|
||||
};
|
||||
|
||||
&uart9 {
|
||||
status = "okay";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart9m0_xfer &uart9m0_ctsn>;
|
||||
};
|
||||
|
||||
&usbdp_phy0 {
|
||||
orientation-switch;
|
||||
svid = <0xff01>;
|
||||
sbu1-dc-gpios = <&gpio4 RK_PA6 GPIO_ACTIVE_HIGH>;
|
||||
sbu2-dc-gpios = <&gpio4 RK_PA7 GPIO_ACTIVE_HIGH>;
|
||||
|
||||
port {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
usbdp_phy0_orientation_switch: endpoint@0 {
|
||||
reg = <0>;
|
||||
remote-endpoint = <&usbc0_orien_sw>;
|
||||
};
|
||||
|
||||
usbdp_phy0_dp_altmode_mux: endpoint@1 {
|
||||
reg = <1>;
|
||||
remote-endpoint = <&dp_altmode_mux>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&usbdp_phy1 {
|
||||
rockchip,dp-lane-mux = <2 3>;
|
||||
};
|
||||
|
||||
&usbdrd_dwc3_0 {
|
||||
status = "okay";
|
||||
dr_mode = "otg";
|
||||
usb-role-switch;
|
||||
port {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
dwc3_0_role_switch: endpoint@0 {
|
||||
reg = <0>;
|
||||
remote-endpoint = <&usbc0_role_sw>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&usbhost3_0 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&usbhost_dwc3_0 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
|
@ -223,6 +223,10 @@
|
|||
};
|
||||
};
|
||||
|
||||
&av1d {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&av1d_mmu {
|
||||
status = "okay";
|
||||
};
|
||||
|
|
|
|||
|
|
@ -325,6 +325,10 @@
|
|||
};
|
||||
};
|
||||
|
||||
&av1d {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&av1d_mmu {
|
||||
status = "okay";
|
||||
};
|
||||
|
|
|
|||
|
|
@ -306,6 +306,10 @@
|
|||
};
|
||||
};
|
||||
|
||||
&av1d {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&av1d_mmu {
|
||||
status = "okay";
|
||||
};
|
||||
|
|
|
|||
|
|
@ -498,6 +498,14 @@ config HISI_HIKEY_USB
|
|||
switching between the dual-role USB-C port and the USB-A host ports
|
||||
using only one USB controller.
|
||||
|
||||
config OVER_TEMP_SHUTDOWN
|
||||
tristate "Orange Pi Ai MAX over temp shutdown"
|
||||
depends on (OF && GPIOLIB)
|
||||
help
|
||||
If you are using Opiaimax, please enable this configuration. It will
|
||||
turn off the power to the two 310B units when the temperature
|
||||
reaches 105 degrees.
|
||||
|
||||
source "drivers/misc/c2port/Kconfig"
|
||||
source "drivers/misc/eeprom/Kconfig"
|
||||
source "drivers/misc/cb710/Kconfig"
|
||||
|
|
|
|||
|
|
@ -62,3 +62,4 @@ obj-$(CONFIG_UACCE) += uacce/
|
|||
obj-$(CONFIG_XILINX_SDFEC) += xilinx_sdfec.o
|
||||
obj-$(CONFIG_HISI_HIKEY_USB) += hisi_hikey_usb.o
|
||||
obj-$(CONFIG_UID_SYS_STATS) += uid_sys_stats.o
|
||||
obj-$(CONFIG_OVER_TEMP_SHUTDOWN) += over_temp_shutdown.o
|
||||
|
|
|
|||
|
|
@ -0,0 +1,93 @@
|
|||
#include <linux/module.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/gpio/consumer.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_gpio.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
static struct gpio_desc *gpio_input;
|
||||
static struct gpio_desc *gpio_output1;
|
||||
static struct gpio_desc *gpio_output2;
|
||||
static int irq_number;
|
||||
|
||||
static irqreturn_t gpio_irq_handler(int irq, void *dev_id)
|
||||
{
|
||||
gpiod_set_value(gpio_output1, 0);
|
||||
gpiod_set_value(gpio_output2, 0);
|
||||
|
||||
printk(KERN_INFO "GPIO Interrupt: Over temp triggered, setting GPIO %d and %d to low to close 310B.\n",
|
||||
desc_to_gpio(gpio_output1), desc_to_gpio(gpio_output2));
|
||||
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
static int over_temp_shutdown_probe(struct platform_device *pdev)
|
||||
{
|
||||
int ret;
|
||||
|
||||
gpio_input = devm_gpiod_get_optional(&pdev->dev, "input", GPIOD_IN);
|
||||
if (IS_ERR(gpio_input)) {
|
||||
printk(KERN_ALERT "Failed to get GPIO input\n");
|
||||
return PTR_ERR(gpio_input);
|
||||
}
|
||||
|
||||
gpio_output1 = devm_gpiod_get_optional(&pdev->dev, "output1", GPIOD_OUT_HIGH);
|
||||
if (IS_ERR(gpio_output1)) {
|
||||
printk(KERN_ALERT "Failed to get GPIO output1\n");
|
||||
return PTR_ERR(gpio_output1);
|
||||
}
|
||||
|
||||
gpio_output2 = devm_gpiod_get_optional(&pdev->dev, "output2", GPIOD_OUT_HIGH);
|
||||
if (IS_ERR(gpio_output2)) {
|
||||
printk(KERN_ALERT "Failed to get GPIO output2\n");
|
||||
return PTR_ERR(gpio_output2);
|
||||
}
|
||||
|
||||
if (gpio_input) {
|
||||
irq_number = gpiod_to_irq(gpio_input);
|
||||
if (irq_number < 0) {
|
||||
printk(KERN_ALERT "Failed to get IRQ number for GPIO input\n");
|
||||
return irq_number;
|
||||
}
|
||||
|
||||
ret = request_irq(irq_number, gpio_irq_handler, IRQF_TRIGGER_RISING, "over_temp_irq_handler", NULL);
|
||||
if (ret < 0) {
|
||||
printk(KERN_ALERT "Failed to request IRQ %d\n", irq_number);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int over_temp_shutdown_remove(struct platform_device *pdev)
|
||||
{
|
||||
if (gpio_input) {
|
||||
free_irq(irq_number, NULL);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct of_device_id over_temp_shutdown_of_match[] = {
|
||||
{ .compatible = "orangepi,over-temp-shutdown", },
|
||||
{ /* sentinel */ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, over_temp_shutdown_of_match);
|
||||
|
||||
static struct platform_driver over_temp_shutdown_driver = {
|
||||
.probe = over_temp_shutdown_probe,
|
||||
.remove = over_temp_shutdown_remove,
|
||||
.driver = {
|
||||
.name = "over_temp_shutdown-device",
|
||||
.of_match_table = over_temp_shutdown_of_match,
|
||||
.owner = THIS_MODULE,
|
||||
},
|
||||
};
|
||||
|
||||
module_platform_driver(over_temp_shutdown_driver);
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_AUTHOR("Orange Pi");
|
||||
MODULE_DESCRIPTION("opiaimax over temp shutdown");
|
||||
|
|
@ -1,5 +1,24 @@
|
|||
#
|
||||
# Copyright (C) 2023, Broadcom.
|
||||
# Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
#
|
||||
# This software is licensed to you under the terms of the
|
||||
# GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
#
|
||||
# INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
# EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
# AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
# IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
# SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
# WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
# AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
# NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
# THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
# DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
# SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
# EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
#
|
||||
# Copyright (C) 2024, Broadcom.
|
||||
#
|
||||
# Unless you and Broadcom execute a separate written software license
|
||||
# agreement governing use of this software, this software is licensed to you
|
||||
|
|
|
|||
|
|
@ -1,6 +1,25 @@
|
|||
# bcmdhd
|
||||
#
|
||||
# Copyright (C) 2023, Broadcom.
|
||||
# Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
#
|
||||
# This software is licensed to you under the terms of the
|
||||
# GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
#
|
||||
# INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
# EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
# AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
# IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
# SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
# WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
# AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
# NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
# THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
# DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
# SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
# EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
#
|
||||
# Copyright (C) 2024, Broadcom.
|
||||
#
|
||||
# Unless you and Broadcom execute a separate written software license
|
||||
# agreement governing use of this software, this software is licensed to you
|
||||
|
|
@ -31,7 +50,6 @@ CONFIG_BCMDHD_OOB := y
|
|||
#CONFIG_BCMDHD_CUSB := y
|
||||
#CONFIG_BCMDHD_NO_POWER_OFF := y
|
||||
CONFIG_BCMDHD_PROPTXSTATUS := y
|
||||
CONFIG_BCMDHD_AG := y
|
||||
CONFIG_DHD_USE_STATIC_BUF := y
|
||||
CONFIG_BCMDHD_STATIC_BUF_IN_DHD := y
|
||||
CONFIG_BCMDHD_ANDROID_VERSION := 14
|
||||
|
|
@ -62,7 +80,7 @@ DHDCFLAGS = -Wall -Wstrict-prototypes -Wno-date-time -Wno-strict-prototypes \
|
|||
-DKEEP_ALIVE -DPKT_FILTER_SUPPORT -DDHDTCPACK_SUPPRESS \
|
||||
-DDHD_DONOT_FORWARD_BCMEVENT_AS_NETWORK_PKT -DOEM_ANDROID \
|
||||
-DMULTIPLE_SUPPLICANT -DTSQ_MULTIPLIER -DMFP -DDHD_8021X_DUMP \
|
||||
-DPOWERUP_MAX_RETRY=0 -DIFACE_HANG_FORCE_DEV_CLOSE -DWAIT_DEQUEUE \
|
||||
-DPOWERUP_MAX_RETRY=1 -DIFACE_HANG_FORCE_DEV_CLOSE -DWAIT_DEQUEUE \
|
||||
-DUSE_NEW_RSPEC_DEFS \
|
||||
-DWL_EXT_IAPSTA -DWL_ESCAN -DCCODE_LIST -DSUSPEND_EVENT \
|
||||
-DKEY_INSTALL_CHECK \
|
||||
|
|
@ -90,7 +108,11 @@ ifneq ($(CONFIG_CFG80211),)
|
|||
DHDOFILES += dhd_cfg80211.o wl_cfgvif.o wl_roam.o
|
||||
DHDCFLAGS += -DWL_CFG80211 -DWLP2P -DWL_CFG80211_STA_EVENT
|
||||
DHDCFLAGS += -DWL_CFG80211_GON_COLLISION
|
||||
DHDCFLAGS += -DWL_CAP_HE -DWL_6G_BAND -DWL_5P9G
|
||||
# DHDCFLAGS += -DCFG80211_INFO_CHANDEF
|
||||
# DHDCFLAGS += -DAP_P2P_CONCURRENT
|
||||
DHDCFLAGS += -DCONFIG_CFG80211_INTERNAL_REGDB #-DEXT_REG_INFO
|
||||
DHDCFLAGS += -DWL_CAP_HE -DWL_6G_BAND -DWL_5P9G -DWL_P2P_6G
|
||||
DHDCFLAGS += -DWL11U
|
||||
# DHDCFLAGS += -DCONFIG_6GHZ_BKPORT
|
||||
DHDCFLAGS += -DWL_IFACE_COMB_NUM_CHANNELS
|
||||
DHDCFLAGS += -DCUSTOM_PNO_EVENT_LOCK_xTIME=10
|
||||
|
|
@ -100,20 +122,23 @@ ifneq ($(CONFIG_CFG80211),)
|
|||
DHDCFLAGS += -DVSDB -DWL_CFG80211_VSDB_PRIORITIZE_SCAN_REQUEST
|
||||
DHDCFLAGS += -DWLTDLS -DMIRACAST_AMPDU_SIZE=8
|
||||
# DHDCFLAGS += -DHOSTAPD_BW_SUPPORT
|
||||
DHDCFLAGS += -DWL_VIRTUAL_APSTA -DSTA_MGMT -DSOFTAP_UAPSD_OFF
|
||||
DHDCFLAGS += -DWL_SOFTAP_ACS
|
||||
DHDCFLAGS += -DWL_VIRTUAL_APSTA -DSOFTAP_UAPSD_OFF #-DSTA_MGMT
|
||||
DHDCFLAGS += -DWL_SOFTAP_ACS #-DACS_MONITOR
|
||||
DHDCFLAGS += -DNUM_SCB_MAX_PROBE=3
|
||||
DHDCFLAGS += -DWL_SCB_TIMEOUT=10
|
||||
# DHDCFLAGS += -DWL_BEACON_RATE
|
||||
DHDCFLAGS += -DEXPLICIT_DISCIF_CLEANUP
|
||||
DHDCFLAGS += -DDHD_USE_SCAN_WAKELOCK
|
||||
DHDCFLAGS += -DDHD_USE_SCAN_WAKELOCK #DHD_DEBUG_SCAN_WAKELOCK
|
||||
DHDCFLAGS += -DSPECIFIC_MAC_GEN_SCHEME
|
||||
DHDCFLAGS += -DWL_IFACE_MGMT
|
||||
DHDCFLAGS += -DSUPPORT_RSSI_SUM_REPORT
|
||||
DHDCFLAGS += -DWLFBT -DWL_GCMP_SUPPORT -DWL_OWE -DWL_SAE_FT
|
||||
DHDCFLAGS += -DROAM_CHANNEL_CACHE -DDHD_LOSSLESS_ROAMING
|
||||
# DHDCFLAGS += -DWL_SKIP_CONNECT_HINTS
|
||||
# DHDCFLAGS += -DWL_CFGVENDOR_SEND_HANG_EVENT
|
||||
DHDCFLAGS += -DGTK_OFFLOAD_SUPPORT
|
||||
# DHDCFLAGS += -DWL_STATIC_IF #-DDHD_MAX_STATIC_IFS=2
|
||||
# DHDCFLAGS += -DWL_STATIC_IFNAME_PREFIX=\"sap%d\"
|
||||
DHDCFLAGS += -DWL_CLIENT_SAE
|
||||
DHDCFLAGS += -DCONNECT_INFO_WAR -DWL_ROAM_WAR
|
||||
DHDCFLAGS += -DVNDR_IE_WAR
|
||||
|
|
@ -125,11 +150,12 @@ ifneq ($(CONFIG_BCMDHD_SDIO),)
|
|||
BUS_TYPE := sdio
|
||||
DHDCFLAGS += -DBCMSDIO -DMMC_SDIO_ABORT -DUSE_SDIOFIFO_IOVAR -DBCMLXSDMMC \
|
||||
-DSDTEST -DBDC -DDHD_USE_IDLECOUNT -DCUSTOM_SDIO_F2_BLKSIZE=256 \
|
||||
-DBCMSDIOH_TXGLOM -DBCMSDIOH_TXGLOM_EXT -DBCMSDIOH_STATIC_COPY_BUF \
|
||||
-DBCMSDIOH_TXGLOM -DDHD_SI_WD_RESET -DBCMSDIOH_STATIC_COPY_BUF \
|
||||
-DRXFRAME_THREAD -DDHDENABLE_TAILPAD -DSUPPORT_P2P_GO_PS \
|
||||
-DBCMSDIO_RXLIM_POST -DBCMSDIO_TXSEQ_SYNC -DCONSOLE_DPC \
|
||||
-DBCMSDIO_INTSTATUS_WAR
|
||||
DHDCFLAGS += -DMMC_HW_RESET #-DMMC_SW_RESET #-DBUS_POWER_RESTORE
|
||||
#DHDCFLAGS += -DDEVICE_PM_CALLBACK
|
||||
ifeq ($(CONFIG_BCMDHD_OOB),y)
|
||||
DHDCFLAGS += -DOOB_INTR_ONLY -DCUSTOMER_OOB -DHW_OOB
|
||||
ifeq ($(CONFIG_BCMDHD_DISABLE_WOWLAN),y)
|
||||
|
|
@ -150,6 +176,7 @@ BUS_TYPE := pcie
|
|||
DHDCFLAGS += -DDHD_LB -DDHD_LB_RXP -DDHD_LB_STATS -DDHD_LB_TXP
|
||||
DHDCFLAGS += -DDHD_LB_PRIMARY_CPUS=0xF0 -DDHD_LB_SECONDARY_CPUS=0x0E
|
||||
# DHDCFLAGS += -DDHD_PKTID_AUDIT_ENABLED
|
||||
DHDCFLAGS += -DBCMPCIE_CTO_PREVENTION
|
||||
DHDCFLAGS += -DEAPOL_PKT_PRIO -DENABLE_DHD_GRO
|
||||
DHDCFLAGS += -DDHD_SKIP_DONGLE_RESET_IN_ATTACH
|
||||
DHDCFLAGS += -DDHD_DONGLE_TRAP_IN_DETACH
|
||||
|
|
@ -250,14 +277,16 @@ ifneq ($(CONFIG_CFG80211),)
|
|||
DHDCFLAGS += -DGSCAN_SUPPORT -DRTT_SUPPORT
|
||||
DHDCFLAGS += -DLINKSTAT_SUPPORT -DLINKSTAT_EXT_SUPPORT
|
||||
DHDCFLAGS += -DCUSTOM_COUNTRY_CODE -DDHD_GET_VALID_CHANNELS
|
||||
DHDCFLAGS += -DDEBUGABILITY -DDEBUGABILITY_DISABLE_MEMDUMP -DDBG_PKT_MON
|
||||
DHDCFLAGS += -DDEBUGABILITY -DDBG_PKT_MON -DDEBUGABILITY_DISABLE_MEMDUMP
|
||||
DHDCFLAGS += -DDHD_LOG_DUMP -DDHD_FW_COREDUMP
|
||||
# DHDCFLAGS += -DDHD_PKT_LOGGING_DBGRING
|
||||
DHDCFLAGS += -DWIFI_TURNON_USE_HALINIT
|
||||
DHDCFLAGS += -DDHD_PKT_LOGGING_DBGRING -DDHD_PKT_LOGGING
|
||||
DHDCFLAGS += -DAPF -DNDO_CONFIG_SUPPORT -DRSSI_MONITOR_SUPPORT
|
||||
DHDCFLAGS += -DDHD_WAKE_STATUS
|
||||
DHDCFLAGS += -DWL_LATENCY_MODE
|
||||
DHDCFLAGS += -DWL_LATENCY_MODE -DWL_USABLE_CHAN -DWL_SAR_TX_POWER
|
||||
DHDOFILES += dhd_rtt.o
|
||||
DHDOFILES += dhd_log_dump.o
|
||||
DHDOFILES += dhd_pktlog.o
|
||||
endif
|
||||
else
|
||||
DHDCFLAGS += -DANDROID_VERSION=0
|
||||
|
|
@ -321,7 +350,7 @@ ifneq ($(CONFIG_CFG80211),)
|
|||
ifneq ($(CONFIG_BCMDHD_SDIO),)
|
||||
DHDCFLAGS += -DRXF_DEQUEUE_ON_BUSY
|
||||
endif
|
||||
#DHDCFLAGS += -DWL_STATIC_IF
|
||||
DHDCFLAGS += -DWL_STATIC_IF
|
||||
endif
|
||||
endif
|
||||
|
||||
|
|
@ -364,10 +393,8 @@ endif
|
|||
# For WAPI
|
||||
ifeq ($(CONFIG_BCMDHD_WAPI),y)
|
||||
DHDCFLAGS += -DBCMWAPI_WPI -DBCMWAPI_WAI
|
||||
ifeq ($(CONFIG_BCMDHD_ANDROID_VERSION),11)
|
||||
DHDCFLAGS += -DCFG80211_WAPI_BKPORT
|
||||
endif
|
||||
endif
|
||||
|
||||
# For scan random mac
|
||||
ifneq ($(CONFIG_BCMDHD_RANDOM_MAC),)
|
||||
|
|
@ -410,12 +437,13 @@ ifeq ($(CONFIG_BCMDHD_DTS),y)
|
|||
endif
|
||||
DHDCFLAGS += -DCUSTOMER_HW -DDHD_OF_SUPPORT
|
||||
DHDCFLAGS += -DCUSTOMER_HW_ROCKCHIP
|
||||
# DHDCFLAGS += -DCUSTOMER_HW_ROCKCHIP_RK3588
|
||||
DHDCFLAGS += -DBLOCK_IPV6_PACKET
|
||||
DHDCFLAGS += -DBCM_USE_PLATFORM_STRLCPY
|
||||
# DHDCFLAGS += -DGET_CUSTOM_MAC_ENABLE
|
||||
endif
|
||||
|
||||
ifneq ($(CONFIG_BCMDHD_PCIE),)
|
||||
ifneq ($(filter -DCUSTOMER_HW_ROCKCHIP_RK3588, $(DHDCFLAGS)),)
|
||||
ifeq ($(CONFIG_PCIEASPM_ROCKCHIP_WIFI_EXTENSION),y)
|
||||
DHDCFLAGS += -DDHD_CONTROL_PCIE_ASPM_WIFI_TURNON
|
||||
endif
|
||||
endif
|
||||
|
|
@ -442,10 +470,6 @@ ifeq ($(CONFIG_BCMDHD_FW_SIGNATURE),y)
|
|||
DHDCFLAGS += -DBL_HEAP_START_GAP_SIZE=0x1000 -DBL_HEAP_SIZE=0x10000
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_BCMDHD_AG),y)
|
||||
DHDCFLAGS += -DBAND_AG
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_DHD_USE_STATIC_BUF),y)
|
||||
ifeq ($(CONFIG_BCMDHD_STATIC_BUF_IN_DHD),y)
|
||||
DHDOFILES += dhd_static_buf.o
|
||||
|
|
|
|||
|
|
@ -2,7 +2,26 @@
|
|||
* Misc utility routines for accessing chip-specific features
|
||||
* of the SiliconBackplane-based Broadcom chips.
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
@ -1238,8 +1257,8 @@ ai_core_disable(const si_t *sih, uint32 bits)
|
|||
* bits - core specific bits that are set during and after reset sequence
|
||||
* resetbits - core specific bits that are set only during reset sequence
|
||||
*/
|
||||
static void
|
||||
BCMPOSTTRAPFN(_ai_core_reset)(const si_t *sih, uint32 bits, uint32 resetbits)
|
||||
static bool
|
||||
_ai_core_reset(const si_t *sih, uint32 bits, uint32 resetbits)
|
||||
{
|
||||
const si_info_t *sii = SI_INFO(sih);
|
||||
aidmp_t *ai;
|
||||
|
|
@ -1249,6 +1268,12 @@ BCMPOSTTRAPFN(_ai_core_reset)(const si_t *sih, uint32 bits, uint32 resetbits)
|
|||
ASSERT(GOODREGS(sii->curwrap));
|
||||
ai = sii->curwrap;
|
||||
|
||||
if (R_REG(sii->osh, &ai->resetstatus) == 0xffffffff &&
|
||||
R_REG(sii->osh, &ai->ioctrl) == 0xffffffff &&
|
||||
R_REG(sii->osh, &ai->resetctrl) == 0xffffffff) {
|
||||
SI_ERROR(("%s: fail, resetstatus&ioctrl&resetctrl is 0xffffffff\n", __func__));
|
||||
return FALSE;
|
||||
}
|
||||
/* ensure there are no pending backplane operations */
|
||||
SPINWAIT(((dummy = R_REG(sii->osh, &ai->resetstatus)) != 0), 300);
|
||||
|
||||
|
|
@ -1258,6 +1283,12 @@ BCMPOSTTRAPFN(_ai_core_reset)(const si_t *sih, uint32 bits, uint32 resetbits)
|
|||
}
|
||||
#endif /* BCMDBG_ERR */
|
||||
|
||||
SI_ERROR(("%s: &ai->ioctrl = 0x%x, &ai->resetctrl = 0x%x, &ai->resetstatus = 0x%x\n",
|
||||
__func__,
|
||||
R_REG(sii->osh, &ai->ioctrl),
|
||||
R_REG(sii->osh, &ai->resetctrl),
|
||||
R_REG(sii->osh, &ai->resetstatus)));
|
||||
|
||||
/* put core into reset state */
|
||||
W_REG(sii->osh, &ai->resetctrl, AIRC_RESET);
|
||||
OSL_DELAY(10);
|
||||
|
|
@ -1322,28 +1353,31 @@ BCMPOSTTRAPFN(_ai_core_reset)(const si_t *sih, uint32 bits, uint32 resetbits)
|
|||
}
|
||||
#endif /* UCM_CORRUPTION_WAR */
|
||||
OSL_DELAY(1);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void
|
||||
BCMPOSTTRAPFN(ai_core_reset)(si_t *sih, uint32 bits, uint32 resetbits)
|
||||
bool
|
||||
ai_core_reset(si_t *sih, uint32 bits, uint32 resetbits)
|
||||
{
|
||||
si_info_t *sii = SI_INFO(sih);
|
||||
const si_cores_info_t *cores_info = (const si_cores_info_t *)sii->cores_info;
|
||||
uint idx = sii->curidx;
|
||||
bool ret = TRUE;
|
||||
|
||||
if (cores_info->wrapba3[idx] != 0) {
|
||||
ai_setcoreidx_3rdwrap(sih, idx);
|
||||
_ai_core_reset(sih, bits, resetbits);
|
||||
ret = _ai_core_reset(sih, bits, resetbits);
|
||||
ai_setcoreidx(sih, idx);
|
||||
}
|
||||
|
||||
if (cores_info->wrapba2[idx] != 0) {
|
||||
ai_setcoreidx_2ndwrap(sih, idx);
|
||||
_ai_core_reset(sih, bits, resetbits);
|
||||
ret = _ai_core_reset(sih, bits, resetbits);
|
||||
ai_setcoreidx(sih, idx);
|
||||
}
|
||||
|
||||
_ai_core_reset(sih, bits, resetbits);
|
||||
ret = _ai_core_reset(sih, bits, resetbits);
|
||||
return ret;
|
||||
}
|
||||
|
||||
#ifdef BOOKER_NIC400_INF
|
||||
|
|
|
|||
|
|
@ -3,7 +3,26 @@
|
|||
* Contents are wifi-specific, used by any kernel or app-level
|
||||
* software that might want wifi things as it grows.
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
|
|||
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* Bloom filter support
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
|
|||
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* bcmevent read-only data shared by kernel or app layers
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
|
|||
|
|
@ -2,7 +2,26 @@
|
|||
* BCMSDH interface glue
|
||||
* implement bcmsdh API for SDIOH driver
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
@ -933,6 +952,7 @@ uint
|
|||
bcmsdh_set_mode(void *sdh, uint mode)
|
||||
{
|
||||
bcmsdh_info_t *bcmsdh = (bcmsdh_info_t *)sdh;
|
||||
|
||||
return (sdioh_set_mode(bcmsdh->sdioh, mode));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* SDIO access interface for drivers - linux specific (pci only)
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
@ -283,6 +302,26 @@ int bcmsdh_resume(bcmsdh_info_t *bcmsdh)
|
|||
return 0;
|
||||
}
|
||||
|
||||
#ifdef DEVICE_PM_CALLBACK
|
||||
int bcmsdh_prepare(bcmsdh_info_t *bcmsdh)
|
||||
{
|
||||
bcmsdh_os_info_t *bcmsdh_osinfo = bcmsdh->os_cxt;
|
||||
|
||||
if (drvinfo.prepare && drvinfo.prepare(bcmsdh_osinfo->context))
|
||||
return -EBUSY;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int bcmsdh_complete(bcmsdh_info_t *bcmsdh)
|
||||
{
|
||||
bcmsdh_os_info_t *bcmsdh_osinfo = bcmsdh->os_cxt;
|
||||
|
||||
if (drvinfo.complete)
|
||||
return drvinfo.complete(bcmsdh_osinfo->context);
|
||||
return 0;
|
||||
}
|
||||
#endif /* DEVICE_PM_CALLBACK */
|
||||
|
||||
extern int bcmsdh_register_client_driver(void);
|
||||
extern void bcmsdh_unregister_client_driver(void);
|
||||
extern int sdio_func_reg_notify(void* semaphore);
|
||||
|
|
@ -308,8 +347,11 @@ bcmsdh_register(bcmsdh_driver_t *driver)
|
|||
drvinfo = *driver;
|
||||
SDLX_MSG(("%s: register client driver\n", __FUNCTION__));
|
||||
error = bcmsdh_register_client_driver();
|
||||
if (error)
|
||||
SDLX_ERR(("%s: failed %d\n", __FUNCTION__, error));
|
||||
if (error) {
|
||||
SDLX_MSG(("%s: failed %d\n", __FUNCTION__, error));
|
||||
bcmsdh_unregister_client_driver();
|
||||
memset(&drvinfo, 0, sizeof(drvinfo));
|
||||
}
|
||||
|
||||
return error;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* BCMSDH Function Driver for the native SDIO/MMC driver in the Linux Kernel
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
@ -83,13 +102,13 @@ static void IRQHandlerF2(struct sdio_func *func);
|
|||
#endif /* !defined(OOB_INTR_ONLY) */
|
||||
static int sdioh_sdmmc_get_cisaddr(sdioh_info_t *sd, uint32 regaddr);
|
||||
#if defined(ENABLE_INSMOD_NO_FW_LOAD)
|
||||
#if defined(MMC_SW_RESET) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 18, 0)
|
||||
#if defined(MMC_SW_RESET) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0)
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 19, 0)
|
||||
extern int mmc_sw_reset(struct mmc_card *card);
|
||||
#else
|
||||
extern int mmc_sw_reset(struct mmc_host *host);
|
||||
#endif
|
||||
#elif defined(MMC_HW_RESET) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0)
|
||||
#elif defined(MMC_HW_RESET) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0)
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0)
|
||||
extern int mmc_hw_reset(struct mmc_card *card);
|
||||
#else
|
||||
|
|
@ -312,9 +331,6 @@ sdioh_attach(osl_t *osh, struct sdio_func *func)
|
|||
}
|
||||
|
||||
sdio_claim_host(sd->func[2]);
|
||||
if ((func->device == BCM43362_CHIP_ID || func->device == BCM4330_CHIP_ID) &&
|
||||
sd_f2_blocksize > 128)
|
||||
sd_f2_blocksize = 128;
|
||||
sd->client_block_size[2] = sd_f2_blocksize;
|
||||
printf("%s: set sd_f2_blocksize %d\n", __FUNCTION__, sd_f2_blocksize);
|
||||
err_ret = sdio_set_block_size(sd->func[2], sd_f2_blocksize);
|
||||
|
|
@ -1150,17 +1166,6 @@ sdioh_request_byte(sdioh_info_t *sd, uint rw, uint func, uint regaddr, uint8 *by
|
|||
return ((err_ret == 0) ? SDIOH_API_RC_SUCCESS : SDIOH_API_RC_FAIL);
|
||||
}
|
||||
|
||||
uint
|
||||
sdioh_set_mode(sdioh_info_t *sd, uint mode)
|
||||
{
|
||||
if (mode == SDPCM_TXGLOM_CPY)
|
||||
sd->txglom_mode = mode;
|
||||
else if (mode == SDPCM_TXGLOM_MDESC)
|
||||
sd->txglom_mode = mode;
|
||||
|
||||
return (sd->txglom_mode);
|
||||
}
|
||||
|
||||
#ifdef PKT_STATICS
|
||||
uint32
|
||||
sdioh_get_spend_time(sdioh_info_t *sd)
|
||||
|
|
@ -1262,7 +1267,7 @@ sdioh_request_packet_chain(sdioh_info_t *sd, uint fix_inc, uint write, uint func
|
|||
bool fifo = (fix_inc == SDIOH_DATA_FIX);
|
||||
int err_ret = 0;
|
||||
void *pnext;
|
||||
uint ttl_len, pkt_offset;
|
||||
uint ttl_len = 0, pkt_offset;
|
||||
uint blk_num;
|
||||
uint blk_size;
|
||||
uint max_blk_count;
|
||||
|
|
@ -1270,7 +1275,7 @@ sdioh_request_packet_chain(sdioh_info_t *sd, uint fix_inc, uint write, uint func
|
|||
struct mmc_request mmc_req;
|
||||
struct mmc_command mmc_cmd;
|
||||
struct mmc_data mmc_dat;
|
||||
uint32 sg_count;
|
||||
uint32 sg_count = 0;
|
||||
struct sdio_func *sdio_func = sd->func[func];
|
||||
struct mmc_host *host = sdio_func->card->host;
|
||||
uint8 *localbuf = NULL;
|
||||
|
|
@ -1791,7 +1796,7 @@ static int sdio_sw_reset(sdioh_info_t *sd)
|
|||
struct mmc_card *card = sd->func[0]->card;
|
||||
int err = 0;
|
||||
|
||||
#if defined(MMC_SW_RESET) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 18, 0)
|
||||
#if defined(MMC_SW_RESET) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0)
|
||||
/* MMC_SW_RESET */
|
||||
printf("%s: call mmc_sw_reset\n", __FUNCTION__);
|
||||
sdio_claim_host(sd->func[0]);
|
||||
|
|
@ -1801,7 +1806,7 @@ static int sdio_sw_reset(sdioh_info_t *sd)
|
|||
err = mmc_sw_reset(card->host);
|
||||
#endif
|
||||
sdio_release_host(sd->func[0]);
|
||||
#elif defined(MMC_HW_RESET) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0)
|
||||
#elif defined(MMC_HW_RESET) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0)
|
||||
/* MMC_HW_RESET */
|
||||
printf("%s: call mmc_hw_reset\n", __FUNCTION__);
|
||||
sdio_claim_host(sd->func[0]);
|
||||
|
|
@ -1822,6 +1827,7 @@ LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 32) && LINUX_VERSION_CODE < KERNEL_VE
|
|||
mmc_power_restore_host(card->host);
|
||||
#else
|
||||
/* sdio_reset_comm */
|
||||
printf("%s: call sdio_reset_comm\n", __FUNCTION__);
|
||||
err = sdio_reset_comm(card);
|
||||
#endif
|
||||
|
||||
|
|
@ -1836,7 +1842,7 @@ int
|
|||
sdioh_start(sdioh_info_t *sd, int stage)
|
||||
{
|
||||
#if defined(OEM_ANDROID)
|
||||
int ret;
|
||||
int ret = 0;
|
||||
|
||||
if (!sd) {
|
||||
sd_err(("%s Failed, sd is NULL\n", __FUNCTION__));
|
||||
|
|
@ -1922,7 +1928,7 @@ sdioh_start(sdioh_info_t *sd, int stage)
|
|||
sd_err(("%s Failed\n", __FUNCTION__));
|
||||
#endif /* defined(OEM_ANDROID) */
|
||||
|
||||
return (0);
|
||||
return (ret);
|
||||
}
|
||||
|
||||
int
|
||||
|
|
@ -2077,3 +2083,14 @@ sdmmc_set_clock_divisor(sdioh_info_t *sd, uint sd_div)
|
|||
hz = sd->sd_clk_rate / sd_div;
|
||||
sdmmc_set_clock_rate(sd, hz);
|
||||
}
|
||||
|
||||
uint
|
||||
sdioh_set_mode(sdioh_info_t *sd, uint mode)
|
||||
{
|
||||
if (mode == SDPCM_TXGLOM_CPY)
|
||||
sd->txglom_mode = mode;
|
||||
else if (mode == SDPCM_TXGLOM_MDESC)
|
||||
sd->txglom_mode = mode;
|
||||
|
||||
return (sd->txglom_mode);
|
||||
}
|
||||
|
|
|
|||
102
drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/bcmsdh_sdmmc_linux.c
Normal file → Executable file
102
drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/bcmsdh_sdmmc_linux.c
Normal file → Executable file
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* BCMSDH Function Driver for the native SDIO/MMC driver in the Linux Kernel
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
@ -45,6 +64,10 @@
|
|||
#define SDIO_VENDOR_ID_BROADCOM 0x02d0
|
||||
#endif /* !defined(SDIO_VENDOR_ID_BROADCOM) */
|
||||
|
||||
#if !defined(SDIO_VENDOR_ID_SYNAPTICS)
|
||||
#define SDIO_VENDOR_ID_SYNAPTICS 0x06cb
|
||||
#endif /* !defined(SDIO_VENDOR_ID_SYNAPTICS) */
|
||||
|
||||
#define SDIO_DEVICE_ID_BROADCOM_DEFAULT 0x0000
|
||||
|
||||
extern void wl_cfg80211_set_parent_dev(void *dev);
|
||||
|
|
@ -73,7 +96,9 @@ PBCMSDH_SDMMC_INSTANCE gInstance;
|
|||
/* Maximum number of bcmsdh_sdmmc devices supported by driver */
|
||||
#define BCMSDH_SDMMC_MAX_DEVICES 1
|
||||
|
||||
#if (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 39)) && defined(CONFIG_PM_SLEEP)
|
||||
extern volatile bool dhd_mmc_suspend;
|
||||
#endif /* (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 39)) && defined(CONFIG_PM_SLEEP) */
|
||||
|
||||
static int sdioh_probe(struct sdio_func *func)
|
||||
{
|
||||
|
|
@ -83,7 +108,8 @@ static int sdioh_probe(struct sdio_func *func)
|
|||
osl_t *osh = NULL;
|
||||
sdioh_info_t *sdioh = NULL;
|
||||
|
||||
sd_err(("bus num (host idx)=%d, slot num (rca)=%d\n", host_idx, rca));
|
||||
sd_err(("bus num (host idx)=%d, slot num (rca)=%d, caps=0x%x\n",
|
||||
host_idx, rca, func->card->host->caps));
|
||||
adapter = dhd_wifi_platform_get_adapter(SDIO_BUS, host_idx, rca);
|
||||
if (adapter != NULL) {
|
||||
sd_err(("found adapter info '%s'\n", adapter->name));
|
||||
|
|
@ -114,6 +140,14 @@ static int sdioh_probe(struct sdio_func *func)
|
|||
sd_err(("%s: sdioh_attach failed\n", __FUNCTION__));
|
||||
goto fail;
|
||||
}
|
||||
if (!(func->card->host->caps & MMC_CAP_NONREMOVABLE)) {
|
||||
sd_err(("%s: MMC_CAP_NONREMOVABLE not enabled in SDIO driver\n", __FUNCTION__));
|
||||
// func->card->host->caps |= MMC_CAP_NONREMOVABLE;
|
||||
}
|
||||
if ((func->card->host->caps & MMC_CAP_NEEDS_POLL)) {
|
||||
sd_err(("%s: MMC_CAP_NEEDS_POLL enabled in SDIO driver\n", __FUNCTION__));
|
||||
// func->card->host->caps &= ~MMC_CAP_NEEDS_POLL;
|
||||
}
|
||||
sdioh->bcmsdh = bcmsdh_probe(osh, &func->dev, sdioh, adapter, SDIO_BUS, host_idx, rca);
|
||||
if (sdioh->bcmsdh == NULL) {
|
||||
sd_err(("%s: bcmsdh_probe failed\n", __FUNCTION__));
|
||||
|
|
@ -215,6 +249,7 @@ static const struct sdio_device_id bcmsdh_sdmmc_ids[] = {
|
|||
{ SDIO_DEVICE(SDIO_VENDOR_ID_BROADCOM, SDIO_ANY_ID) },
|
||||
{ SDIO_DEVICE(SDIO_VENDOR_ID_BROADCOM, BCM4381_CHIP_ID) },
|
||||
{ SDIO_DEVICE(SDIO_VENDOR_ID_BROADCOM, BCM4382_CHIP_ID) },
|
||||
{ SDIO_DEVICE(SDIO_VENDOR_ID_SYNAPTICS, BCM43711_CHIP_ID) },
|
||||
{ SDIO_DEVICE_CLASS(SDIO_CLASS_NONE) },
|
||||
{ 0, 0, 0, 0 /* end: all zeroes */
|
||||
},
|
||||
|
|
@ -222,7 +257,7 @@ static const struct sdio_device_id bcmsdh_sdmmc_ids[] = {
|
|||
|
||||
MODULE_DEVICE_TABLE(sdio, bcmsdh_sdmmc_ids);
|
||||
|
||||
#if (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 39)) && defined(CONFIG_PM)
|
||||
#if (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 39)) && defined(CONFIG_PM_SLEEP)
|
||||
static int bcmsdh_sdmmc_suspend(struct device *pdev)
|
||||
{
|
||||
int err;
|
||||
|
|
@ -281,11 +316,54 @@ static int bcmsdh_sdmmc_resume(struct device *pdev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
#ifdef DEVICE_PM_CALLBACK
|
||||
static int bcmsdh_sdmmc_prepare(struct device *pdev)
|
||||
{
|
||||
int err;
|
||||
sdioh_info_t *sdioh;
|
||||
struct sdio_func *func = dev_to_sdio_func(pdev);
|
||||
|
||||
printf("%s Enter func->num=%d\n", __FUNCTION__, func->num);
|
||||
if (func->num != 2)
|
||||
return 0;
|
||||
|
||||
sdioh = sdio_get_drvdata(func);
|
||||
err = bcmsdh_prepare(sdioh->bcmsdh);
|
||||
if (err) {
|
||||
printf("%s bcmsdh_suspend err=%d\n", __FUNCTION__, err);
|
||||
return err;
|
||||
}
|
||||
|
||||
printf("%s Exit\n", __FUNCTION__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void bcmsdh_sdmmc_complete(struct device *pdev)
|
||||
{
|
||||
sdioh_info_t *sdioh;
|
||||
struct sdio_func *func = dev_to_sdio_func(pdev);
|
||||
|
||||
printf("%s Enter func->num=%d\n", __FUNCTION__, func->num);
|
||||
if (func->num != 2)
|
||||
return ;
|
||||
|
||||
sdioh = sdio_get_drvdata(func);
|
||||
bcmsdh_complete(sdioh->bcmsdh);
|
||||
|
||||
printf("%s Exit\n", __FUNCTION__);
|
||||
return ;
|
||||
}
|
||||
#endif /* DEVICE_PM_CALLBACK */
|
||||
|
||||
static const struct dev_pm_ops bcmsdh_sdmmc_pm_ops = {
|
||||
.suspend = bcmsdh_sdmmc_suspend,
|
||||
.resume = bcmsdh_sdmmc_resume,
|
||||
#ifdef DEVICE_PM_CALLBACK
|
||||
.prepare = bcmsdh_sdmmc_prepare,
|
||||
.complete = bcmsdh_sdmmc_complete,
|
||||
#endif /* DEVICE_PM_CALLBACK */
|
||||
};
|
||||
#endif /* (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 39)) && defined(CONFIG_PM) */
|
||||
#endif /* (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 39)) && defined(CONFIG_PM_SLEEP) */
|
||||
|
||||
#if defined(BCMLXSDMMC)
|
||||
static struct semaphore *notify_semaphore = NULL;
|
||||
|
|
@ -293,7 +371,17 @@ static struct semaphore *notify_semaphore = NULL;
|
|||
static int dummy_probe(struct sdio_func *func,
|
||||
const struct sdio_device_id *id)
|
||||
{
|
||||
sd_err(("%s: enter\n", __FUNCTION__));
|
||||
if (func)
|
||||
sd_err(("%s: func->num=0x%x; \n", __FUNCTION__, func->num));
|
||||
if (id) {
|
||||
if ((id->vendor != SDIO_VENDOR_ID_BROADCOM) &&
|
||||
(id->vendor != SDIO_VENDOR_ID_SYNAPTICS)) {
|
||||
sd_err(("%s: class=0x%x; vendor=0x%x; device=0x%x\n", __FUNCTION__,
|
||||
id->class, id->vendor, id->device));
|
||||
return -ENODEV;
|
||||
}
|
||||
}
|
||||
|
||||
if (func && (func->num != 2)) {
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -333,11 +421,11 @@ static struct sdio_driver bcmsdh_sdmmc_driver = {
|
|||
.remove = bcmsdh_sdmmc_remove,
|
||||
.name = "bcmsdh_sdmmc",
|
||||
.id_table = bcmsdh_sdmmc_ids,
|
||||
#if (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 39)) && defined(CONFIG_PM)
|
||||
#if (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 39)) && defined(CONFIG_PM_SLEEP)
|
||||
.drv = {
|
||||
.pm = &bcmsdh_sdmmc_pm_ops,
|
||||
},
|
||||
#endif /* (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 39)) && defined(CONFIG_PM) */
|
||||
#endif /* (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 39)) && defined(CONFIG_PM_SLEEP) */
|
||||
};
|
||||
|
||||
struct sdos_info {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* 'Standard' SDIO HOST CONTROLLER driver
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
@ -63,7 +82,7 @@ uint sd_msglevel = SDH_ERROR_VAL;
|
|||
|
||||
uint sd_hiok = TRUE; /* Use hi-speed mode if available? */
|
||||
uint sd_sdmode = SDIOH_MODE_SD4; /* Use SD4 mode by default */
|
||||
uint sd_f2_blocksize = 64; /* Default blocksize */
|
||||
uint sd_f2_blocksize = 256; /* Default blocksize */
|
||||
uint sd_f1_blocksize = BLOCK_SIZE_4318; /* Default blocksize */
|
||||
|
||||
#define sd3_trace(x)
|
||||
|
|
|
|||
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* 'Standard' SDIO HOST CONTROLLER driver
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
|
|||
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* 'Standard' SDIO HOST CONTROLLER driver - linux portion
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
|
|||
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* Broadcom Secure Standard Library.
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
|
|||
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* Driver O/S-independent utility routines
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
@ -1804,8 +1823,9 @@ BCMFASTPATH(bcm_mwbmap_alloc)(struct bcm_mwbmap * mwbmap_hdl)
|
|||
}
|
||||
MWBMAP_ASSERT(C_bcm_count_leading_zeros(bitmap) ==
|
||||
bcm_count_leading_zeros(bitmap));
|
||||
bitix = (BCM_MWBMAP_BITS_WORD - 1)
|
||||
- bcm_count_leading_zeros(bitmap); /* use asm clz */
|
||||
bitix = bcm_count_leading_zeros(bitmap); /* use asm clz */
|
||||
bitix = (bitix <= (BCM_MWBMAP_BITS_WORD - 1)) ?
|
||||
((BCM_MWBMAP_BITS_WORD - 1) - bitix) : 0;
|
||||
wordix = BCM_MWBMAP_MULOP(wordix) + bitix;
|
||||
|
||||
/* Clear bit if wd count is 0, without conditional branch */
|
||||
|
|
|
|||
21
drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/bcmwifi_channels.c
Normal file → Executable file
21
drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/bcmwifi_channels.c
Normal file → Executable file
|
|
@ -3,7 +3,26 @@
|
|||
* Contents are wifi-specific, used by any kernel or app-level
|
||||
* software that might want wifi things as it grows.
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
|
|||
21
drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/bcmwifi_radiotap.c
Normal file → Executable file
21
drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/bcmwifi_radiotap.c
Normal file → Executable file
|
|
@ -3,7 +3,26 @@
|
|||
* This file housing the functions use by
|
||||
* wl driver.
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
|
|||
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* Driver O/S-independent utility routines
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
|
|||
|
|
@ -4,7 +4,26 @@
|
|||
* provide the caller with one common bus interface for all dongle devices. In practice, it is only
|
||||
* used for USB interfaces. DBUS is not a protocol, but an abstraction layer.
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
@ -2762,14 +2781,12 @@ dhd_dbus_state_change(void *handle, int state)
|
|||
{
|
||||
dhd_pub_t *dhd = (dhd_pub_t *)handle;
|
||||
unsigned long flags;
|
||||
wifi_adapter_info_t *adapter;
|
||||
int wowl_dngldown = 0;
|
||||
|
||||
if (dhd == NULL) {
|
||||
DBUSERR(("%s: dhd is NULL\n", __FUNCTION__));
|
||||
return;
|
||||
}
|
||||
adapter = (wifi_adapter_info_t *)dhd->adapter;
|
||||
#ifdef WL_EXT_WOWL
|
||||
wowl_dngldown = dhd_conf_wowl_dngldown(dhd);
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* Dongle BUS interface for USB, OS independent
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
@ -901,14 +920,6 @@ dbus_usb_update_chipinfo(usb_info_t *usbinfo, uint32 chip)
|
|||
usbinfo->rdlram_size = RDL_RAM_SIZE_4360;
|
||||
usbinfo->rdlram_base_addr = RDL_RAM_BASE_4360;
|
||||
break;
|
||||
case 43242:
|
||||
usbinfo->rdlram_size = RDL_RAM_SIZE_43242;
|
||||
usbinfo->rdlram_base_addr = RDL_RAM_BASE_43242;
|
||||
break;
|
||||
case 43143:
|
||||
usbinfo->rdlram_size = RDL_RAM_SIZE_43143;
|
||||
usbinfo->rdlram_base_addr = RDL_RAM_BASE_43143;
|
||||
break;
|
||||
case 43569:
|
||||
usbinfo->rdlram_size = RDL_RAM_SIZE_4350;
|
||||
usbinfo->rdlram_base_addr = RDL_RAM_BASE_4350;
|
||||
|
|
|
|||
|
|
@ -2,7 +2,26 @@
|
|||
* Dongle BUS interface
|
||||
* USB Linux Implementation
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
@ -488,9 +507,6 @@ static int dbus_usbos_usbreset_func(void *data);
|
|||
static struct usb_device_id devid_table[] = {
|
||||
{ USB_DEVICE(BCM_DNGL_VID, 0x0000) }, /* Configurable via register() */
|
||||
#if defined(BCM_DNGL_EMBEDIMAGE) || defined(BCM_REQUEST_FW)
|
||||
{ USB_DEVICE(BCM_DNGL_VID, BCM_DNGL_BL_PID_4328) },
|
||||
{ USB_DEVICE(BCM_DNGL_VID, BCM_DNGL_BL_PID_43143) },
|
||||
{ USB_DEVICE(BCM_DNGL_VID, BCM_DNGL_BL_PID_43242) },
|
||||
{ USB_DEVICE(BCM_DNGL_VID, BCM_DNGL_BL_PID_4360) },
|
||||
{ USB_DEVICE(BCM_DNGL_VID, BCM_DNGL_BL_PID_43569) },
|
||||
{ USB_DEVICE(BCM_DNGL_VID, BCM_DNGL_BL_PID_4381) },
|
||||
|
|
|
|||
|
|
@ -4,7 +4,26 @@
|
|||
* Provides type definitions and function prototypes used to link the
|
||||
* DHD OS, bus, and protocol modules.
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
@ -1874,6 +1893,13 @@ typedef struct dhd_pub {
|
|||
#endif /* DEVICE_TX_STUCK_DETECT && ASSOC_CHECK_SR */
|
||||
uint32 p2p_disc_busy_cnt;
|
||||
bool skip_memdump_map_read;
|
||||
#if defined(DHD_SI_WD_RESET)
|
||||
bool si_wd;
|
||||
#endif
|
||||
#ifdef PKT_FILTER_SUPPORT
|
||||
uint8 pfaoe_enab;
|
||||
#endif /* PKT_FILTER_SUPPORT */
|
||||
|
||||
#ifdef CSI_SUPPORT
|
||||
struct list_head csi_list;
|
||||
int csi_count;
|
||||
|
|
@ -2138,16 +2164,19 @@ inline static void MUTEX_UNLOCK_SOFTAP_SET(dhd_pub_t * dhdp)
|
|||
}
|
||||
|
||||
#ifdef DHD_DEBUG_WAKE_LOCK
|
||||
extern int dhd_wakelock_counter_get(dhd_pub_t *pub);
|
||||
extern int dhd_wakelock_wd_counter_get(dhd_pub_t *pub);
|
||||
|
||||
#define DHD_OS_WAKE_LOCK(pub) \
|
||||
do { \
|
||||
printf("call wake_lock: %s %d\n", \
|
||||
__FUNCTION__, __LINE__); \
|
||||
printf("call wake_lock: %s %d (%d)\n", \
|
||||
__FUNCTION__, __LINE__, dhd_wakelock_counter_get(pub)); \
|
||||
dhd_os_wake_lock(pub); \
|
||||
} while (0)
|
||||
#define DHD_OS_WAKE_UNLOCK(pub) \
|
||||
do { \
|
||||
printf("call wake_unlock: %s %d\n", \
|
||||
__FUNCTION__, __LINE__); \
|
||||
printf("call wake_unlock: %s %d (%d)\n", \
|
||||
__FUNCTION__, __LINE__, dhd_wakelock_counter_get(pub)); \
|
||||
dhd_os_wake_unlock(pub); \
|
||||
} while (0)
|
||||
#define DHD_EVENT_WAKE_LOCK(pub) \
|
||||
|
|
@ -2246,6 +2275,18 @@ inline static void MUTEX_UNLOCK_SOFTAP_SET(dhd_pub_t * dhdp)
|
|||
__FUNCTION__, __LINE__); \
|
||||
dhd_os_wake_lock_destroy(dhd); \
|
||||
} while (0)
|
||||
#define DHD_OS_WD_WAKE_LOCK(pub) \
|
||||
do { \
|
||||
printf("call dhd_os_WD_wake_lock: %s %d (%d)\n", \
|
||||
__FUNCTION__, __LINE__, dhd_wakelock_wd_counter_get(pub)); \
|
||||
dhd_os_wd_wake_lock(pub); \
|
||||
} while (0)
|
||||
#define DHD_OS_WD_WAKE_UNLOCK(pub) \
|
||||
do { \
|
||||
printf("call dhd_os_WD_wake_unlock: %s %d (%d)\n", \
|
||||
__FUNCTION__, __LINE__, dhd_wakelock_wd_counter_get(pub)); \
|
||||
dhd_os_wd_wake_unlock(pub); \
|
||||
} while (0)
|
||||
#else
|
||||
#define DHD_OS_WAKE_LOCK(pub) dhd_os_wake_lock(pub)
|
||||
#define DHD_OS_WAKE_UNLOCK(pub) dhd_os_wake_unlock(pub)
|
||||
|
|
@ -2268,10 +2309,9 @@ inline static void MUTEX_UNLOCK_SOFTAP_SET(dhd_pub_t * dhdp)
|
|||
#define DHD_OS_WAKE_LOCK_RESTORE(pub) dhd_os_wake_lock_restore(pub)
|
||||
#define DHD_OS_WAKE_LOCK_INIT(dhd) dhd_os_wake_lock_init(dhd);
|
||||
#define DHD_OS_WAKE_LOCK_DESTROY(dhd) dhd_os_wake_lock_destroy(dhd);
|
||||
#endif /* DHD_DEBUG_WAKE_LOCK */
|
||||
|
||||
#define DHD_OS_WD_WAKE_LOCK(pub) dhd_os_wd_wake_lock(pub)
|
||||
#define DHD_OS_WD_WAKE_UNLOCK(pub) dhd_os_wd_wake_unlock(pub)
|
||||
#endif /* DHD_DEBUG_WAKE_LOCK */
|
||||
|
||||
#ifdef DHD_USE_SCAN_WAKELOCK
|
||||
#ifdef DHD_DEBUG_SCAN_WAKELOCK
|
||||
|
|
@ -2554,6 +2594,7 @@ extern void dhd_bus_wakeup_work(dhd_pub_t *dhdp);
|
|||
#define MAX_FEATURE_SET_CONCURRRENT_GROUPS 3
|
||||
|
||||
#if defined(linux) || defined(LINUX) || defined(OEM_ANDROID)
|
||||
extern int dhd_dev_indoor_cfg(struct net_device *dev, u8 enable);
|
||||
extern int dhd_dev_get_feature_set(struct net_device *dev);
|
||||
extern int dhd_dev_get_feature_set_matrix(struct net_device *dev, int num);
|
||||
extern int dhd_dev_cfg_rand_mac_oui(struct net_device *dev, uint8 *oui);
|
||||
|
|
@ -3278,7 +3319,7 @@ extern uint dhd_force_tx_queueing;
|
|||
#define CUSTOM_RXF_PRIO_SETTING MAX((CUSTOM_DPC_PRIO_SETTING - 1), 1)
|
||||
#endif
|
||||
|
||||
#define DEFAULT_WIFI_TURNOFF_DELAY 0
|
||||
#define DEFAULT_WIFI_TURNOFF_DELAY 10
|
||||
#ifndef WIFI_TURNOFF_DELAY
|
||||
#define WIFI_TURNOFF_DELAY DEFAULT_WIFI_TURNOFF_DELAY
|
||||
#endif /* WIFI_TURNOFF_DELAY */
|
||||
|
|
@ -4109,6 +4150,7 @@ extern int dhd_prot_debug_info_print(dhd_pub_t *dhd);
|
|||
extern bool dhd_bus_skip_clm(dhd_pub_t *dhdp);
|
||||
extern void dhd_pcie_dump_rc_conf_space_cap(dhd_pub_t *dhd);
|
||||
extern bool dhd_pcie_dump_int_regs(dhd_pub_t *dhd);
|
||||
extern bool dhd_pcie_check_lps_d3_acked(dhd_pub_t *dhd);
|
||||
void dhd_prot_ctrl_info_print(dhd_pub_t *dhd);
|
||||
#else
|
||||
#define dhd_prot_debug_info_print(x)
|
||||
|
|
@ -4391,6 +4433,7 @@ typedef struct dhd_gdb_proxy_probe_data {
|
|||
#endif /* GDB_PROXY */
|
||||
|
||||
#ifdef PKT_FILTER_SUPPORT
|
||||
extern int dhd_pktfilter_mode_change(dhd_pub_t * dhd, int enable);
|
||||
extern void dhd_pktfilter_offload_set(dhd_pub_t * dhd, char *arg);
|
||||
extern void dhd_pktfilter_offload_enable(dhd_pub_t * dhd, char *arg, int enable, int master_mode);
|
||||
extern void dhd_pktfilter_offload_delete(dhd_pub_t *dhd, int id);
|
||||
|
|
@ -4536,6 +4579,9 @@ static inline uint32 next_larger_power2(uint32 num)
|
|||
|
||||
extern struct dhd_if * dhd_get_ifp(dhd_pub_t *dhdp, uint32 ifidx);
|
||||
uint8 dhd_d11_slices_num_get(dhd_pub_t *dhdp);
|
||||
#if defined(WL_AUTO_QOS) && defined(DHD_QOS_ON_SOCK_FLOW)
|
||||
extern void dhd_wl_sock_qos_set_status(dhd_pub_t *dhdp, unsigned long on_off);
|
||||
#endif /* WL_AUTO_QOS && DHD_QOS_ON_SOCK_FLOW */
|
||||
|
||||
extern void *dhd_get_roam_evt(dhd_pub_t *dhdp);
|
||||
#if defined(DISABLE_HE_ENAB) || defined(CUSTOM_CONTROL_HE_ENAB)
|
||||
|
|
@ -4704,8 +4750,8 @@ static INLINE int dhd_kern_path(char *name, int flags, struct path *file_path)
|
|||
#define DHD_VFS_INODE(dir) d_inode(dir)
|
||||
#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) */
|
||||
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0)) && (RHEL_RELEASE_CODE < \
|
||||
RHEL_RELEASE_VERSION(7, 6))
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0)) && \
|
||||
(RHEL_RELEASE_CODE < RHEL_RELEASE_VERSION(7, 6))
|
||||
#define DHD_VFS_UNLINK(dir, file_path, c) vfs_unlink(DHD_VFS_INODE(dir), file_path.dentry)
|
||||
#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0))
|
||||
#define DHD_VFS_UNLINK(dir, file_path, c) \
|
||||
|
|
@ -4762,6 +4808,14 @@ extern uint32 dhd_get_concurrent_capabilites(dhd_pub_t *dhd);
|
|||
#endif
|
||||
int dhd_config_rts_in_suspend(dhd_pub_t *dhdp, bool suspend);
|
||||
#endif /* DHD_CUSTOM_CONFIG_RTS_IN_SUSPEND */
|
||||
|
||||
extern void dhd_unregister_net(struct net_device *net, bool need_rtnl_lock);
|
||||
extern int dhd_register_net(struct net_device *net, bool need_rtnl_lock);
|
||||
|
||||
#if defined(DHD_HWTSTAMP)
|
||||
extern int dhd_hwtstamp_txtype(dhd_pub_t *dhdp);
|
||||
#endif /* DHD_HWTSTAMP */
|
||||
|
||||
#ifdef WL_MONITOR
|
||||
void dhd_set_monitor(dhd_pub_t *pub, int ifidx, int val);
|
||||
#ifdef BCMSDIO
|
||||
|
|
@ -4769,4 +4823,11 @@ extern void dhd_rx_mon_pkt_sdio(dhd_pub_t *dhdp, void *pkt, int ifidx);
|
|||
bool dhd_monitor_enabled(dhd_pub_t *dhd, int ifidx);
|
||||
#endif /* BCMSDIO */
|
||||
#endif /* WL_MONITOR */
|
||||
int dhd_pm_callback(
|
||||
#ifdef DEVICE_PM_CALLBACK
|
||||
dhd_pub_t *dhd,
|
||||
#else
|
||||
struct notifier_block *nfb,
|
||||
#endif
|
||||
unsigned long action, void *ignored);
|
||||
#endif /* _dhd_h_ */
|
||||
|
|
|
|||
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* Bit packing and Base64 utils for EWP
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
|
|||
|
|
@ -4,7 +4,26 @@
|
|||
* Provides type definitions and function prototypes used to link the
|
||||
* DHD OS, bus, and protocol modules.
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
|
|||
|
|
@ -87,37 +87,6 @@ const char ccode_43455c0[] = "";
|
|||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef CCODE_4356A2
|
||||
const char ccode_4356a2[] = \
|
||||
"AE/6 AG/2 AI/1 AL/2 AN/2 AR/21 AS/12 AT/4 AU/6 AW/2 AZ/2 "\
|
||||
"BA/2 BD/2 BE/4 BG/4 BH/4 BM/12 BN/4 BR/4 BS/2 BY/3 "\
|
||||
"CA/31 CH/4 CN/38 CO/17 CR/17 CY/4 CZ/4 "\
|
||||
"DE/7 DK/4 DZ/1 "\
|
||||
"EC/21 EE/4 ES/4 ET/2 "\
|
||||
"FI/4 FR/5 "\
|
||||
"GB/6 GD/2 GF/2 GP/2 GR/4 GT/1 GU/12 "\
|
||||
"HK/2 HR/4 HU/4 "\
|
||||
"ID/13 IE/5 IL/7 IN/28 IS/4 IT/4 "\
|
||||
"JO/3 JP/45 "\
|
||||
"KH/2 KR/57 KW/5 KY/3 "\
|
||||
"LA/2 LB/5 LI/4 LK/1 LS/2 LT/4 LU/3 LV/4 "\
|
||||
"MA/2 MC/1 MD/2 ME/2 MK/2 MN/1 MO/2 MR/2 MT/4 MQ/2 MU/2 MV/3 MW/1 MX/20 MY/16 "\
|
||||
"NI/2 NL/4 NO/4 NP/3 NZ/4 "\
|
||||
"OM/4 "\
|
||||
"PA/17 PE/20 PG/2 PH/5 PL/4 PR/20 PT/4 PY/2 "\
|
||||
"RE/2 RO/4 RS/2 RU/986 "\
|
||||
"SE/4 SG/19 SI/4 SK/4 SN/2 SV/19 "\
|
||||
"TH/9 TN/1 TR/7 TT/3 TW/1 "\
|
||||
"UA/8 UG/2 US/1 UY/1 "\
|
||||
"VA/2 VE/3 VG/2 VI/13 VN/4 "\
|
||||
"XZ/11 "\
|
||||
"YT/2 "\
|
||||
"ZM/2 "\
|
||||
"E0/32";
|
||||
#else
|
||||
const char ccode_4356a2[] = "";
|
||||
#endif
|
||||
|
||||
#ifdef CCODE_4359C0
|
||||
const char ccode_4359c0[] = \
|
||||
"AD/1 AE/6 AG/2 AI/1 AL/3 AS/12 AT/21 AU/6 AW/2 AZ/8 "\
|
||||
|
|
@ -207,42 +176,68 @@ typedef struct ccode_list_map_t {
|
|||
const char *ccode_ww;
|
||||
} ccode_list_map_t;
|
||||
|
||||
extern const char ccode_43438[];
|
||||
extern const char ccode_43455c0[];
|
||||
extern const char ccode_4356a2[];
|
||||
extern const char ccode_4359c0[];
|
||||
extern const char ccode_4358u[];
|
||||
|
||||
const ccode_list_map_t ccode_list_map[] = {
|
||||
/* ChipID Chiprev ccode */
|
||||
#if defined(BCMSDIO) || defined(BCMPCIE)
|
||||
{BCM4359_CHIP_ID, 9, ccode_4359c0, "XZ/11"},
|
||||
#endif
|
||||
#ifdef BCMSDIO
|
||||
{BCM43430_CHIP_ID, 0, ccode_43438, ""},
|
||||
{BCM43430_CHIP_ID, 1, ccode_43438, ""},
|
||||
{BCM43430_CHIP_ID, 2, ccode_43436, ""},
|
||||
{BCM4345_CHIP_ID, 6, ccode_43455c0, "XZ/11"},
|
||||
{BCM43454_CHIP_ID, 6, ccode_43455c0, "XZ/11"},
|
||||
{BCM4345_CHIP_ID, 9, ccode_43455c0, "XZ/11"},
|
||||
{BCM43454_CHIP_ID, 9, ccode_43455c0, "XZ/11"},
|
||||
{BCM4354_CHIP_ID, 2, ccode_4356a2, "XZ/11"},
|
||||
{BCM4356_CHIP_ID, 2, ccode_4356a2, "XZ/11"},
|
||||
{BCM4371_CHIP_ID, 2, ccode_4356a2, "XZ/11"},
|
||||
{BCM4359_CHIP_ID, 9, ccode_4359c0, "XZ/11"},
|
||||
#endif
|
||||
#ifdef BCMPCIE
|
||||
{BCM4354_CHIP_ID, 2, ccode_4356a2, "XZ/11"},
|
||||
{BCM4356_CHIP_ID, 2, ccode_4356a2, "XZ/11"},
|
||||
{BCM4359_CHIP_ID, 9, ccode_4359c0, "XZ/11"},
|
||||
{BCM4375_CHIP_ID, 5, ccode_4375b4, ""},
|
||||
#endif
|
||||
#ifdef BCMDBUS
|
||||
{BCM43569_CHIP_ID, 2, ccode_4358u, "XW/0"},
|
||||
{BCM43569_CHIP_ID, 2, ccode_4358u, "XZ/11"},
|
||||
#endif
|
||||
};
|
||||
|
||||
/*
|
||||
* [ccode]:[disable_6g_band][disable_5g_band][ww_2g_chan_only]
|
||||
* [ccode]:[x][xxxx][x]
|
||||
*/
|
||||
const char ccode_all_map[] = \
|
||||
"AA:000002 "\
|
||||
"AU:E08203 "\
|
||||
"BH:F0E042 BR:00E002 "\
|
||||
"CA:00E203 CN:F0E042 "\
|
||||
"EU:E08002 "\
|
||||
"GB:E08002 "\
|
||||
"ID:F0F042 IL:F08002 IN:F08002 "\
|
||||
"JP:E00082 "\
|
||||
"KR:00E002 "\
|
||||
"NZ:E0E002 "\
|
||||
"PH:F0C002 "\
|
||||
"RU:E0C302 "\
|
||||
"SG:E0E002 "\
|
||||
"TR:F00882 TW:F0E043 "\
|
||||
"US:000003 "\
|
||||
"VN:F0E002 "\
|
||||
"ZA:F00882 ";
|
||||
|
||||
typedef struct ccode_all_chip_t {
|
||||
uint chip;
|
||||
uint chiprev;
|
||||
} ccode_all_chip_t;
|
||||
|
||||
const ccode_all_chip_t ccode_all_chip[] = {
|
||||
/* ChipID Chiprev */
|
||||
// {0, 0},
|
||||
#if defined(BCMSDIO) || defined(BCMPCIE)
|
||||
{BCM43752_CHIP_ID, 4},
|
||||
{BCM43756_CHIP_ID, 4},
|
||||
{BCM43756_CHIP_ID, 6},
|
||||
#endif
|
||||
};
|
||||
|
||||
int
|
||||
dhd_ccode_map_country_list(dhd_pub_t *dhd, wl_country_t *cspec)
|
||||
{
|
||||
int bcmerror = -1, i;
|
||||
int ret = -1, i;
|
||||
uint chip = dhd->conf->chip, chiprev = dhd->conf->chiprev;
|
||||
const char *ccode_list = NULL, *ccode_ww = NULL;
|
||||
char *pch;
|
||||
|
|
@ -260,17 +255,86 @@ dhd_ccode_map_country_list(dhd_pub_t *dhd, wl_country_t *cspec)
|
|||
pch = strstr(ccode_list, cspec->ccode);
|
||||
if (pch) {
|
||||
cspec->rev = (int)simple_strtol(pch+strlen(cspec->ccode)+1, NULL, 0);
|
||||
bcmerror = 0;
|
||||
ret = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (dhd->op_mode != DHD_FLAG_MFG_MODE) {
|
||||
if (bcmerror && ccode_ww && strlen(ccode_ww)>=4) {
|
||||
if (ret && ccode_ww && strlen(ccode_ww)>=4) {
|
||||
memcpy(cspec->ccode, ccode_ww, 2);
|
||||
cspec->rev = (int)simple_strtol(ccode_ww+3, NULL, 0);
|
||||
}
|
||||
}
|
||||
|
||||
return bcmerror;
|
||||
return ret;
|
||||
}
|
||||
|
||||
#define WW_2G_CHAN_ONLY_MASK 0x00000F
|
||||
#define DISABLE_5G_BAND_MASK 0x0FFFF0
|
||||
#define DISABLE_6G_BAND_MASK 0xF00000
|
||||
|
||||
#define DISABLE_5G_BAND_OFFSET 4
|
||||
#define DISABLE_6G_BAND_OFFSET 20
|
||||
|
||||
int
|
||||
dhd_ccode_map_country_all(dhd_pub_t *dhd, wl_country_t *cspec)
|
||||
{
|
||||
int ret = -1, i;
|
||||
struct dhd_conf *conf = dhd->conf;
|
||||
wl_ccode_all_t *ccode_all = &dhd->conf->ccode_all;
|
||||
uint chip = conf->chip, chiprev = conf->chiprev, val;
|
||||
char *pch, *pick_tmp;
|
||||
bool picked = FALSE;
|
||||
|
||||
if (conf->ccode_all_list) {
|
||||
pch = strstr(conf->ccode_all_list, cspec->ccode);
|
||||
if (!pch)
|
||||
goto exit;
|
||||
pick_tmp = bcmstrtok(&pch, ", ", 0);
|
||||
if (!pick_tmp)
|
||||
goto exit;
|
||||
ccode_all->ww_2g_chan_only = 0x2;
|
||||
ccode_all->disable_5g_band = 0;
|
||||
ccode_all->disable_6g_band = 0;
|
||||
pch = strstr(pick_tmp, "2g");
|
||||
if (pch) {
|
||||
ccode_all->ww_2g_chan_only = (int)simple_strtol(pch+strlen("2g"), NULL, 16);
|
||||
picked = TRUE;
|
||||
}
|
||||
pch = strstr(pick_tmp, "5g");
|
||||
if (pch) {
|
||||
ccode_all->disable_5g_band = (int)simple_strtol(pch+strlen("5g"), NULL, 16);
|
||||
picked = TRUE;
|
||||
}
|
||||
pch = strstr(pick_tmp, "6g");
|
||||
if (pch) {
|
||||
ccode_all->disable_6g_band = (int)simple_strtol(pch+strlen("6g"), NULL, 16);
|
||||
picked = TRUE;
|
||||
}
|
||||
if (picked) {
|
||||
memcpy(cspec->ccode, &ccode_all->cspec.ccode, WLC_CNTRY_BUF_SZ);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
exit:
|
||||
for (i=0; i<sizeof(ccode_all_chip)/sizeof(ccode_all_chip[0]); i++) {
|
||||
const ccode_all_chip_t* row = &ccode_all_chip[i];
|
||||
if ((row->chip == chip && row->chiprev == chiprev) ||
|
||||
(row->chip == 0 && row->chiprev == 0)) {
|
||||
pch = strstr(ccode_all_map, cspec->ccode);
|
||||
if (pch) {
|
||||
val = simple_strtol(pch+strlen(cspec->ccode)+1, NULL, 16);
|
||||
ccode_all->ww_2g_chan_only = val & WW_2G_CHAN_ONLY_MASK;
|
||||
ccode_all->disable_5g_band = (val & DISABLE_5G_BAND_MASK) >> DISABLE_5G_BAND_OFFSET;
|
||||
ccode_all->disable_6g_band = (val & DISABLE_6G_BAND_MASK) >> DISABLE_6G_BAND_OFFSET;
|
||||
memcpy(cspec->ccode, &ccode_all->cspec.ccode, WLC_CNTRY_BUF_SZ);
|
||||
ret = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* DHD Protocol Module for CDC and BDC.
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
@ -50,6 +69,10 @@
|
|||
#include <wlfc_proto.h>
|
||||
#include <dhd_wlfc.h>
|
||||
#endif
|
||||
|
||||
#ifdef DHD_HWTSTAMP
|
||||
#include <dhd_linux_priv.h>
|
||||
#endif /* DHD_HWTSTAMP */
|
||||
#ifdef BCMDBUS
|
||||
#include <dhd_config.h>
|
||||
#endif /* BCMDBUS */
|
||||
|
|
@ -521,6 +544,7 @@ dhd_prot_hdrpull(dhd_pub_t *dhd, int *ifidx, void *pktbuf, uchar *reorder_buf_in
|
|||
struct bdc_header *h;
|
||||
#endif
|
||||
uint8 data_offset = 0;
|
||||
uint32 bdc_hdr_len = BDC_HEADER_LEN;
|
||||
|
||||
DHD_TRACE(("%s: Enter\n", __FUNCTION__));
|
||||
|
||||
|
|
@ -536,11 +560,36 @@ dhd_prot_hdrpull(dhd_pub_t *dhd, int *ifidx, void *pktbuf, uchar *reorder_buf_in
|
|||
}
|
||||
|
||||
h = (struct bdc_header *)PKTDATA(dhd->osh, pktbuf);
|
||||
#ifdef DHD_HWTSTAMP
|
||||
if (h->flags2 & BDC_FLAG2_TSF_FLAG) {
|
||||
struct bdc_header_tsf *h_tsf = (struct bdc_header_tsf *)PKTDATA(dhd->osh, pktbuf);
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 30))
|
||||
if (dhd->info->stmpconf.rx_filter) {
|
||||
ktime_t tsf;
|
||||
struct skb_shared_hwtstamps *tst;
|
||||
tst = skb_hwtstamps(((struct sk_buff*)(pktbuf)));
|
||||
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0))
|
||||
tsf = (s64) h_tsf->tsf_h;
|
||||
tsf = tsf << 32 | h_tsf->tsf_l;
|
||||
/* Convert micro sec tsf to nano sec kernel hw timestamp */
|
||||
tst->hwtstamp = tsf * 1000;
|
||||
#else
|
||||
tsf.tv64 = (s64) h_tsf->tsf_h;
|
||||
tsf.tv64 = tsf.tv64 << 32 | h_tsf->tsf_l;
|
||||
/* Convert micro sec tsf to nano sec kernel hw timestamp */
|
||||
tst->hwtstamp.tv64 = tsf.tv64 * 1000;
|
||||
#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0)) */
|
||||
}
|
||||
#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 30)) */
|
||||
h_tsf->dataOffset = h_tsf->dataOffset - 2;
|
||||
bdc_hdr_len = bdc_hdr_len + 8;
|
||||
}
|
||||
#endif /* DHD_HWTSTAMP */
|
||||
if (!ifidx) {
|
||||
/* for tx packet, skip the analysis */
|
||||
data_offset = h->dataOffset;
|
||||
PKTPULL(dhd->osh, pktbuf, BDC_HEADER_LEN);
|
||||
PKTPULL(dhd->osh, pktbuf, bdc_hdr_len);
|
||||
goto exit;
|
||||
}
|
||||
|
||||
|
|
@ -563,7 +612,7 @@ dhd_prot_hdrpull(dhd_pub_t *dhd, int *ifidx, void *pktbuf, uchar *reorder_buf_in
|
|||
|
||||
PKTSETPRIO(pktbuf, (h->priority & BDC_PRIORITY_MASK));
|
||||
data_offset = h->dataOffset;
|
||||
PKTPULL(dhd->osh, pktbuf, BDC_HEADER_LEN);
|
||||
PKTPULL(dhd->osh, pktbuf, bdc_hdr_len);
|
||||
#endif /* BDC */
|
||||
|
||||
#ifdef PROP_TXSTATUS
|
||||
|
|
|
|||
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* Linux cfg80211 driver - Dongle Host Driver (DHD) related
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
|
|||
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* Linux cfg80211 driver - Dongle Host Driver (DHD) related
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
|
|||
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* Broadcom Dongle Host Driver (DHD), common DHD core.
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
@ -497,8 +516,10 @@ const bcm_iovar_t dhd_iovars[] = {
|
|||
/* name varid flags flags2 type minlen */
|
||||
{"version", IOV_VERSION, 0, 0, IOVT_BUFFER, 0},
|
||||
{"wlmsglevel", IOV_WLMSGLEVEL, 0, 0, IOVT_UINT32, 0 },
|
||||
#ifdef DHD_DEBUG
|
||||
#if defined(DHD_DEBUG) || defined(DHD_MSG_LEVEL_SUPPORT)
|
||||
{"msglevel", IOV_MSGLEVEL, 0, 0, IOVT_UINT32, 0},
|
||||
#endif /* DHD_DEBUG || DHD_MSG_LEVEL_SUPPORT */
|
||||
#ifdef DHD_DEBUG
|
||||
{"mem_debug", IOV_MEM_DEBUG, 0, 0, IOVT_BUFFER, 0 },
|
||||
#ifdef BCMPCIE
|
||||
{"flow_ring_debug", IOV_FLOW_RING_DEBUG, 0, 0, IOVT_BUFFER, 0 },
|
||||
|
|
@ -2808,9 +2829,9 @@ int dhd_sar_init_parameter(dhd_pub_t *dhd, eCountry_flag_type type, int advance_
|
|||
|
||||
#ifdef VSDB
|
||||
if (FW_SUPPORTED(dhd, 6g)) {
|
||||
sarctrl->ver = SAR_PARAM_6G_V3_VSDB;
|
||||
sarctrl->ver = SAR_PARAM_6G_V3_VSDB | (idx << SAR_PARAM_NUM_OFFSET);
|
||||
} else {
|
||||
sarctrl->ver = SAR_PARAM_V1_VSDB;
|
||||
sarctrl->ver = SAR_PARAM_V1_VSDB | (idx << SAR_PARAM_NUM_OFFSET);
|
||||
}
|
||||
if (CONST_SARCTRL_SINGLE_SET_QTY != idx) {
|
||||
DHD_ERROR(("%s: *Waring, idx=%d mismatch VSDB expect=%d\n",
|
||||
|
|
@ -2818,9 +2839,9 @@ int dhd_sar_init_parameter(dhd_pub_t *dhd, eCountry_flag_type type, int advance_
|
|||
}
|
||||
#else /* VSDB */
|
||||
if (FW_SUPPORTED(dhd, 6g)) {
|
||||
sarctrl->ver = SAR_PARAM_6G_V4_RSDB;
|
||||
sarctrl->ver = SAR_PARAM_6G_V4_RSDB | (idx << SAR_PARAM_NUM_OFFSET);
|
||||
} else {
|
||||
sarctrl->ver = SAR_PARAM_V2_RSDB;
|
||||
sarctrl->ver = SAR_PARAM_V2_RSDB | (idx << SAR_PARAM_NUM_OFFSET);
|
||||
}
|
||||
if (CONST_SARCTRL_SET_QTY != idx) {
|
||||
DHD_ERROR(("%s: *Waring, idx=%d mismatch RSDB expect=%d\n",
|
||||
|
|
@ -2845,6 +2866,7 @@ int dhd_sar_set_parameter(dhd_pub_t *dhd_pub, int advance_mode)
|
|||
wl_country_t *cspec = NULL;
|
||||
sarctrl_set sarctrl_iov = { 0 }, *sarctrl = NULL;
|
||||
eCountry_flag_type type = SYNA_COUNTRY_TYPE_INVALID;
|
||||
int sar_ver = 0, sar_param_num = 0;
|
||||
|
||||
if (dhd_pub == NULL) {
|
||||
DHD_ERROR(("%s: bcm_mkiovar failed.", __FUNCTION__));
|
||||
|
|
@ -2900,12 +2922,39 @@ int dhd_sar_set_parameter(dhd_pub_t *dhd_pub, int advance_mode)
|
|||
}
|
||||
DHD_TRACE(("%s: country='%s', type=%d, advance_mode=%d\n",
|
||||
__FUNCTION__, cspec->ccode, type, advance_mode));
|
||||
/* Try to get sar version from FW */
|
||||
err = dhd_iovar(dhd_pub, 0, "sar_params", NULL, 0,
|
||||
(char *)&sarctrl_iov, sizeof(sarctrl_iov), FALSE);
|
||||
if (err) {
|
||||
/* Not support sar_params read */
|
||||
} else {
|
||||
sar_ver = sarctrl_iov.ver & SAR_PARAM_VER_MASK;
|
||||
sar_param_num = (sarctrl_iov.ver & SAR_PARAM_NUM_MASK) >> SAR_PARAM_NUM_OFFSET;
|
||||
}
|
||||
|
||||
/* prepare IOVAR */
|
||||
memset(&sarctrl_iov, 0, sizeof(sarctrl_iov));
|
||||
if (sar_ver == SAR_PARAM_DYN) {
|
||||
int file_sar_num = (sarctrl->ver & SAR_PARAM_NUM_MASK) >> SAR_PARAM_NUM_OFFSET;
|
||||
if (file_sar_num != sar_param_num) {
|
||||
DHD_ERROR(("%s: Need confirm SAR PARAMETERS configuration based on FW\n",
|
||||
__FUNCTION__));
|
||||
return BCME_BADARG;
|
||||
}
|
||||
sarctrl_iov.ver = sarctrl->ver;
|
||||
err = memcpy_s(sarctrl_iov.sarctrl, MAX_SAR_PARAMS_NUM * sizeof(u32),
|
||||
sarctrl->sarctrl, file_sar_num * sizeof(u32));
|
||||
if (err) {
|
||||
DHD_ERROR(("%s: memcpy error num = %d\n",
|
||||
__FUNCTION__, file_sar_num));
|
||||
return BCME_BADARG;
|
||||
}
|
||||
} else {
|
||||
/* prepare IOVAR for old version*/
|
||||
sarctrl_iov.ver = sarctrl->ver & SAR_PARAM_VER_MASK;
|
||||
sarctrl_iov.basic = sarctrl->basic;
|
||||
sarctrl_iov.rsdb = sarctrl->rsdb;
|
||||
DHD_TRACE(("%s: sarctrl_iov=0x%p, ver=%d, sarctrl_2g=0x%X, sarctrl_2g_2=0x%X\n",
|
||||
}
|
||||
DHD_TRACE(("%s: sarctrl_iov=0x%p, ver=%x, sarctrl_2g=0x%X, sarctrl_2g_2=0x%X\n",
|
||||
__FUNCTION__, &sarctrl_iov, sarctrl_iov.ver,
|
||||
sarctrl_iov.basic.sarctrl_2g,
|
||||
sarctrl_iov.basic.sarctrl_2g_2));
|
||||
|
|
@ -6179,7 +6228,7 @@ wl_process_host_event(dhd_pub_t *dhd_pub, int *ifidx, void *pktdata, uint pktlen
|
|||
{
|
||||
uint8* ea = pvt_data->eth.ether_dhost;
|
||||
WLFC_DBGMESG(("WLC_E_IF: idx:%d, action:%s, iftype:%s, ["MACDBG"]\n"
|
||||
ifevent->ifidx,
|
||||
,ifevent->ifidx,
|
||||
((ifevent->opcode == WLC_E_IF_ADD) ? "ADD":"DEL"),
|
||||
((ifevent->role == 0) ? "STA":"AP "),
|
||||
MAC2STRDBG(ea)));
|
||||
|
|
@ -6189,11 +6238,27 @@ wl_process_host_event(dhd_pub_t *dhd_pub, int *ifidx, void *pktdata, uint pktlen
|
|||
dhd_wlfc_interface_event(dhd_pub,
|
||||
eWLFC_MAC_ENTRY_ACTION_UPDATE,
|
||||
ifevent->ifidx, ifevent->role, ea);
|
||||
else
|
||||
else {
|
||||
#if defined(__linux__)
|
||||
/* Early set interface "del_in_progress" to prevent from packets
|
||||
* flooding to interface which is going to be removed. That would
|
||||
* cause proptx transit_count not consistent and has entry suppressed issue.
|
||||
*/
|
||||
if (ifevent->opcode == WLC_E_IF_DEL) {
|
||||
unsigned long fl;
|
||||
ifp = dhd_get_ifp(dhd_pub, ifevent->ifidx);
|
||||
if (ifp) {
|
||||
DHD_GENERAL_LOCK(dhd_pub, fl);
|
||||
ifp->del_in_progress = true;
|
||||
DHD_GENERAL_UNLOCK(dhd_pub, fl);
|
||||
}
|
||||
}
|
||||
#endif /* __linux__ */
|
||||
dhd_wlfc_interface_event(dhd_pub,
|
||||
((ifevent->opcode == WLC_E_IF_ADD) ?
|
||||
eWLFC_MAC_ENTRY_ACTION_ADD : eWLFC_MAC_ENTRY_ACTION_DEL),
|
||||
ifevent->ifidx, ifevent->role, ea);
|
||||
}
|
||||
|
||||
/* dhd already has created an interface by default, for 0 */
|
||||
if (ifevent->ifidx == 0)
|
||||
|
|
@ -6330,11 +6395,12 @@ wl_process_host_event(dhd_pub_t *dhd_pub, int *ifidx, void *pktdata, uint pktlen
|
|||
if (!ifp)
|
||||
break;
|
||||
|
||||
/* Consider STA role only since roam is disabled on P2P GC.
|
||||
* Drop EAPOL M1 frame only if roam is done to same BSS.
|
||||
/* Consider both STA and GC due to CSA.
|
||||
* Drop EAPOL M1 frame only if roam is done to the same BSSID.
|
||||
* wpa_supplicant only handles different BSSID case.
|
||||
*/
|
||||
if ((status == WLC_E_STATUS_SUCCESS) &&
|
||||
IS_STA_IFACE(ndev_to_wdev(ifp->net)) &&
|
||||
(IS_STA_IFACE(ndev_to_wdev(ifp->net)) || IS_P2P_GC(ndev_to_wdev(ifp->net))) &&
|
||||
wl_cfg80211_is_event_from_connected_bssid(ifp->net, event, event->ifidx)) {
|
||||
ifp->recv_reassoc_evt = TRUE;
|
||||
}
|
||||
|
|
@ -6361,6 +6427,31 @@ wl_process_host_event(dhd_pub_t *dhd_pub, int *ifidx, void *pktdata, uint pktlen
|
|||
dhd_flow_rings_delete(dhd_pub, (uint8)dhd_ifname2idx(dhd_pub->info,
|
||||
event->ifname));
|
||||
}
|
||||
#else
|
||||
#ifdef PROP_TXSTATUS
|
||||
/* Link down */
|
||||
if (!flags) {
|
||||
struct wl_event_data_if *ifevent = (struct wl_event_data_if *)event_data;
|
||||
uint8* ea = pvt_data->eth.ether_dhost;
|
||||
WLFC_DBGMESG(("WLC_E_LINK: idx:%d, action:%s, "
|
||||
"iftype:%s, ["MACDBG"]\n",
|
||||
ifevent->ifidx,
|
||||
((flags) ? "UP":"DOWN"),
|
||||
((ifevent->role == 0) ? "STA":"AP "),
|
||||
MAC2STRDBG(ea)));
|
||||
(void)ea;
|
||||
|
||||
/* only need to handle STA here */
|
||||
if (!ifevent->role) {
|
||||
dhd_wlfc_interface_event(dhd_pub,
|
||||
eWLFC_MAC_ENTRY_ACTION_DEL,
|
||||
ifevent->ifidx, ifevent->role, ea);
|
||||
dhd_wlfc_interface_event(dhd_pub,
|
||||
eWLFC_MAC_ENTRY_ACTION_ADD,
|
||||
ifevent->ifidx, ifevent->role, ea);
|
||||
}
|
||||
}
|
||||
#endif /* PROP_TXSTATUS */
|
||||
#endif /* PCIE_FULL_DONGLE */
|
||||
/* fall through */
|
||||
fallthrough;
|
||||
|
|
@ -6403,6 +6494,7 @@ wl_process_host_event(dhd_pub_t *dhd_pub, int *ifidx, void *pktdata, uint pktlen
|
|||
}
|
||||
#endif /* PCIE_FULL_DONGLE */
|
||||
#ifdef DHD_POST_EAPOL_M1_AFTER_ROAM_EVT
|
||||
/* fall through */
|
||||
ifp = dhd_get_ifp(dhd_pub, event->ifidx);
|
||||
if (ifp) {
|
||||
ifp->recv_reassoc_evt = FALSE;
|
||||
|
|
@ -6549,6 +6641,22 @@ pattern_atoh_len(char *src, char *dst, int len)
|
|||
#endif /* PKT_FILTER_SUPPORT || DHD_PKT_LOGGING */
|
||||
|
||||
#ifdef PKT_FILTER_SUPPORT
|
||||
|
||||
int
|
||||
dhd_pktfilter_mode_change(dhd_pub_t * dhd, int enable)
|
||||
{
|
||||
int rc = 0;
|
||||
uint operation_mode = PKT_FILTER_MODE_DISABLE;
|
||||
|
||||
operation_mode = dhd_master_mode
|
||||
| ((enable)?(0):(PKT_FILTER_MODE_DISABLE));
|
||||
|
||||
/* Contorl the master mode */
|
||||
rc = dhd_wl_ioctl_set_intiovar(dhd, "pkt_filter_mode", operation_mode, WLC_SET_VAR, TRUE, 0);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
void
|
||||
dhd_pktfilter_offload_enable(dhd_pub_t * dhd, char *arg, int enable, int master_mode)
|
||||
{
|
||||
|
|
@ -6993,6 +7101,14 @@ dhd_arp_offload_enable(dhd_pub_t * dhd, int arp_enable)
|
|||
{
|
||||
int retcode;
|
||||
|
||||
#ifdef DISABLE_ARP_OFFLOAD_ON_SOFTAP
|
||||
/* IF SoftAP is enabled, do NOT enable ARP Offload */
|
||||
if (dhd->pfaoe_enab && (dhd->op_mode & DHD_FLAG_HOSTAP_MODE) && arp_enable) {
|
||||
DHD_ERROR(("%s: Skip enabling ARP offload when SoftAP is enabled\n", __FUNCTION__));
|
||||
return;
|
||||
}
|
||||
#endif /* DISABLE_ARP_OFFLOAD_ON_SOFTAP */
|
||||
|
||||
if (!dhd->arpol_configured) {
|
||||
/* If arpol is not applied, apply it */
|
||||
dhd_arp_offload_set(dhd, dhd_arp_mode);
|
||||
|
|
@ -7822,7 +7938,7 @@ int dhd_keep_alive_onoff(dhd_pub_t *dhd)
|
|||
{
|
||||
char buf[32] = {0};
|
||||
const char *str;
|
||||
wl_mkeep_alive_pkt_v1_t mkeep_alive_pkt = {0, 0, 0, 0, 0, {0}};
|
||||
wl_mkeep_alive_pkt_v1_t mkeep_alive_pkt;
|
||||
wl_mkeep_alive_pkt_v1_t *mkeep_alive_pktp;
|
||||
int buf_len;
|
||||
int str_len;
|
||||
|
|
@ -7837,6 +7953,7 @@ int dhd_keep_alive_onoff(dhd_pub_t *dhd)
|
|||
str_len = strlen(str);
|
||||
strlcpy(buf, str, sizeof(buf));
|
||||
mkeep_alive_pktp = (wl_mkeep_alive_pkt_v1_t *) (buf + str_len + 1);
|
||||
bzero(&mkeep_alive_pkt, sizeof(mkeep_alive_pkt));
|
||||
mkeep_alive_pkt.period_msec = dhd->conf->keep_alive_period;
|
||||
buf_len = str_len + 1;
|
||||
mkeep_alive_pkt.version = htod16(WL_MKEEP_ALIVE_VERSION_1);
|
||||
|
|
@ -7845,7 +7962,6 @@ int dhd_keep_alive_onoff(dhd_pub_t *dhd)
|
|||
mkeep_alive_pkt.keep_alive_id = 0;
|
||||
mkeep_alive_pkt.len_bytes = 0;
|
||||
buf_len += WL_MKEEP_ALIVE_FIXED_LEN;
|
||||
bzero(mkeep_alive_pkt.data, sizeof(mkeep_alive_pkt.data));
|
||||
/* Keep-alive attributes are set in local variable (mkeep_alive_pkt), and
|
||||
* then memcpy'ed into buffer (mkeep_alive_pktp) since there is no
|
||||
* guarantee that the buffer is properly aligned.
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -17,8 +17,6 @@
|
|||
#define FW_TYPE_ES 5
|
||||
#define FW_TYPE_MFG 6
|
||||
#define FW_TYPE_MINIME 7
|
||||
#define FW_TYPE_G 0
|
||||
#define FW_TYPE_AG 1
|
||||
|
||||
#define FW_PATH_AUTO_SELECT 1
|
||||
#ifdef BCMDHD_MDRIVER
|
||||
|
|
@ -95,6 +93,13 @@ typedef struct country_list {
|
|||
wl_country_t cspec;
|
||||
} country_list_t;
|
||||
|
||||
typedef struct wl_ccode_all {
|
||||
wl_country_t cspec;
|
||||
int32 ww_2g_chan_only;
|
||||
int32 disable_5g_band;
|
||||
int32 disable_6g_band;
|
||||
} wl_ccode_all_t;
|
||||
|
||||
/* mchan_params */
|
||||
#define MCHAN_MAX_NUM 4
|
||||
#define MIRACAST_SOURCE 1
|
||||
|
|
@ -149,15 +154,6 @@ enum in_suspend_mode {
|
|||
SUSPEND_MODE_2 = 2
|
||||
};
|
||||
|
||||
#ifdef TPUT_MONITOR
|
||||
enum data_drop_mode {
|
||||
NO_DATA_DROP = -1,
|
||||
FW_DROP = 0,
|
||||
TXPKT_DROP = 1,
|
||||
XMIT_DROP = 2
|
||||
};
|
||||
#endif
|
||||
|
||||
enum conn_state {
|
||||
CONN_STATE_IDLE = 0,
|
||||
CONN_STATE_CONNECTING = 1,
|
||||
|
|
@ -214,9 +210,12 @@ typedef struct dhd_conf {
|
|||
#endif
|
||||
wl_chip_nv_path_list_ctrl_t nv_by_chip;
|
||||
country_list_t *country_head;
|
||||
char *ccode_all_list;
|
||||
wl_ccode_all_t ccode_all;
|
||||
int ioctl_ver;
|
||||
int band;
|
||||
int bw_cap[2];
|
||||
int mapsta_mode;
|
||||
wl_country_t cspec;
|
||||
uint roam_off;
|
||||
uint roam_off_suspend;
|
||||
|
|
@ -224,6 +223,9 @@ typedef struct dhd_conf {
|
|||
int roam_scan_period[2];
|
||||
int roam_delta[2];
|
||||
int fullroamperiod;
|
||||
#ifdef WL_SCHED_SCAN
|
||||
int max_sched_scan_reqs;
|
||||
#endif /* WL_SCHED_SCAN */
|
||||
uint keep_alive_period;
|
||||
bool rekey_offload;
|
||||
#ifdef ARP_OFFLOAD_SUPPORT
|
||||
|
|
@ -236,6 +238,8 @@ typedef struct dhd_conf {
|
|||
conf_pkt_filter_add_t pkt_filter_add;
|
||||
conf_pkt_filter_del_t pkt_filter_del;
|
||||
char *magic_pkt_filter_add;
|
||||
int magic_pkt_hdr_len;
|
||||
int pkt_filter_cnt_default;
|
||||
#endif
|
||||
int srl;
|
||||
int lrl;
|
||||
|
|
@ -356,13 +360,10 @@ typedef struct dhd_conf {
|
|||
int proptx_maxcnt_5g;
|
||||
#endif /* DYNAMIC_PROPTX_MAXCOUNT */
|
||||
#ifdef TPUT_MONITOR
|
||||
int data_drop_mode;
|
||||
unsigned long net_len;
|
||||
uint tput_monitor_ms;
|
||||
struct osl_timespec tput_ts;
|
||||
unsigned long last_tx;
|
||||
unsigned long last_rx;
|
||||
unsigned long last_net_tx;
|
||||
#ifdef BCMSDIO
|
||||
int32 doflow_tput_thresh;
|
||||
#endif
|
||||
|
|
@ -392,15 +393,14 @@ typedef struct dhd_conf {
|
|||
|
||||
#ifdef BCMSDIO
|
||||
void dhd_conf_get_otp(dhd_pub_t *dhd, bcmsdh_info_t *sdh, si_t *sih);
|
||||
#if defined(HW_OOB) || defined(FORCE_WOWLAN)
|
||||
void dhd_conf_set_hw_oob_intr(bcmsdh_info_t *sdh, struct si_pub *sih);
|
||||
#endif
|
||||
void dhd_conf_set_txglom_params(dhd_pub_t *dhd, bool enable);
|
||||
bool dhd_conf_legacy_otp_chip(dhd_pub_t *dhd);
|
||||
#endif
|
||||
#ifdef BCMPCIE
|
||||
int dhd_conf_get_otp(dhd_pub_t *dhd, si_t *sih);
|
||||
bool dhd_conf_legacy_msi_chip(dhd_pub_t *dhd);
|
||||
#if defined(BCMPCIE_CTO_PREVENTION)
|
||||
bool dhd_conf_legacy_cto_chip(uint16 chip);
|
||||
#endif
|
||||
#endif
|
||||
#ifdef WL_CFG80211
|
||||
bool dhd_conf_legacy_chip_check(dhd_pub_t *dhd);
|
||||
|
|
@ -415,6 +415,7 @@ bool dhd_conf_same_country(dhd_pub_t *dhd, char *buf);
|
|||
int dhd_conf_country(dhd_pub_t *dhd, char *cmd, char *buf);
|
||||
int dhd_conf_get_country(dhd_pub_t *dhd, wl_country_t *cspec);
|
||||
#ifdef CCODE_LIST
|
||||
int dhd_ccode_map_country_all(dhd_pub_t *dhd, wl_country_t *cspec);
|
||||
int dhd_ccode_map_country_list(dhd_pub_t *dhd, wl_country_t *cspec);
|
||||
#endif
|
||||
void dhd_conf_set_wme(dhd_pub_t *dhd, int ifidx, int mode);
|
||||
|
|
@ -427,6 +428,7 @@ int dhd_conf_set_chiprev(dhd_pub_t *dhd, uint chip, uint chiprev);
|
|||
uint dhd_conf_get_chip(void *context);
|
||||
uint dhd_conf_get_chiprev(void *context);
|
||||
int dhd_conf_get_pm(dhd_pub_t *dhd);
|
||||
int dhd_conf_custom_mac(dhd_pub_t *dhd);
|
||||
int dhd_conf_reg2args(dhd_pub_t *dhd, char *cmd, bool set, uint32 index, uint32 *val);
|
||||
int dhd_conf_check_hostsleep(dhd_pub_t *dhd, int cmd, void *buf, int len,
|
||||
int *hostsleep_set, int *hostsleep_val, int *ret);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* Customer code to add GPIO control during WLAN start/stop
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
|
|||
21
drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_custom_hikey.c
Normal file → Executable file
21
drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_custom_hikey.c
Normal file → Executable file
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* Platform Dependent file for Hikey
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
|
|||
21
drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_custom_memprealloc.c
Normal file → Executable file
21
drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_custom_memprealloc.c
Normal file → Executable file
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* Platform Dependent file for usage of Preallocted Memory
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
|
|||
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* Debug/trace/assert driver definitions for Dongle Host Driver.
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
|
|||
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* DHD debug ring API and structures - implementation
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
|
|||
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* DHD debug ring header file - interface
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
|
|||
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* DHD debugability support
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
@ -454,10 +473,6 @@ dhd_dbg_msgtrace_msg_parser(void *event_data)
|
|||
#ifdef SHOW_LOGTRACE
|
||||
#define DATA_UNIT_FOR_LOG_CNT 4
|
||||
|
||||
#if defined(STRICT_GCC_WARNINGS) && defined(__GNUC__)
|
||||
#pragma GCC diagnostic pop
|
||||
#endif
|
||||
|
||||
int
|
||||
replace_percent_p_to_x(char *fmt)
|
||||
{
|
||||
|
|
@ -583,8 +598,19 @@ done:
|
|||
#define LOG_PRINT_CNT_MAX 16u
|
||||
#define EL_MSEC_PER_SEC 1000
|
||||
#ifdef DHD_LOG_PRINT_RATE_LIMIT
|
||||
#define MAX_LOG_PRINT_COUNT 100u
|
||||
#ifdef DHD_DEBUG
|
||||
#undef MAX_LOG_PRINT_COUNT
|
||||
#define MAX_LOG_PRINT_COUNT 50000u
|
||||
#undef LOG_PRINT_THRESH
|
||||
#define LOG_PRINT_THRESH (1u * USEC_PER_SEC)
|
||||
#else /* DHD_DEBUG */
|
||||
#ifndef MAX_LOG_PRINT_COUNT
|
||||
#define MAX_LOG_PRINT_COUNT 5000u
|
||||
#endif /* MAX_LOG_PRINT_COUNT */
|
||||
#ifndef LOG_PRINT_THRESH
|
||||
#define LOG_PRINT_THRESH (1u * USEC_PER_SEC)
|
||||
#endif /* LOG_PRINT_THRESH */
|
||||
#endif /* DHD_DEBUG */
|
||||
#endif
|
||||
#define EL_PARSE_VER "V02"
|
||||
static uint64 verboselog_ts_saved = 0;
|
||||
|
|
@ -2490,6 +2516,7 @@ dhd_dbg_monitor_get_rx_pkts(dhd_pub_t *dhdp, void __user *user_buf,
|
|||
if ((ret = memcpy_s(tmp_rx_pkt, alloc_len, ori_rx_pkt, alloc_len))) {
|
||||
DHD_PKT_MON_UNLOCK(dhdp->dbg->pkt_mon_lock, flags);
|
||||
DHD_ERROR(("%s: failed to copy tmp_rx_pkt ret:%d", __FUNCTION__, ret));
|
||||
ret = -EINVAL;
|
||||
goto exit;
|
||||
}
|
||||
for (i = 0; i < pkt_count; i++) {
|
||||
|
|
@ -2498,6 +2525,7 @@ dhd_dbg_monitor_get_rx_pkts(dhd_pub_t *dhdp, void __user *user_buf,
|
|||
if (!tmp_rx_pkt[i].info.pkt) {
|
||||
DHD_PKT_MON_UNLOCK(dhdp->dbg->pkt_mon_lock, flags);
|
||||
DHD_ERROR(("%s: failed to copy skb", __FUNCTION__));
|
||||
ret = -ENOMEM;
|
||||
goto exit;
|
||||
}
|
||||
}
|
||||
|
|
@ -3374,22 +3402,14 @@ void
|
|||
dhd_dbg_detach(dhd_pub_t *dhdp)
|
||||
{
|
||||
dhd_dbg_t *dbg;
|
||||
#if defined(DHD_DEBUGABILITY_LOG_DUMP_RING) || defined(DHD_DEBUGABILITY_EVENT_RING) || \
|
||||
defined(DHD_PKT_LOGGING_DBGRING)
|
||||
int ring_id;
|
||||
dhd_dbg_ring_t *ring = NULL;
|
||||
#endif /* DHD_DEBUGABILITY_LOG_DUMP_RING || BTLOG ||
|
||||
* DHD_DEBUGABILITY_EVENT_RING || DHD_PKT_LOGGING_DBGRING ||
|
||||
* (DEBUGABILITY && CUSTOMER_HW6)
|
||||
*/
|
||||
|
||||
dbg = dhdp->dbg;
|
||||
if (!dbg) {
|
||||
return;
|
||||
}
|
||||
|
||||
#if defined(DHD_DEBUGABILITY_LOG_DUMP_RING) || defined(DHD_DEBUGABILITY_EVENT_RING) || \
|
||||
defined(DHD_PKT_LOGGING_DBGRING)
|
||||
for (ring_id = DEBUG_RING_ID_INVALID + 1; ring_id < DEBUG_RING_ID_MAX; ring_id++) {
|
||||
if (VALID_RING(dbg->dbg_rings[ring_id].id)) {
|
||||
ring = &dbg->dbg_rings[ring_id];
|
||||
|
|
@ -3408,12 +3428,7 @@ dhd_dbg_detach(dhd_pub_t *dhdp)
|
|||
ring->ring_size = 0;
|
||||
}
|
||||
}
|
||||
|
||||
VMFREE(dhdp->osh, dbg, sizeof(dhd_dbg_t));
|
||||
#endif /* DHD_DEBUGABILITY_LOG_DUMP_RING || BTLOG ||
|
||||
* DHD_DEBUGABILITY_EVENT_RING || DHD_PKT_LOGGING_DBGRING ||
|
||||
* (DEBUGABILITY && CUSTOMER_HW6)
|
||||
*/
|
||||
#ifdef DHD_DEBUGABILITY_LOG_DUMP_RING
|
||||
g_ring_buf.dhd_pub = NULL;
|
||||
#endif /* DHD_DEBUGABILITY_LOG_DUMP_RING */
|
||||
|
|
|
|||
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* DHD debugability header file
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
|
|||
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* DHD debugability Linux os layer
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
@ -524,19 +543,10 @@ int
|
|||
dhd_os_dbg_get_feature(dhd_pub_t *dhdp, int32 *features)
|
||||
{
|
||||
int ret = BCME_OK;
|
||||
#ifdef DEBUGABILITY
|
||||
#ifndef DEBUGABILITY_DISABLE_MEMDUMP
|
||||
struct dhd_conf *conf = dhdp->conf;
|
||||
#endif /* !DEBUGABILITY_DISABLE_MEMDUMP */
|
||||
#endif
|
||||
|
||||
/* XXX : we need to find a way to get the features for dbg */
|
||||
*features = 0;
|
||||
#ifdef DEBUGABILITY
|
||||
#ifndef DEBUGABILITY_DISABLE_MEMDUMP
|
||||
// fix for RequestFirmwareDebugDump issue of VTS
|
||||
if ((conf->chip != BCM4359_CHIP_ID) && (conf->chip != BCM43751_CHIP_ID) &&
|
||||
(conf->chip != BCM43752_CHIP_ID) && (conf->chip != BCM4375_CHIP_ID))
|
||||
*features |= DBG_MEMORY_DUMP_SUPPORTED;
|
||||
#endif /* !DEBUGABILITY_DISABLE_MEMDUMP */
|
||||
if (FW_SUPPORTED(dhdp, logtrace)) {
|
||||
|
|
|
|||
21
drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_event_log_filter.c
Normal file → Executable file
21
drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_event_log_filter.c
Normal file → Executable file
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* Wifi dongle status Filter and Report
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
|
|||
21
drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_event_log_filter.h
Normal file → Executable file
21
drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_event_log_filter.h
Normal file → Executable file
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* Wifi dongle status Filter and Report
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
|
|||
|
|
@ -4,7 +4,26 @@
|
|||
* Flow rings are transmit traffic (=propagating towards antenna) related entities
|
||||
*
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
|
|||
|
|
@ -6,7 +6,26 @@
|
|||
* Provides type definitions and function prototypes used to create, delete and manage flow rings at
|
||||
* high level.
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
|
|||
|
|
@ -307,6 +307,7 @@ dhd_wlan_init_gpio(wifi_adapter_info_t *adapter)
|
|||
adapter->gpio_wl_reg_on = gpio_wl_reg_on;
|
||||
|
||||
#ifdef CUSTOMER_OOB
|
||||
adapter->gpio_wl_host_wake = -1;
|
||||
if (gpio_wl_host_wake >= 0) {
|
||||
err = gpio_request(gpio_wl_host_wake, "bcmdhd");
|
||||
if (err < 0) {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* IP Packet Parser Module.
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
@ -976,9 +995,8 @@ dhd_tcpdata_info_get(dhd_pub_t *dhdp, void *pkt)
|
|||
ip_hdr = ether_hdr + ETHER_HDR_LEN;
|
||||
cur_framelen -= ETHER_HDR_LEN;
|
||||
|
||||
ASSERT(cur_framelen >= IPV4_MIN_HEADER_LEN);
|
||||
if (cur_framelen < IPV4_MIN_HEADER_LEN) {
|
||||
DHD_TRACE(("%s %d: cur_framelen(%d) < IPV4_MIN_HEADER_LEN\n", __FUNCTION__,
|
||||
DHD_ERROR(("%s %d: cur_framelen(%d) < IPV4_MIN_HEADER_LEN\n", __FUNCTION__,
|
||||
__LINE__, cur_framelen));
|
||||
goto exit;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,7 +3,26 @@
|
|||
*
|
||||
* Provides type definitions and function prototypes used to parse ip packet.
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
@ -67,7 +86,7 @@ extern tcp_hdr_flag_t dhd_tcpdata_get_flag(dhd_pub_t *dhdp, void *pkt);
|
|||
#ifndef TCPDATA_INFO_MAXNUM
|
||||
#define TCPDATA_INFO_MAXNUM 40
|
||||
#endif
|
||||
#define TCPDATA_PSH_INFO_MAXNUM (8 * TCPDATA_INFO_MAXNUM)
|
||||
#define TCPDATA_PSH_INFO_MAXNUM (16 * TCPDATA_INFO_MAXNUM)
|
||||
|
||||
#define TCPDATA_INFO_TIMEOUT 5000 /* Remove tcpdata_info if inactive for this time (in ms) */
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* DHD Linux header file (dhd_linux exports for cfg80211 and other components)
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
|
|||
23
drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_linux_exportfs.c
Normal file → Executable file
23
drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_linux_exportfs.c
Normal file → Executable file
|
|
@ -2,7 +2,26 @@
|
|||
* Broadcom Dongle Host Driver (DHD), Linux-specific network interface
|
||||
* Basically selected code segments from usb-cdc.c and usb-rndis.c
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
@ -46,6 +65,7 @@
|
|||
|
||||
#ifdef SHOW_LOGTRACE
|
||||
extern dhd_pub_t* g_dhd_pub;
|
||||
#if defined(DEBUGABILITY) || defined(EWP_ECNTRS_LOGGING) || defined(EWP_RTT_LOGGING)
|
||||
static int dhd_ring_proc_open(struct inode *inode, struct file *file);
|
||||
ssize_t dhd_ring_proc_read(struct file *file, char *buffer, size_t tt, loff_t *loff);
|
||||
|
||||
|
|
@ -123,6 +143,7 @@ exit:
|
|||
}
|
||||
return ret;
|
||||
}
|
||||
#endif /* DEBUGABILITY || EWP_ECNTRS_LOGGING || EWP_RTT_LOGGING */
|
||||
|
||||
void
|
||||
dhd_dbg_ring_proc_create(dhd_pub_t *dhdp)
|
||||
|
|
|
|||
|
|
@ -2,7 +2,26 @@
|
|||
* Broadcom Dongle Host Driver (DHD), Linux-specific network interface
|
||||
* Basically selected code segments from usb-cdc.c and usb-rndis.c
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
@ -35,6 +54,9 @@ extern dhd_pub_t* g_dhd_pub;
|
|||
#define DHD_NAPI_LATENCY_SIZE (sizeof(uint64) * DHD_NUM_NAPI_LATENCY_ROWS)
|
||||
#endif /* DHD_LB_STATS */
|
||||
|
||||
/* latency improvement */
|
||||
#define DHD_LB_ACTIVE_LOW_WATERMARK 3
|
||||
|
||||
void
|
||||
dhd_lb_set_default_cpus(dhd_info_t *dhd)
|
||||
{
|
||||
|
|
@ -1224,7 +1246,8 @@ dhd_lb_rx_napi_dispatch(dhd_pub_t *dhdp)
|
|||
DHD_RX_NAPI_QUEUE_UNLOCK(&dhd->rx_napi_queue.lock, flags);
|
||||
|
||||
/* If sysfs lb_rxp_active is not set, schedule on current cpu */
|
||||
if (!atomic_read(&dhd->lb_rxp_active))
|
||||
if (!atomic_read(&dhd->lb_rxp_active) ||
|
||||
(skb_queue_len(&dhd->rx_napi_queue) < DHD_LB_ACTIVE_LOW_WATERMARK))
|
||||
{
|
||||
dhd_napi_schedule(dhd);
|
||||
return;
|
||||
|
|
|
|||
279
drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_linux_pktdump.c
Normal file → Executable file
279
drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_linux_pktdump.c
Normal file → Executable file
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* Packet dump helper functions
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
@ -344,6 +363,38 @@ typedef struct hdr_fmt {
|
|||
struct bcmudp_hdr udph;
|
||||
} PACKED_STRUCT hdr_fmt_t;
|
||||
|
||||
#ifdef DHD_IPV6_DUMP
|
||||
typedef struct ipv6hdr_fmt {
|
||||
struct ipv6_hdr ip6h;
|
||||
struct bcmudp_hdr udph;
|
||||
} PACKED_STRUCT ipv6hdr_fmt_t;
|
||||
|
||||
typedef struct dhcp6_fmt {
|
||||
struct ipv6_hdr iph;
|
||||
struct bcmudp_hdr udph;
|
||||
uint8 msgtype;
|
||||
} PACKED_STRUCT dhcp6_fmt_t;
|
||||
|
||||
typedef struct icmpv6 {
|
||||
uint8 icmp6_type;
|
||||
uint8 icmp6_code;
|
||||
uint16 icmp6_cksum;
|
||||
uint16 id;
|
||||
uint16 seq;
|
||||
} PACKED_STRUCT icmpv6_hdr_t;
|
||||
|
||||
typedef struct dns6_fmt {
|
||||
struct ipv6_hdr ip6h;
|
||||
struct bcmudp_hdr udph;
|
||||
uint16 id;
|
||||
uint16 flags;
|
||||
uint16 qdcount;
|
||||
uint16 ancount;
|
||||
uint16 nscount;
|
||||
uint16 arcount;
|
||||
} PACKED_STRUCT dns6_fmt_t;
|
||||
#endif /* DHD_IPV6_DUMP */
|
||||
|
||||
msg_eapol_t
|
||||
dhd_is_4way_msg(uint8 *pktdata)
|
||||
{
|
||||
|
|
@ -437,7 +488,7 @@ dhd_dump_pkt(dhd_pub_t *dhdp, int ifidx, uint8 *pktdata, uint32 pktlen,
|
|||
return;
|
||||
}
|
||||
|
||||
#if defined(BCMPCIE) && defined(DHD_PKT_LOGGING)
|
||||
#if 0 // defined(BCMPCIE) && defined(DHD_PKT_LOGGING)
|
||||
if (tx && !pkthash && !pktfate) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -1139,6 +1190,64 @@ static char dhcp_types[MAX_DHCP_TYPES_STR][10] = {
|
|||
#define DHCP_TYPES_STR(type) ((type < MAX_DHCP_TYPES_STR) ? \
|
||||
(dhcp_types[type]) : "UNKNOWN_DHCP_TYPE")
|
||||
|
||||
#ifdef DHD_IPV6_DUMP
|
||||
#define DHCP6_PRINT(str) \
|
||||
do { \
|
||||
if (tx) { \
|
||||
DHD_PKTDUMP_MEM((str " %s[%s] [TX] -" TXFATE_FMT "\n", \
|
||||
typestr, ifname, \
|
||||
TX_PKTHASH(pkthash), TX_FATE(pktfate))); \
|
||||
} else { \
|
||||
DHD_PKTDUMP_MEM((str " %s[%s] [RX]\n", \
|
||||
typestr, ifname)); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define ICMPv6_PRINT(str) \
|
||||
do { \
|
||||
if (tx) { \
|
||||
DHD_PKTDUMP_MEM((str " %s[%s] [TX] -" TXFATE_FMT "\n", \
|
||||
typestr, ifname, \
|
||||
TX_PKTHASH(pkthash), TX_FATE(pktfate))); \
|
||||
} else { \
|
||||
if (msgtype == ICMPV6_PKT_TYPE_RA) { \
|
||||
DHD_PKTDUMP_MEM((str " %s[%s] flags 0x%x [RX]\n", \
|
||||
typestr, ifname, icmp6_ra_flag)); \
|
||||
} else { \
|
||||
DHD_PKTDUMP_MEM((str " %s[%s] [RX]\n", \
|
||||
typestr, ifname)); \
|
||||
} \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define MAX_DHCP6_TYPES_STR 11
|
||||
#define MAX_DHCP6_TYPES_STAT 11
|
||||
|
||||
static char dhcp6_types[MAX_DHCP6_TYPES_STR][10] = {
|
||||
"NA", "SOLICIT", "ADVERTISE", "REQUEST", "CONFIRM",
|
||||
"RENEW", "REBIND", "REPLY", "RELEASE", "DECLINE", "RECONFIG"
|
||||
};
|
||||
#define DHCP6_TYPES_STR(type) ((type < MAX_DHCP6_TYPES_STR) ? \
|
||||
(dhcp6_types[type]) : "UNKNOWN_DHCP_TYPE")
|
||||
|
||||
static const int dhcp6_types_stat[MAX_DHCP6_TYPES_STAT] = {
|
||||
ST(INVALID), ST(SOLICIT), ST(ADVERTISE), ST(REQUEST),
|
||||
ST(CONFIRM), ST(RENEW), ST(REBIND), ST(REPLY),
|
||||
ST(RELEASE), ST(DECLINE), ST(RECONFIGURE)
|
||||
};
|
||||
#define DHCP6_TYPES_STAT(type) ((type < MAX_DHCP6_TYPES_STAT) ? \
|
||||
(dhcp6_types_stat[type]) : ST(INVALID))
|
||||
|
||||
#define MAX_ICMPV6_TYPES_STAT 10
|
||||
static const int icmpv6_types_stat[MAX_ICMPV6_TYPES_STAT] = {
|
||||
ST(INVALID), ST(ECHO_REQ), ST(ECHO_REPLY), ST(MULTI_QUERY),
|
||||
ST(MULTI_REPORT), ST(MULTI_DONE), ST(ROUTER_SOLIC), ST(ROUTER_ADV),
|
||||
ST(NEIGHBOR_SOLIC), ST(NEIGHBOR_ADV)
|
||||
};
|
||||
#define ICMPV6_TYPES_STAT(type) ((type < MAX_ICMPV6_TYPES_STAT) ? \
|
||||
(icmpv6_types_stat[type]) : ST(INVALID))
|
||||
#endif /* DHD_IPV6_DUMP */
|
||||
|
||||
#ifdef DHD_STATUS_LOGGING
|
||||
#define MAX_DHCP_TYPES_STAT 9
|
||||
#define DHCP_TYPES_STAT(type) ((type < MAX_DHCP_TYPES_STAT) ? \
|
||||
|
|
@ -1565,6 +1674,172 @@ dhd_dns_dump(dhd_pub_t *dhdp, int ifidx, uint8 *pktdata, bool tx,
|
|||
}
|
||||
#endif /* DHD_DNS_DUMP */
|
||||
|
||||
#ifdef DHD_IPV6_DUMP
|
||||
void
|
||||
dhd_dhcp6_dump(dhd_pub_t *dhdp, int ifidx, uint8 *pktdata, bool tx,
|
||||
uint32 *pkthash, uint16 *pktfate)
|
||||
{
|
||||
dhcp6_fmt_t *b = (dhcp6_fmt_t *)&pktdata[ETHER_HDR_LEN];
|
||||
char *ifname = NULL, *typestr = NULL;
|
||||
uint8 msgtype;
|
||||
bool cond;
|
||||
|
||||
ifname = dhd_ifname(dhdp, ifidx);
|
||||
msgtype = ntoh16(b->msgtype);
|
||||
cond = (tx && pktfate) ? FALSE : TRUE;
|
||||
|
||||
/* only handle DHCPv6 msgtype from 1 ~ 10 */
|
||||
if (msgtype > 10)
|
||||
return;
|
||||
|
||||
typestr = DHCP6_TYPES_STR(msgtype);
|
||||
DHD_STATLOG_DATA(dhdp, DHCP6_TYPES_STAT(msgtype),
|
||||
ifidx, tx, cond);
|
||||
DHCP6_PRINT("DHCPv6");
|
||||
return;
|
||||
}
|
||||
|
||||
void
|
||||
dhd_dns6_dump(dhd_pub_t *dhdp, int ifidx, uint8 *pktdata, bool tx,
|
||||
uint32 *pkthash, uint16 *pktfate)
|
||||
{
|
||||
dns6_fmt_t *dns6h = (dns6_fmt_t *)&pktdata[ETHER_HDR_LEN];
|
||||
uint16 flags, opcode, id;
|
||||
char *ifname;
|
||||
bool cond, dump_enabled;
|
||||
|
||||
ifname = dhd_ifname(dhdp, ifidx);
|
||||
cond = (tx && pktfate) ? FALSE : TRUE;
|
||||
dump_enabled = dhd_dump_pkt_enabled(dhdp);
|
||||
flags = hton16(dns6h->flags);
|
||||
opcode = GET_DNS_OPCODE(flags);
|
||||
id = hton16(dns6h->id);
|
||||
if (GET_DNS_QR(flags)) {
|
||||
/* Response */
|
||||
DHD_STATLOG_DATA(dhdp, ST(DNS_RESP), ifidx, tx, cond);
|
||||
DNS_RESP_PRINT("DNS6 RESPONSE");
|
||||
} else {
|
||||
/* Request */
|
||||
DHD_STATLOG_DATA(dhdp, ST(DNS_QUERY), ifidx, tx, cond);
|
||||
DNS_REQ_PRINT("DNS6 REQUEST");
|
||||
}
|
||||
}
|
||||
|
||||
char*
|
||||
icmpv6_types(uint8 type)
|
||||
{
|
||||
switch (type) {
|
||||
case ICMPV6_PKT_TYPE_ECHO_REQ:
|
||||
return "Echo Request";
|
||||
case ICMPV6_PKT_TYPE_ECHO_REPLY:
|
||||
return "Echo Reply";
|
||||
case ICMPV6_PKT_TYPE_MULTI_LST_QUERY:
|
||||
return "Multicast Listener Query";
|
||||
case ICMPV6_PKT_TYPE_MULTI_LST_REPORT:
|
||||
return "Multicast Listener Report";
|
||||
case ICMPV6_PKT_TYPE_MULTI_LST_DONE:
|
||||
return "Multicast Listener Done";
|
||||
case ICMPV6_PKT_TYPE_RS:
|
||||
return "Router Solicitation";
|
||||
case ICMPV6_PKT_TYPE_RA:
|
||||
return "Router Advertisement";
|
||||
case ICMPV6_PKT_TYPE_NS:
|
||||
return "Neighbor Solicitation";
|
||||
case ICMPV6_PKT_TYPE_NA:
|
||||
return "Neighbor Advertisement";
|
||||
default:
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
dhd_icmpv6_dump(dhd_pub_t *dhdp, int ifidx, uint8 *pktdata, bool tx,
|
||||
uint32 *pkthash, uint16 *pktfate)
|
||||
{
|
||||
struct ipv6_hdr *ip6h = (struct ipv6_hdr *)&pktdata[ETHER_HDR_LEN];
|
||||
struct icmp6_hdr *icmpv6;
|
||||
char *ifname = NULL, *typestr = NULL;
|
||||
uint8 icmp6_ra_flag;
|
||||
uint8 msgtype;
|
||||
bool cond;
|
||||
|
||||
uint8 nexthdr = ip6h->nexthdr;
|
||||
|
||||
if (nexthdr != ICMPV6_HEADER_TYPE)
|
||||
return;
|
||||
|
||||
icmpv6 = (struct icmp6_hdr *) ((uint8 *)ip6h + sizeof(struct ipv6_hdr));
|
||||
ifname = dhd_ifname(dhdp, ifidx);
|
||||
msgtype = icmpv6->icmp6_type;
|
||||
cond = (tx && pktfate) ? FALSE : TRUE;
|
||||
typestr = icmpv6_types(msgtype);
|
||||
|
||||
/* only handle ICMPv6 msgtype from 128 ~ 136 */
|
||||
if (!typestr)
|
||||
return;
|
||||
|
||||
if (msgtype == ICMPV6_PKT_TYPE_RA) {
|
||||
/* check IPv6 configuration is stateless or stateful DHCPv6 */
|
||||
icmp6_ra_flag = *((uint8 *)ip6h + sizeof(struct ipv6_hdr) + ICMPV6_RA_FLAG_OFFSET);
|
||||
}
|
||||
|
||||
DHD_STATLOG_DATA(dhdp, ICMPV6_TYPES_STAT(msgtype - 127),
|
||||
ifidx, tx, cond);
|
||||
ICMPv6_PRINT("ICMPv6");
|
||||
return;
|
||||
}
|
||||
|
||||
bool
|
||||
dhd_check_dhcp6(uint8 *pktdata, uint32 plen)
|
||||
{
|
||||
ipv6hdr_fmt_t *b = (ipv6hdr_fmt_t *)&pktdata[ETHER_HDR_LEN];
|
||||
struct ipv6_hdr *ip6h = &b->ip6h;
|
||||
|
||||
/* check header length */
|
||||
if (plen <= IPV6_MIN_HLEN) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (IPV6_PROT(ip6h) != IP_PROT_UDP) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* check UDP port for bootp (546, 547) */
|
||||
if (b->udph.src_port != htons(DHCP6_PORT_SERVER) &&
|
||||
b->udph.src_port != htons(DHCP6_PORT_CLIENT) &&
|
||||
b->udph.dst_port != htons(DHCP6_PORT_SERVER) &&
|
||||
b->udph.dst_port != htons(DHCP6_PORT_CLIENT)) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool
|
||||
dhd_check_dns6(uint8 *pktdata, uint32 plen)
|
||||
{
|
||||
ipv6hdr_fmt_t *b = (ipv6hdr_fmt_t *)&pktdata[ETHER_HDR_LEN];
|
||||
struct ipv6_hdr *ip6h = &b->ip6h;
|
||||
|
||||
/* check header length */
|
||||
if (plen <= IPV6_MIN_HLEN) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (IPV6_PROT(ip6h) != IP_PROT_UDP) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* check UDP port for DNS */
|
||||
if (b->udph.src_port != hton16(UDP_PORT_DNS) &&
|
||||
b->udph.dst_port != hton16(UDP_PORT_DNS)) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
#endif /* DHD_IPV6_DUMP */
|
||||
|
||||
#ifdef DHD_TRX_DUMP
|
||||
void
|
||||
dhd_trx_pkt_dump(dhd_pub_t *dhdp, int ifidx, uint8 *pktdata, uint32 pktlen, bool tx)
|
||||
|
|
|
|||
34
drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_linux_pktdump.h
Normal file → Executable file
34
drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_linux_pktdump.h
Normal file → Executable file
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* Header file for the Packet dump helper functions
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
@ -55,7 +74,8 @@ enum pkt_type {
|
|||
PKT_TYPE_DNS = 4,
|
||||
PKT_TYPE_ARP = 5,
|
||||
PKT_TYPE_EAP = 6,
|
||||
PKT_TYPE_IGMP = 7
|
||||
PKT_TYPE_DHCP6 = 7,
|
||||
PKT_TYPE_DNS6 = 8
|
||||
};
|
||||
|
||||
#ifdef WL_CFGVENDOR_CUST_ADVLOG
|
||||
|
|
@ -147,6 +167,16 @@ extern void dhd_dump_eapol_message(dhd_pub_t *dhd, int ifidx,
|
|||
static INLINE void dhd_dump_eapol_message(dhd_pub_t *dhd, int ifidx,
|
||||
uint8 *pktdata, uint32 pktlen, bool tx, uint32 *pkthash, uint16 *pktfate) { }
|
||||
#endif /* DHD_8021X_DUMP */
|
||||
#ifdef DHD_IPV6_DUMP
|
||||
extern void dhd_dhcp6_dump(dhd_pub_t *dhdp, int ifidx, uint8 *pktdata, bool tx,
|
||||
uint32 *pkthash, uint16 *pktfate);
|
||||
extern void dhd_icmpv6_dump(dhd_pub_t *dhdp, int ifidx, uint8 *pktdata, bool tx,
|
||||
uint32 *pkthash, uint16 *pktfate);
|
||||
extern void dhd_dns6_dump(dhd_pub_t *dhdp, int ifidx, uint8 *pktdata, bool tx,
|
||||
uint32 *pkthash, uint16 *pktfate);
|
||||
extern bool dhd_check_dhcp6(uint8 *pktdata, uint32 plen);
|
||||
extern bool dhd_check_dns6(uint8 *pktdata, uint32 plen);
|
||||
#endif
|
||||
extern bool dhd_check_ip_prot(uint8 *pktdata, uint16 ether_type);
|
||||
extern bool dhd_check_arp(uint8 *pktdata, uint16 ether_type);
|
||||
extern bool dhd_check_dhcp(uint8 *pktdata);
|
||||
|
|
|
|||
24
drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_linux_platdev.c
Normal file → Executable file
24
drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_linux_platdev.c
Normal file → Executable file
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* Linux platform device for DHD WLAN adapter
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
@ -261,7 +280,7 @@ int wifi_platform_set_power(wifi_adapter_info_t *adapter, bool on, unsigned long
|
|||
goto fail;
|
||||
}
|
||||
#else
|
||||
if (!adapter || !adapter->wifi_plat_data) {
|
||||
if (!adapter->wifi_plat_data) {
|
||||
err = -EINVAL;
|
||||
goto fail;
|
||||
}
|
||||
|
|
@ -724,6 +743,7 @@ void wifi_ctrlfunc_unregister_drv(void)
|
|||
#endif /* !defined(CONFIG_DTS) */
|
||||
|
||||
#if defined(CUSTOMER_HW)
|
||||
if (adapter)
|
||||
dhd_wlan_deinit_plat_data(adapter);
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* DHD Linux header file - contains private structure definition of the Linux specific layer
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
@ -52,6 +71,9 @@
|
|||
#include <bcmmsgbuf.h>
|
||||
#include <dhd_flowring.h>
|
||||
#endif /* PCIE_FULL_DONGLE */
|
||||
#if defined(DHD_HWTSTAMP) && (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 30))
|
||||
#include <linux/net_tstamp.h>
|
||||
#endif /* defined(DHD_HWTSTAMP) && (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 30)) */
|
||||
|
||||
#ifdef RX_PKT_POOL
|
||||
#define RX_PKTPOOL_RESCHED_DELAY_MS 500u
|
||||
|
|
@ -441,6 +463,9 @@ typedef struct dhd_info {
|
|||
osl_atomic_t dump_status;
|
||||
struct work_struct dhd_dump_proc_work;
|
||||
#endif /* DHD_FILE_DUMP_EVENT && DHD_FW_COREDUMP */
|
||||
#if defined(DHD_HWTSTAMP) && (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 30))
|
||||
struct hwtstamp_config stmpconf;
|
||||
#endif /* defined(DHD_HWTSTAMP) && (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 30)) */
|
||||
} dhd_info_t;
|
||||
|
||||
/** priv_link is the link between netdev and the dhdif and dhd_info structs. */
|
||||
|
|
@ -520,7 +545,7 @@ extern uint sssr_enab;
|
|||
extern uint fis_enab;
|
||||
#endif /* DHD_SSSR_DUMP */
|
||||
|
||||
#if defined(ANDROID_VERSION) && (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0))
|
||||
#if (ANDROID_VERSION > 0) && (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0))
|
||||
#define WAKELOCK_BACKPORT
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,26 @@
|
|||
* Broadcom Dongle Host Driver (DHD),
|
||||
* Linux-specific network interface for receive(rx) path
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
@ -338,18 +357,23 @@ dhd_rx_frame(dhd_pub_t *dhdp, int ifidx, void *pktbuf, int numpkt, uint8 chan)
|
|||
if (dev_ingress_queue(ifp->net)) {
|
||||
qdisc = dev_ingress_queue(ifp->net)->qdisc_sleeping;
|
||||
if (qdisc != NULL && (qdisc->flags & TCQ_F_INGRESS)) {
|
||||
#ifdef CONFIG_NET_CLS_ACT
|
||||
if (
|
||||
#if defined(CONFIG_NET_XGRESS)
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 6, 0))
|
||||
(ifp->net->tcx_ingress != NULL) ||
|
||||
#endif /* LINUX_VERSION >= 6.6.0 */
|
||||
#elif defined(CONFIG_NET_CLS_ACT)
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0))
|
||||
if (ifp->net->miniq_ingress != NULL)
|
||||
(ifp->net->miniq_ingress != NULL) ||
|
||||
#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0))
|
||||
if (ifp->net->ingress_cl_list != NULL)
|
||||
(ifp->net->ingress_cl_list != NULL) ||
|
||||
#endif /* LINUX_VERSION >= 4.2.0 */
|
||||
{
|
||||
#endif /* CONFIG_NET_CLS_ACT */
|
||||
0) {
|
||||
dhd_gro_enable = FALSE;
|
||||
DHD_TRACE(("%s: disable sw gro because of"
|
||||
" qdisc rx traffic control\n", __FUNCTION__));
|
||||
}
|
||||
#endif /* CONFIG_NET_CLS_ACT */
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -686,7 +710,7 @@ dhd_rx_frame(dhd_pub_t *dhdp, int ifidx, void *pktbuf, int numpkt, uint8 chan)
|
|||
#endif /* PCIE_FULL_DONGLE */
|
||||
#endif /* BCM_ROUTER_DHD */
|
||||
#ifdef DHD_POST_EAPOL_M1_AFTER_ROAM_EVT
|
||||
if (IS_STA_IFACE(ndev_to_wdev(ifp->net)) &&
|
||||
if ((IS_STA_IFACE(ndev_to_wdev(ifp->net)) || (IS_P2P_GC(ndev_to_wdev(ifp->net)))) &&
|
||||
(ifp->recv_reassoc_evt == TRUE) && (ifp->post_roam_evt == FALSE) &&
|
||||
(dhd_is_4way_msg((char *)(skb->data)) == EAPOL_4WAY_M1)) {
|
||||
DHD_ERROR(("%s: Reassoc is in progress. "
|
||||
|
|
@ -899,10 +923,11 @@ dhd_rx_frame(dhd_pub_t *dhdp, int ifidx, void *pktbuf, int numpkt, uint8 chan)
|
|||
}
|
||||
|
||||
#ifdef SENDPROB
|
||||
if (dhdp->wl_event_enabled ||
|
||||
if ((dhdp->wl_event_enabled) || (WLC_E_ESCAN_RESULT == event_type) ||
|
||||
(dhdp->recv_probereq && (event.event_type == WLC_E_PROBREQ_MSG)))
|
||||
#else
|
||||
if (dhdp->wl_event_enabled)
|
||||
/* always send up WLC_E_ESCAN_RESULT for WL utility */
|
||||
if ((dhdp->wl_event_enabled) || (WLC_E_ESCAN_RESULT == event_type))
|
||||
#endif
|
||||
{
|
||||
#ifdef DHD_USE_STATIC_CTRLBUF
|
||||
|
|
|
|||
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* Expose some of the kernel scheduler routines
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
|
|||
21
drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_linux_sock_qos.h
Normal file → Executable file
21
drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_linux_sock_qos.h
Normal file → Executable file
|
|
@ -4,7 +4,26 @@
|
|||
* Provides type definitions and function prototypes to call into
|
||||
* DHD's QOS on Socket Flow module.
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
|
|||
|
|
@ -2,7 +2,26 @@
|
|||
* Broadcom Dongle Host Driver (DHD),
|
||||
* Linux-specific network interface for transmit(tx) path
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
@ -399,6 +418,16 @@ BCMFASTPATH(__dhd_sendpkt)(dhd_pub_t *dhdp, int ifidx, void *pktbuf)
|
|||
|
||||
#ifdef PROP_TXSTATUS
|
||||
if (dhd_wlfc_is_supported(dhdp)) {
|
||||
unsigned long flags;
|
||||
|
||||
DHD_GENERAL_LOCK(dhdp, flags);
|
||||
if (ifp->del_in_progress) {
|
||||
DHD_GENERAL_UNLOCK(dhdp, flags);
|
||||
PKTCFREE(dhdp->osh, pktbuf, TRUE);
|
||||
return -ENODEV;
|
||||
}
|
||||
DHD_GENERAL_UNLOCK(dhdp, flags);
|
||||
|
||||
/* store the interface ID */
|
||||
DHD_PKTTAG_SETIF(PKTTAG(pktbuf), ifidx);
|
||||
|
||||
|
|
@ -572,13 +601,14 @@ BCMFASTPATH(dhd_start_xmit)(struct sk_buff *skb, struct net_device *net)
|
|||
int cpuid = 0;
|
||||
int prio = 0;
|
||||
#endif /* DHD_MQ && DHD_MQ_STATS */
|
||||
#ifndef DHD_TCP_PACING_SHIFT
|
||||
#if defined(BCMPCIE) && defined(DHD_VSDB_SKIP_ORPHAN)
|
||||
#if defined(WL_CFG80211)
|
||||
struct bcm_cfg80211 *cfg = wl_get_cfg(net);
|
||||
#endif /* (BCMPCIE) && (DHD_VSDB_SKIP_ORPHAN) */
|
||||
#endif /* DHD_TCP_PACING_SHIFT */
|
||||
#endif /* defined(WL_CFG80211) */
|
||||
|
||||
DHD_TRACE(("%s: Enter\n", __FUNCTION__));
|
||||
#if defined(WL_CFG80211)
|
||||
UNUSED_PARAMETER(cfg);
|
||||
#endif /* defined(WL_CFG80211) */
|
||||
|
||||
#if defined(DHD_MQ) && defined(DHD_MQ_STATS)
|
||||
qidx = skb_get_queue_mapping(skb);
|
||||
|
|
@ -707,18 +737,6 @@ BCMFASTPATH(dhd_start_xmit)(struct sk_buff *skb, struct net_device *net)
|
|||
PKTSETLEN(dhd->pub.osh, skb, length);
|
||||
}
|
||||
|
||||
#ifdef TPUT_MONITOR
|
||||
if (dhd->pub.conf->tput_monitor_ms) {
|
||||
dhd_os_sdlock_txq(&dhd->pub);
|
||||
dhd->pub.conf->net_len += PKTLEN(dhd->pub.osh, skb);
|
||||
dhd_os_sdunlock_txq(&dhd->pub);
|
||||
if ((dhd->pub.conf->data_drop_mode == XMIT_DROP) &&
|
||||
(PKTLEN(dhd->pub.osh, skb) > 500)) {
|
||||
dev_kfree_skb(skb);
|
||||
return NETDEV_TX_OK;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
/* Make sure there's enough room for any header */
|
||||
#if !defined(BCM_ROUTER_DHD)
|
||||
if (skb_cow(skb, (dhd->pub.hdrlen + htsfdlystat_sz))) {
|
||||
|
|
@ -868,9 +886,9 @@ BCMFASTPATH(dhd_start_xmit)(struct sk_buff *skb, struct net_device *net)
|
|||
sk_pacing_shift_update(skb->sk, DHD_DEFAULT_TCP_PACING_SHIFT);
|
||||
}
|
||||
#else
|
||||
#if defined(BCMPCIE) && defined(DHD_VSDB_SKIP_ORPHAN)
|
||||
#if defined(BCMPCIE) && defined(DHD_VSDB_SKIP_ORPHAN) && defined(WL_CFG80211)
|
||||
if (!cfg->vsdb_mode)
|
||||
#endif /* (BCMPCIE) && (DHD_VSDB_SKIP_ORPHAN) */
|
||||
#endif /* (BCMPCIE) && (DHD_VSDB_SKIP_ORPHAN) && defined(WL_CFG80211) */
|
||||
skb_orphan(skb);
|
||||
#endif /* LINUX_VERSION_CODE >= 4.19.0 && DHD_TCP_PACING_SHIFT */
|
||||
|
||||
|
|
@ -1194,6 +1212,13 @@ dhd_handle_pktdata(dhd_pub_t *dhdp, int ifidx, void *pkt, uint8 *pktdata, uint32
|
|||
if (dhd_check_icmpv6(pktdata, pktlen)) {
|
||||
pkt_type = PKT_TYPE_ICMPV6;
|
||||
}
|
||||
#ifdef DHD_IPV6_DUMP
|
||||
else if (dhd_check_dhcp6(pktdata, pktlen)) {
|
||||
pkt_type = PKT_TYPE_DHCP6;
|
||||
} else if (dhd_check_dns6(pktdata, pktlen)) {
|
||||
pkt_type = PKT_TYPE_DNS6;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else if (dhd_check_arp(pktdata, ether_type)) {
|
||||
pkt_type = PKT_TYPE_ARP;
|
||||
|
|
@ -1284,6 +1309,17 @@ dhd_handle_pktdata(dhd_pub_t *dhdp, int ifidx, void *pkt, uint8 *pktdata, uint32
|
|||
case PKT_TYPE_EAP:
|
||||
dhd_send_supp_eap(dhdp, ifidx, pktdata, pktlen, tx, pktfate);
|
||||
break;
|
||||
#ifdef DHD_IPV6_DUMP
|
||||
case PKT_TYPE_ICMPV6:
|
||||
dhd_icmpv6_dump(dhdp, ifidx, pktdata, tx, &pkthash, pktfate);
|
||||
break;
|
||||
case PKT_TYPE_DHCP6:
|
||||
dhd_dhcp6_dump(dhdp, ifidx, pktdata, tx, &pkthash, pktfate);
|
||||
break;
|
||||
case PKT_TYPE_DNS6:
|
||||
dhd_dns6_dump(dhdp, ifidx, pktdata, tx, &pkthash, pktfate);
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,26 @@
|
|||
* Broadcom Dongle Host Driver (DHD),
|
||||
* Linux-specific network interface for transmit(tx) path
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
|
|||
|
|
@ -2,7 +2,26 @@
|
|||
* Broadcom Dongle Host Driver (DHD), Generic work queue framework
|
||||
* Generic interface to handle dhd deferred work events
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
|
|||
|
|
@ -2,7 +2,26 @@
|
|||
* Broadcom Dongle Host Driver (DHD), Generic work queue framework
|
||||
* Generic interface to handle dhd deferred work events
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
|
|||
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* log_dump - debugability support for dumping logs to file
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
@ -1689,6 +1708,13 @@ dhd_log_dump_deinit(dhd_pub_t *dhd)
|
|||
|
||||
BCM_REFERENCE(ring);
|
||||
|
||||
#if defined(DHD_EVENT_LOG_FILTER)
|
||||
/* XXX deinit filter first, because filter use buffer which alloced by log dump */
|
||||
if (dhd->event_log_filter) {
|
||||
dhd_event_log_filter_deinit(dhd);
|
||||
}
|
||||
#endif /* DHD_EVENT_LOG_FILTER */
|
||||
|
||||
if (dhd->concise_dbg_buf) {
|
||||
MFREE(dhd->osh, dhd->concise_dbg_buf, CONCISE_DUMP_BUFLEN);
|
||||
dhd->concise_dbg_buf = NULL;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* log_dump - debugability support for dumping logs to file - header file
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
@ -49,7 +68,7 @@
|
|||
#define DHD_LOG_DUMP_MAX_TEMP_BUFFER_SIZE 512
|
||||
#define DHD_LOG_DUMP_MAX_TAIL_FLUSH_SIZE (80 * 1024)
|
||||
#define DHD_LOG_DUMP_TS_MULTIPLIER_VALUE 60
|
||||
#define DHD_LOG_DUMP_TS_FMT_YYMMDDHHMMSSMSMS "%02d-%02d-%02d/%02d:%02d:%02d.%04lu"
|
||||
#define DHD_LOG_DUMP_TS_FMT_YYMMDDHHMMSSMSMS "%02d%02d%02d%02d%02d%02d%04lu"
|
||||
#define DHD_LOG_DUMP_TS_FMT_YYMMDDHHMMSS "%02d%02d%02d%02d%02d%02d"
|
||||
#define DHD_DEBUG_DUMP_TYPE "debug_dump"
|
||||
#define DEBUG_DUMP_TRIGGER_INTERVAL_SEC 4
|
||||
|
|
|
|||
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* DHD debugability support
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
|
|||
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* DHD debugability header file
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
|
|||
|
|
@ -3,7 +3,26 @@
|
|||
* Provides type definitions and function prototypes used to link the
|
||||
* DHD OS, bus, and protocol modules.
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
@ -2825,6 +2844,10 @@ dhd_pktid_map_reset_ioctl(dhd_pub_t *dhd, dhd_pktid_map_handle_t *handle)
|
|||
uint32 map_items;
|
||||
unsigned long flags;
|
||||
|
||||
if (handle == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
map = (dhd_pktid_map_t *)handle;
|
||||
DHD_PKTID_LOCK(map->pktid_lock, flags);
|
||||
|
||||
|
|
@ -3318,6 +3341,10 @@ dhd_pktid_map_reset(dhd_pub_t *dhd, pktlists_t *handle)
|
|||
{
|
||||
osl_t *osh = dhd->osh;
|
||||
|
||||
if (handle == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (handle->ctrl_pkt_list) {
|
||||
PKTLIST_FINI(handle->ctrl_pkt_list);
|
||||
MFREE(osh, handle->ctrl_pkt_list, sizeof(PKT_LIST));
|
||||
|
|
@ -3639,7 +3666,7 @@ dhd_prot_attach(dhd_pub_t *dhd)
|
|||
goto fail;
|
||||
|
||||
prot->pktid_tx_map = DHD_NATIVE_TO_PKTID_INIT(dhd, MAX_PKTID_TX);
|
||||
if (prot->pktid_rx_map == NULL)
|
||||
if (prot->pktid_tx_map == NULL)
|
||||
goto fail;
|
||||
|
||||
#ifdef IOCTLRESP_USE_CONSTMEM
|
||||
|
|
@ -5467,11 +5494,13 @@ BCMFASTPATH(dhd_prot_rxbuf_post)(dhd_pub_t *dhd, uint16 count, bool use_rsv_pkti
|
|||
pktlen = (uint32 *)((uint8 *)pktbuf_pa + sizeof(dmaaddr_t) * prot->rx_buf_burst);
|
||||
|
||||
for (i = 0; i < count; i++) {
|
||||
if (
|
||||
#if defined(DHD_LB_RXP)
|
||||
/* First try to dequeue from emergency queue which will be filled
|
||||
* during rx flow control.
|
||||
*/
|
||||
p = dhd_rx_emerge_dequeue(dhd);
|
||||
if ((p == NULL) &&
|
||||
((p = dhd_rx_emerge_dequeue(dhd)) == NULL) &&
|
||||
#endif /* DHD_LB_RXP */
|
||||
((p = PKTGET(dhd->osh, prot->rxbufpost_alloc_sz, FALSE)) == NULL)) {
|
||||
dhd->rx_pktgetfail++;
|
||||
DHD_ERROR_RLMT(("%s:%d: PKTGET for rxbuf failed, rx_pktget_fail :%lu\n",
|
||||
|
|
@ -6753,6 +6782,11 @@ BCMFASTPATH(dhd_prot_process_msgbuf_rxcpl)(dhd_pub_t *dhd, int ringtype, uint32
|
|||
DHD_ERROR(("Received non 802.11 packet, "
|
||||
"when monitor mode is enabled\n"));
|
||||
}
|
||||
} else if (dhd->op_mode == DHD_FLAG_MFG_MODE &&
|
||||
msg->flags & BCMPCIE_PKT_FLAGS_FRAME_802_11) {
|
||||
DHD_TRACE(("Monitor disable, PKTFREE\n"));
|
||||
PKTFREE(dhd->osh, pkt, TRUE);
|
||||
continue;
|
||||
#ifdef DBG_PKT_MON
|
||||
} else {
|
||||
if (msg->flags & BCMPCIE_PKT_FLAGS_FRAME_802_11) {
|
||||
|
|
@ -9465,10 +9499,16 @@ dhd_msgbuf_iovar_timeout_dump(dhd_pub_t *dhd)
|
|||
g_assert_type = 2;
|
||||
/* use ASSERT() to trigger panic */
|
||||
ASSERT(0);
|
||||
return;
|
||||
}
|
||||
#endif /* DHD_KERNEL_SCHED_DEBUG && DHD_FW_COREDUMP */
|
||||
|
||||
/* Check the PCIe link status by reading intstatus register */
|
||||
if (!dhd || !dhd->bus || !dhd->bus->sih) {
|
||||
DHD_ERROR(("%s: skip due to invalid parameter\n", __FUNCTION__));
|
||||
ASSERT(0);
|
||||
return;
|
||||
}
|
||||
intstatus = si_corereg(dhd->bus->sih,
|
||||
dhd->bus->sih->buscoreidx, dhd->bus->pcie_mailbox_int, 0, 0);
|
||||
if (intstatus == (uint32)-1) {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* DHD Bus Module for PCIE
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
@ -72,6 +91,9 @@
|
|||
#include <bcmevent.h>
|
||||
#include <dhd_config.h>
|
||||
|
||||
#if IS_ENABLED(CONFIG_PCIEASPM_ROCKCHIP_WIFI_EXTENSION)
|
||||
#include <rk_dhd_pcie_linux.h>
|
||||
#endif /* CONFIG_PCIEASPM_ROCKCHIP_WIFI_EXTENSION */
|
||||
#ifdef BCM_ROUTER_DHD
|
||||
#include <bcmnvram.h>
|
||||
#define STR_END "END\0\0"
|
||||
|
|
@ -184,6 +206,7 @@ extern int host_edl_support;
|
|||
extern int qt_dngl_timeout;
|
||||
#endif /* BCMQT_HW */
|
||||
|
||||
#define CONS_ADDR_SIGNATURE 0xac0ffee
|
||||
/* This can be overwritten by module parameter(dma_ring_indices) defined in dhd_linux.c */
|
||||
uint dma_ring_indices = 0;
|
||||
/* This can be overwritten by module parameter(h2d_phase) defined in dhd_linux.c */
|
||||
|
|
@ -315,6 +338,7 @@ static void dhdpci_bus_rte_log_time_sync_poll(dhd_bus_t *bus);
|
|||
#endif /* DHD_H2D_LOG_TIME_SYNC */
|
||||
|
||||
#define PCI_VENDOR_ID_BROADCOM 0x14e4
|
||||
#define PCI_VENDOR_ID_SYNAPTICS 0x1e01
|
||||
|
||||
#ifdef DHD_PCIE_NATIVE_RUNTIMEPM
|
||||
#define MAX_D3_ACK_TIMEOUT 100
|
||||
|
|
@ -998,9 +1022,6 @@ int dhdpcie_bus_attach(osl_t *osh, dhd_bus_t **bus_ptr,
|
|||
ret = BCME_NORESOURCE;
|
||||
break;
|
||||
}
|
||||
#if defined(GET_OTP_MAC_ENABLE) || defined(GET_OTP_MODULE_NAME)
|
||||
dhd_conf_get_otp(bus->dhd, bus->sih);
|
||||
#endif
|
||||
DHD_ERROR(("%s: making DHD_BUS_DOWN\n", __FUNCTION__));
|
||||
bus->dhd->busstate = DHD_BUS_DOWN;
|
||||
bus->dhd->hostrdy_after_init = TRUE;
|
||||
|
|
@ -1524,18 +1545,17 @@ skip_intstatus_read:
|
|||
}
|
||||
#endif /* DHD_FLOW_RING_STATUS_TRACE */
|
||||
#if defined(PCIE_ISR_THREAD)
|
||||
|
||||
DHD_TRACE(("Calling dhd_bus_dpc() from %s\n", __FUNCTION__));
|
||||
DHD_OS_WAKE_LOCK(bus->dhd);
|
||||
while (dhd_bus_dpc(bus));
|
||||
DHD_OS_WAKE_UNLOCK(bus->dhd);
|
||||
#else
|
||||
#else // defined(PCIE_ISR_THREAD)
|
||||
bus->dpc_sched = TRUE;
|
||||
bus->isr_sched_dpc_time = OSL_LOCALTIME_NS();
|
||||
#ifndef NDIS
|
||||
dhd_sched_dpc(bus->dhd); /* queue DPC now!! */
|
||||
#endif /* !NDIS */
|
||||
#endif /* defined(SDIO_ISR_THREAD) */
|
||||
#endif /* defined(PCIE_ISR_THREAD) */
|
||||
|
||||
DHD_INTR(("%s: Exit Success DPC Queued\n", __FUNCTION__));
|
||||
return TRUE;
|
||||
|
|
@ -1610,7 +1630,7 @@ dhdpcie_config_check(dhd_bus_t *bus)
|
|||
|
||||
for (i = 0; i < DHDPCIE_CONFIG_CHECK_RETRY_COUNT; i++) {
|
||||
val = OSL_PCI_READ_CONFIG(bus->osh, PCI_CFG_VID, sizeof(uint32));
|
||||
if ((val & 0xFFFF) == VENDOR_BROADCOM) {
|
||||
if (((val & 0xFFFF) == VENDOR_BROADCOM) || ((val & 0xFFFF) == VENDOR_SYNAPTICS)) {
|
||||
ret = BCME_OK;
|
||||
break;
|
||||
}
|
||||
|
|
@ -2121,6 +2141,10 @@ dhdpcie_dongle_attach(dhd_bus_t *bus)
|
|||
if (BCM4349_CHIP(chipid) || BCM4350_CHIP(chipid) || BCM4345_CHIP(chipid)) {
|
||||
DHD_ERROR(("Disable CTO\n"));
|
||||
bus->cto_enable = FALSE;
|
||||
}
|
||||
else if (dhd_conf_legacy_cto_chip(chipid)) {
|
||||
DHD_ERROR(("Disable CTO for chip 0x%x\n", chipid));
|
||||
bus->cto_enable = FALSE;
|
||||
} else {
|
||||
DHD_ERROR(("Enable CTO\n"));
|
||||
bus->cto_enable = TRUE;
|
||||
|
|
@ -2151,7 +2175,7 @@ dhdpcie_dongle_attach(dhd_bus_t *bus)
|
|||
|
||||
/* Checking PCIe bus status with reading configuration space */
|
||||
val = OSL_PCI_READ_CONFIG(osh, PCI_CFG_VID, sizeof(uint32));
|
||||
if ((val & 0xFFFF) != VENDOR_BROADCOM) {
|
||||
if (((val & 0xFFFF) != VENDOR_BROADCOM) && ((val & 0xFFFF) != VENDOR_SYNAPTICS)) {
|
||||
DHD_ERROR(("%s : failed to read PCI configuration space!\n", __FUNCTION__));
|
||||
goto fail;
|
||||
}
|
||||
|
|
@ -2380,6 +2404,7 @@ dhdpcie_dongle_attach(dhd_bus_t *bus)
|
|||
break;
|
||||
case BCM4358_CHIP_ID:
|
||||
case BCM4354_CHIP_ID:
|
||||
case BCM4356_CHIP_ID:
|
||||
case BCM43567_CHIP_ID:
|
||||
case BCM43569_CHIP_ID:
|
||||
case BCM4350_CHIP_ID:
|
||||
|
|
@ -4279,6 +4304,78 @@ dhdpcie_download_code_file(struct dhd_bus *bus, char *pfw_path)
|
|||
break;
|
||||
}
|
||||
}
|
||||
#if defined(DHD_DEBUG) && defined(DHD_FW_MEM_CORRUPTION)
|
||||
/* Upload and compare the downloaded code */
|
||||
{
|
||||
unsigned char *ulblock = NULL;
|
||||
unsigned int uploded_len;
|
||||
read_len = 0;
|
||||
uploded_len = 0;
|
||||
bcmerror = BCME_ERROR;
|
||||
ulblock = MALLOC(bus->dhd->osh, MEMBLOCK);
|
||||
if (ulblock == NULL)
|
||||
goto upload_err;
|
||||
/* Close and re-open the image file to reset the file pointer.
|
||||
*/
|
||||
dhd_os_close_image1(bus->dhd, imgbuf);
|
||||
imgbuf = dhd_os_open_image1(bus->dhd, pfw_path);
|
||||
if (imgbuf == NULL) {
|
||||
goto upload_err;
|
||||
}
|
||||
/* Upload image to verify downloaded contents. */
|
||||
offset = bus->dongle_ram_base;
|
||||
offset_end = offset + bus->ramsize;
|
||||
/* Upload image with MEMBLOCK size */
|
||||
while ((len = dhd_os_get_image_block((char*)memptr, MEMBLOCK, imgbuf))) {
|
||||
if (len < 0) {
|
||||
DHD_ERROR(("%s: dhd_os_get_image_block failed (%d)\n", __FUNCTION__, len));
|
||||
bcmerror = BCME_ERROR;
|
||||
goto upload_err;
|
||||
}
|
||||
|
||||
read_len += len;
|
||||
if (read_len > file_size) {
|
||||
DHD_ERROR(("%s: WARNING! reading beyond EOF, len=%d; read_len=%u;"
|
||||
" file_size=%u truncating len to %d \n", __FUNCTION__,
|
||||
len, read_len, file_size, (len - (read_len - file_size))));
|
||||
len -= (read_len - file_size);
|
||||
}
|
||||
memset(ulblock, 0xaa, MEMBLOCK);
|
||||
bcmerror = dhdpcie_bus_membytes(bus, FALSE, offset,
|
||||
(uint8 *)ulblock, len);
|
||||
if (bcmerror) {
|
||||
DHD_ERROR(("%s: error %d on reading %d membytes at 0x%08x\n",
|
||||
__FUNCTION__, bcmerror, len, offset));
|
||||
goto upload_err;
|
||||
}
|
||||
if (memcmp(memptr, ulblock, len)) {
|
||||
DHD_ERROR(("%s: Downloaded image is corrupted! \n",
|
||||
__FUNCTION__));
|
||||
bcmerror = BCME_ERROR;
|
||||
goto upload_err;
|
||||
}
|
||||
|
||||
uploded_len += len;
|
||||
offset += MEMBLOCK;
|
||||
|
||||
if (offset >= offset_end) {
|
||||
DHD_ERROR(("%s: invalid address access to %x (offset end: %x)\n",
|
||||
__FUNCTION__, offset, offset_end));
|
||||
bcmerror = BCME_ERROR;
|
||||
goto upload_err;
|
||||
}
|
||||
|
||||
if (read_len >= file_size) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
DHD_ERROR(("%s: Download, Upload and compare succeeded.\n", __FUNCTION__));
|
||||
|
||||
upload_err:
|
||||
if (ulblock)
|
||||
MFREE(bus->dhd->osh, ulblock, MEMBLOCK);
|
||||
}
|
||||
#endif /* DHD_DEBUG && DHD_FW_MEM_CORRUPTION */
|
||||
err:
|
||||
if (memblock) {
|
||||
MFREE(bus->dhd->osh, memblock, MEMBLOCK + DHD_SDALIGN);
|
||||
|
|
@ -4811,10 +4908,6 @@ _dhdpcie_download_firmware(struct dhd_bus *bus)
|
|||
goto err;
|
||||
}
|
||||
|
||||
if (CHIPID(bus->sih->chip) == BCM43711_CHIP_ID) {
|
||||
si_pmu_43711a0_pll_war(bus->sih);
|
||||
}
|
||||
|
||||
/* Take arm out of reset */
|
||||
if (dhdpcie_bus_download_state(bus, FALSE)) {
|
||||
DHD_ERROR(("%s: error getting out of ARM core reset\n", __FUNCTION__));
|
||||
|
|
@ -5004,6 +5097,26 @@ exit:
|
|||
return;
|
||||
}
|
||||
|
||||
static void dhdpcie_force_console_dump(dhd_bus_t *bus)
|
||||
{
|
||||
uint32 cons_sign = 0;
|
||||
uint32 cons_addr = 0;
|
||||
uint32 val = 0;
|
||||
|
||||
cons_sign = bus->dongle_ram_base + bus->ramsize - 12;
|
||||
|
||||
val = LTOH32(dhdpcie_bus_rtcm32(bus, cons_sign));
|
||||
|
||||
if (val == CONS_ADDR_SIGNATURE) {
|
||||
cons_addr = bus->dongle_ram_base + bus->ramsize - 8;
|
||||
val = LTOH32(dhdpcie_bus_rtcm32(bus, cons_addr));
|
||||
bus->console_addr = val;
|
||||
dhd_msg_level |= DHD_FWLOG_VAL;
|
||||
dhdpcie_bus_readconsole(bus);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
static void
|
||||
dhdpcie_schedule_log_dump(dhd_bus_t *bus)
|
||||
{
|
||||
|
|
@ -5861,9 +5974,6 @@ BCMFASTPATH(dhd_bus_schedule_queue)(struct dhd_bus *bus, uint16 flow_id, bool t
|
|||
unsigned long flags;
|
||||
void *txp = NULL;
|
||||
flow_queue_t *queue;
|
||||
#ifdef TPUT_MONITOR
|
||||
int pktlen;
|
||||
#endif
|
||||
|
||||
queue = &flow_ring_node->queue; /* queue associated with flow ring */
|
||||
|
||||
|
|
@ -5908,12 +6018,6 @@ BCMFASTPATH(dhd_bus_schedule_queue)(struct dhd_bus *bus, uint16 flow_id, bool t
|
|||
/* Attempt to transfer packet over flow ring */
|
||||
/* XXX: ifidx is wrong */
|
||||
++cnt;
|
||||
#ifdef TPUT_MONITOR
|
||||
pktlen = PKTLEN(OSH_NULL, txp);
|
||||
if ((bus->dhd->conf->data_drop_mode == TXPKT_DROP) && (pktlen > 500))
|
||||
ret = BCME_OK;
|
||||
else
|
||||
#endif
|
||||
ret = dhd_prot_txdata(bus->dhd, txp, flow_ring_node->flow_info.ifindex);
|
||||
if (ret != BCME_OK) { /* may not have resources in flow ring */
|
||||
DHD_INFO(("%s: Reinserrt %d\n", __FUNCTION__, ret));
|
||||
|
|
@ -7712,6 +7816,13 @@ dhd_bus_devreset(dhd_pub_t *dhdp, uint8 flag)
|
|||
dhdpcie_bus_intr_disable(bus);
|
||||
dhdpcie_free_irq(bus);
|
||||
}
|
||||
#if IS_ENABLED(CONFIG_PCIEASPM_ROCKCHIP_WIFI_EXTENSION)
|
||||
if (!rk_dhd_bus_pcie_wait_for_l1ss(bus)) {
|
||||
DHD_ERROR(("%s: wait for l1ss success\n", __FUNCTION__));
|
||||
} else {
|
||||
DHD_ERROR(("%s: wait for l1ss failed\n", __FUNCTION__));
|
||||
}
|
||||
#endif /* CONFIG_PCIEASPM_ROCKCHIP_WIFI_EXTENSION */
|
||||
dhd_deinit_bus_lp_state_lock(bus);
|
||||
dhd_deinit_bar1_switch_lock(bus);
|
||||
dhd_deinit_backplane_access_lock(bus);
|
||||
|
|
@ -13103,7 +13214,8 @@ BCMFASTPATH(dhd_bus_dpc)(struct dhd_bus *bus)
|
|||
INTR_ON:
|
||||
#endif /* DHD_READ_INTSTATUS_IN_DPC */
|
||||
bus->dpc_exit_time = OSL_LOCALTIME_NS();
|
||||
bus->dpc_time_usec = DIV_U64_BY_U64((bus->dpc_exit_time - bus->dpc_entry_time), NSEC_PER_USEC);
|
||||
bus->dpc_time_usec = DIV_U64_BY_U64((bus->dpc_exit_time - bus->dpc_entry_time),
|
||||
NSEC_PER_USEC);
|
||||
if (!dhd_query_bus_erros(bus->dhd)) {
|
||||
/* Due to irq mismatch WARNING in linux, currently keeping it disabled and
|
||||
* using dongle intmask to control INTR enable/disable
|
||||
|
|
@ -13119,7 +13231,8 @@ INTR_ON:
|
|||
}
|
||||
} else {
|
||||
bus->resched_dpc_time = OSL_LOCALTIME_NS();
|
||||
bus->dpc_time_usec = DIV_U64_BY_U64((bus->resched_dpc_time - bus->dpc_entry_time), NSEC_PER_USEC);
|
||||
bus->dpc_time_usec = DIV_U64_BY_U64((bus->resched_dpc_time - bus->dpc_entry_time),
|
||||
NSEC_PER_USEC);
|
||||
}
|
||||
dhd_histo_update(bus->dhd, bus->dpc_time_histo, (uint32)bus->dpc_time_usec);
|
||||
|
||||
|
|
@ -14555,6 +14668,7 @@ int dhd_bus_init(dhd_pub_t *dhdp, bool enforce_mutex)
|
|||
ret = dhdpcie_readshared(bus);
|
||||
if (ret < 0) {
|
||||
DHD_ERROR(("%s :Shared area read failed \n", __FUNCTION__));
|
||||
dhdpcie_force_console_dump(bus);
|
||||
goto exit;
|
||||
}
|
||||
|
||||
|
|
@ -14632,7 +14746,7 @@ dhdpcie_init_shared_addr(dhd_bus_t *bus)
|
|||
bool
|
||||
dhdpcie_chipmatch(uint16 vendor, uint16 device)
|
||||
{
|
||||
if (vendor != PCI_VENDOR_ID_BROADCOM) {
|
||||
if ((vendor != PCI_VENDOR_ID_BROADCOM) && (vendor != PCI_VENDOR_ID_SYNAPTICS)) {
|
||||
DHD_ERROR(("%s: Unsupported vendor %x device %x\n", __FUNCTION__,
|
||||
vendor, device));
|
||||
return (-ENODEV);
|
||||
|
|
@ -14752,7 +14866,12 @@ dhdpcie_chipmatch(uint16 vendor, uint16 device)
|
|||
case BCM43752_CHIP_ID:
|
||||
case BCM43756_D11AX_ID:
|
||||
case BCM43756_CHIP_ID:
|
||||
case BCM43756E_D11AX6E_ID:
|
||||
case BCM43756E_D11AC_ID:
|
||||
case BCM43756E_D11AX_ID:
|
||||
case BCM43711_CHIP_ID:
|
||||
case BCM43711_D11AX6E_ID:
|
||||
case BCM43711_D11AC_ID:
|
||||
case BCM43711_D11AX_ID:
|
||||
case BCM4381_CHIP_ID:
|
||||
case BCM4381_D11AX_ID:
|
||||
|
|
@ -17798,6 +17917,12 @@ dhd_pcie_dma_info_dump(dhd_pub_t *dhd)
|
|||
return 0;
|
||||
}
|
||||
|
||||
bool
|
||||
dhd_pcie_check_lps_d3_acked(dhd_pub_t *dhd)
|
||||
{
|
||||
return DHD_CHK_BUS_LPS_D3_ACKED(dhd->bus);
|
||||
}
|
||||
|
||||
bool
|
||||
dhd_pcie_dump_int_regs(dhd_pub_t *dhd)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* Linux DHD Bus Module for PCIE
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
@ -810,11 +829,6 @@ extern void dhd_bus_doorbell_timeout_reset(struct dhd_bus *bus);
|
|||
#define DHD_PCIE_DMA_MASK_FOR_GS101 36
|
||||
#endif /* DHD_SET_PCIE_DMA_MASK_FOR_GS101 */
|
||||
|
||||
#ifdef CONFIG_ARCH_TEGRA
|
||||
extern int tegra_pcie_pm_suspend(void);
|
||||
extern int tegra_pcie_pm_resume(void);
|
||||
#endif /* CONFIG_ARCH_TEGRA */
|
||||
|
||||
extern int dhd_buzzz_dump_dngl(dhd_bus_t *bus);
|
||||
#ifdef IDLE_TX_FLOW_MGMT
|
||||
extern int dhd_bus_flow_ring_resume_request(struct dhd_bus *bus, void *arg);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* Linux DHD Bus Module for PCIE
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
@ -47,9 +66,9 @@
|
|||
#include <pcicfg.h>
|
||||
#include <dhd_pcie.h>
|
||||
#include <dhd_linux.h>
|
||||
#if defined(CUSTOMER_HW_ROCKCHIP) && defined(CUSTOMER_HW_ROCKCHIP_RK3588)
|
||||
#if defined(CUSTOMER_HW_ROCKCHIP) && IS_ENABLED(CONFIG_PCIEASPM_ROCKCHIP_WIFI_EXTENSION)
|
||||
#include <rk_dhd_pcie_linux.h>
|
||||
#endif /* CUSTOMER_HW_ROCKCHIP && CUSTOMER_HW_ROCKCHIP_RK3588 */
|
||||
#endif /* CUSTOMER_HW_ROCKCHIP && CONFIG_PCIEASPM_ROCKCHIP_WIFI_EXTENSION */
|
||||
#ifdef OEM_ANDROID
|
||||
#ifdef CONFIG_ARCH_MSM
|
||||
#if IS_ENABLED(CONFIG_PCI_MSM) || defined(CONFIG_ARCH_MSM8996)
|
||||
|
|
@ -87,6 +106,10 @@
|
|||
|
||||
#include <dhd_plat.h>
|
||||
|
||||
#if defined(CUSTOMER_HW_ROCKCHIP) && defined(CONFIG_ARCH_ROCKCHIP)
|
||||
#include <linux/aspm_ext.h>
|
||||
#endif
|
||||
|
||||
#define PCI_CFG_RETRY 10 /* PR15065: retry count for pci cfg accesses */
|
||||
#define OS_HANDLE_MAGIC 0x1234abcd /* Magic # to recognize osh */
|
||||
#define BCM_MEM_FILENAME_LEN 24 /* Mem. filename length */
|
||||
|
|
@ -107,6 +130,10 @@ unsigned char gpio_direction = 0;
|
|||
#define BCMPCI_DEV_ID PCI_ANY_ID
|
||||
#endif
|
||||
|
||||
#ifndef SYNAPCI_DEV_ID
|
||||
#define SYNAPCI_DEV_ID PCI_ANY_ID
|
||||
#endif
|
||||
|
||||
#ifdef FORCE_TPOWERON
|
||||
extern uint32 tpoweron_scale;
|
||||
#endif /* FORCE_TPOWERON */
|
||||
|
|
@ -225,6 +252,17 @@ static struct pci_device_id dhdpcie_pci_devid[] __devinitdata = {
|
|||
driver_data: 0,
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0))
|
||||
override_only: 0,
|
||||
#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0)) */
|
||||
},
|
||||
{ vendor: VENDOR_SYNAPTICS,
|
||||
device: BCMPCI_DEV_ID,
|
||||
subvendor: PCI_ANY_ID,
|
||||
subdevice: PCI_ANY_ID,
|
||||
class: PCI_CLASS_NETWORK_OTHER << 8,
|
||||
class_mask: 0xffff00,
|
||||
driver_data: 0,
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0))
|
||||
override_only: 0,
|
||||
#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0)) */
|
||||
},
|
||||
#if (BCMPCI_DEV_ID != PCI_ANY_ID) && defined(BCMPCI_NOOTP_DEV_ID)
|
||||
|
|
@ -265,7 +303,9 @@ static const struct dev_pm_ops dhd_pcie_pm_ops = {
|
|||
#endif
|
||||
|
||||
static struct pci_driver dhdpcie_driver = {
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(6, 8, 0))
|
||||
node: {&dhdpcie_driver.node, &dhdpcie_driver.node},
|
||||
#endif /* LINUX_VERSION_CODE < 6.8.0 */
|
||||
name: "pcieh"BUS_TYPE,
|
||||
id_table: dhdpcie_pci_devid,
|
||||
probe: dhdpcie_pci_probe,
|
||||
|
|
@ -626,8 +666,7 @@ dhd_bus_is_rc_ep_l1ss_capable(dhd_bus_t *bus)
|
|||
uint32 rc_l1ss_cap;
|
||||
uint32 ep_l1ss_cap;
|
||||
|
||||
#if defined(CUSTOMER_HW_ROCKCHIP) && defined(CUSTOMER_HW_ROCKCHIP_RK3588)
|
||||
if (IS_ENABLED(CONFIG_PCIEASPM_ROCKCHIP_WIFI_EXTENSION)) {
|
||||
#if defined(CUSTOMER_HW_ROCKCHIP) && IS_ENABLED(CONFIG_PCIEASPM_ROCKCHIP_WIFI_EXTENSION)
|
||||
if (rk_dhd_bus_is_rc_ep_l1ss_capable(bus)) {
|
||||
DHD_ERROR(("%s L1ss is capable\n", __FUNCTION__));
|
||||
return TRUE;
|
||||
|
|
@ -635,8 +674,7 @@ dhd_bus_is_rc_ep_l1ss_capable(dhd_bus_t *bus)
|
|||
DHD_ERROR(("%s L1ss is not capable\n", __FUNCTION__));
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
#endif /* CUSTOMER_HW_ROCKCHIP && CUSTOMER_HW_ROCKCHIP_RK3588 */
|
||||
#endif /* CUSTOMER_HW_ROCKCHIP && CONFIG_PCIEASPM_ROCKCHIP_WIFI_EXTENSION */
|
||||
|
||||
/* RC Extendend Capacility */
|
||||
rc_l1ss_cap = dhdpcie_access_cap(bus->rc_dev, PCIE_EXTCAP_ID_L1SS,
|
||||
|
|
@ -750,7 +788,8 @@ static int dhdpcie_pci_suspend(struct device *dev)
|
|||
if ((timeleft == 0) || (timeleft == 1)) {
|
||||
DHD_ERROR(("%s: Timed out dhd_bus_busy_state=0x%x\n",
|
||||
__FUNCTION__, bus->dhd->dhd_bus_busy_state));
|
||||
return -EBUSY;
|
||||
ret = -EBUSY;
|
||||
goto exit;
|
||||
}
|
||||
} else {
|
||||
DHD_BUS_BUSY_SET_SUSPEND_IN_PROGRESS(bus->dhd);
|
||||
|
|
@ -764,6 +803,7 @@ static int dhdpcie_pci_suspend(struct device *dev)
|
|||
if (!bus->dhd->dongle_reset)
|
||||
ret = dhdpcie_set_suspend_resume(bus, TRUE);
|
||||
|
||||
exit:
|
||||
DHD_GENERAL_LOCK(bus->dhd, flags);
|
||||
DHD_BUS_BUSY_CLEAR_SUSPEND_IN_PROGRESS(bus->dhd);
|
||||
dhd_os_busbusy_wake(bus->dhd);
|
||||
|
|
@ -1427,13 +1467,13 @@ static int dhdpcie_device_scan(struct device *dev, void *data)
|
|||
pcidev = container_of(dev, struct pci_dev, dev);
|
||||
GCC_DIAGNOSTIC_POP();
|
||||
|
||||
if (pcidev->vendor != 0x14e4)
|
||||
if ((pcidev->vendor != VENDOR_BROADCOM) && (pcidev->vendor != VENDOR_SYNAPTICS))
|
||||
return 0;
|
||||
|
||||
DHD_INFO(("Found Broadcom PCI device 0x%04x\n", pcidev->device));
|
||||
DHD_INFO(("Found Broadcom or Synaptics PCI device 0x%04x\n", pcidev->device));
|
||||
*cnt += 1;
|
||||
if (pcidev->driver && strcmp(pcidev->driver->name, dhdpcie_driver.name))
|
||||
DHD_ERROR(("Broadcom PCI Device 0x%04x has allocated with driver %s\n",
|
||||
DHD_ERROR(("Broadcom or Synaptics PCI Device 0x%04x has allocated with driver %s\n",
|
||||
pcidev->device, pcidev->driver->name));
|
||||
|
||||
return 0;
|
||||
|
|
@ -1447,7 +1487,7 @@ dhdpcie_bus_register(void)
|
|||
if (!(error = pci_register_driver(&dhdpcie_driver))) {
|
||||
bus_for_each_dev(dhdpcie_driver.driver.bus, NULL, &error, dhdpcie_device_scan);
|
||||
if (!error) {
|
||||
DHD_ERROR(("No Broadcom PCI device enumerated!\n"));
|
||||
DHD_ERROR(("No Broadcom or Synaptics PCI device enumerated!\n"));
|
||||
#ifdef DHD_PRELOAD
|
||||
return 0;
|
||||
#endif
|
||||
|
|
@ -2382,11 +2422,6 @@ dhdpcie_start_host_dev(dhd_bus_t *bus)
|
|||
ret = msm_pcie_pm_control(MSM_PCIE_RESUME, bus->dev->bus->number,
|
||||
bus->dev, NULL, 0);
|
||||
#endif /* CONFIG_ARCH_MSM */
|
||||
#ifdef CONFIG_ARCH_TEGRA
|
||||
#ifndef CONFIG_ARCH_TEGRA_210_SOC
|
||||
ret = tegra_pcie_pm_resume();
|
||||
#endif /* CONFIG_ARCH_TEGRA_210_SOC */
|
||||
#endif /* CONFIG_ARCH_TEGRA */
|
||||
|
||||
if (ret) {
|
||||
DHD_ERROR(("%s Failed to bring up PCIe link\n", __FUNCTION__));
|
||||
|
|
@ -2421,11 +2456,6 @@ dhdpcie_stop_host_dev(dhd_bus_t *bus)
|
|||
ret = msm_pcie_pm_control(MSM_PCIE_SUSPEND, bus->dev->bus->number,
|
||||
bus->dev, NULL, 0);
|
||||
#endif /* CONFIG_ARCH_MSM */
|
||||
#ifdef CONFIG_ARCH_TEGRA
|
||||
#ifndef CONFIG_ARCH_TEGRA_210_SOC
|
||||
ret = tegra_pcie_pm_suspend();
|
||||
#endif /* CONFIG_ARCH_TEGRA_210_SOC */
|
||||
#endif /* CONFIG_ARCH_TEGRA */
|
||||
if (ret) {
|
||||
DHD_ERROR(("Failed to stop PCIe link\n"));
|
||||
goto done;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* DHD debugability packet logging support
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
@ -33,6 +52,9 @@
|
|||
#include <dhd_pktlog.h>
|
||||
#include <dhd_wlfc.h>
|
||||
#include <dhd_debug.h>
|
||||
#ifdef LINUX
|
||||
#include <linux/vmalloc.h>
|
||||
#endif /* LINUX */
|
||||
|
||||
#ifdef DHD_COMPACT_PKT_LOG
|
||||
#include <bcmip.h>
|
||||
|
|
@ -871,10 +893,12 @@ dhd_pktlog_filter_add(dhd_pktlog_filter_t *filter, char *arg)
|
|||
return BCME_ERROR;
|
||||
}
|
||||
|
||||
if (dhd_msg_level & DHD_INFO_VAL) {
|
||||
prhex("mask", (char *)&filter->info[filter->list_cnt].mask[0],
|
||||
mask_size);
|
||||
prhex("pattern", (char *)&filter->info[filter->list_cnt].pattern[0],
|
||||
pattern_size);
|
||||
}
|
||||
|
||||
if (mask_size != pattern_size) {
|
||||
DHD_ERROR(("%s(): Mask and pattern not the same size\n", __FUNCTION__));
|
||||
|
|
|
|||
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* DHD debugability packet logging header file
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
|
|||
|
|
@ -1,7 +1,26 @@
|
|||
/*
|
||||
* DHD Linux platform header file
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
|
|||
|
|
@ -2,7 +2,26 @@
|
|||
* Broadcom Dongle Host Driver (DHD)
|
||||
* Prefered Network Offload and Wi-Fi Location Service(WLS) code.
|
||||
*
|
||||
* Copyright (C) 2022, Broadcom.
|
||||
* Copyright (C) 2024 Synaptics Incorporated. All rights reserved.
|
||||
*
|
||||
* This software is licensed to you under the terms of the
|
||||
* GNU General Public License version 2 (the "GPL") with Broadcom special exception.
|
||||
*
|
||||
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
|
||||
* EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
|
||||
* AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
|
||||
* IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
|
||||
* WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
|
||||
* AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION
|
||||
* DOES NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES,
|
||||
* SYNAPTICS' TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT
|
||||
* EXCEED ONE HUNDRED U.S. DOLLARS
|
||||
*
|
||||
* Copyright (C) 2024, Broadcom.
|
||||
*
|
||||
* Unless you and Broadcom execute a separate written software license
|
||||
* agreement governing use of this software, this software is licensed to you
|
||||
|
|
@ -803,7 +822,7 @@ _dhd_pno_get_channels(dhd_pub_t *dhd, uint16 *d_chan_list,
|
|||
}
|
||||
for (i = 0, j = 0; i < dtoh32(list->count) && i < *nchan; i++) {
|
||||
if (IS_2G_CHANNEL(dtoh32(list->element[i]))) {
|
||||
if (!(band & WLC_BAND_2G)) {
|
||||
if (!(band & WLC_BAND_2G) && !(band & WLC_BAND_AUTO)) {
|
||||
/* Skip, if not 2g */
|
||||
continue;
|
||||
}
|
||||
|
|
@ -811,7 +830,7 @@ _dhd_pno_get_channels(dhd_pub_t *dhd, uint16 *d_chan_list,
|
|||
} else if (IS_5G_CHANNEL(dtoh32(list->element[i]))) {
|
||||
bool dfs_channel = is_dfs(dhd, dtoh32(list->element[i]));
|
||||
if ((skip_dfs && dfs_channel) ||
|
||||
(!(band & WLC_BAND_5G) && !dfs_channel)) {
|
||||
(!(band & WLC_BAND_5G) && !(band & WLC_BAND_AUTO) && !dfs_channel)) {
|
||||
/* Skip the channel if:
|
||||
* the DFS bit is NOT set & the channel is a dfs channel
|
||||
* the band 5G is not set & the channel is a non DFS 5G channel
|
||||
|
|
@ -1021,13 +1040,13 @@ _dhd_pno_cfg(dhd_pub_t *dhd, uint16 *channel_list, int nchan)
|
|||
int i = 0;
|
||||
wl_pfn_cfg_t pfncfg_param;
|
||||
bool use_chanspec = FALSE;
|
||||
struct bcm_cfg80211 *cfg = wl_get_cfg(dhd_linux_get_primary_netdev(dhd));
|
||||
|
||||
#if defined(WL_6G_BAND) || defined(CFG80211_6G_SUPPORT)
|
||||
/* When enable 6G, force to use chanspec list */
|
||||
if (FW_SUPPORTED((dhd), 6g)) {
|
||||
if (FW_SUPPORTED((dhd), 6g) ||
|
||||
(cfg && FW_MAJOR_VER_PNO_CHSPEC_BACK_PORTED(cfg->wlc_ver))) {
|
||||
use_chanspec = TRUE;
|
||||
}
|
||||
#endif /* WL_6G_BAND || CFG80211_6G_SUPPORT */
|
||||
|
||||
NULL_CHECK(dhd, "dhd is NULL", err);
|
||||
if (nchan) {
|
||||
|
|
@ -3086,7 +3105,8 @@ dhd_pno_get_gscan(dhd_pub_t *dhd, dhd_pno_gscan_cmd_cfg_t type,
|
|||
for (i = 0; i < nchan; i++) {
|
||||
p[i] = wl_channel_to_frequency(
|
||||
(ch_list[i]),
|
||||
CHSPEC_BAND(ch_list[i]));
|
||||
(ch_list[i] <= CH_MAX_2G_CHANNEL?
|
||||
WL_CHANSPEC_BAND_2G : WL_CHANSPEC_BAND_5G));
|
||||
}
|
||||
ret = p;
|
||||
*len = mem_needed;
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue