mirror of
https://gitee.com/open-loongarch/linux-5.10.git
synced 2026-10-25 12:47:11 +08:00
update to e4af36c7270
1.add 2k300_gongkong board support 2.update dht11 driver 3.support EC200A-CN 4G model 4.goodix:reset: reset timing fixing 5.other bugs fix
This commit is contained in:
@@ -3,6 +3,6 @@ dtb-$(CONFIG_LOONGSON64_GENERIC) += loongson3_ls7a.dtb
|
||||
dtb-$(CONFIG_LOONGSON_2K500) += ls2k500_mini_dp.dtb
|
||||
dtb-$(CONFIG_LOONGSON_2K1000) += ls2k1000_dp.dtb
|
||||
dtb-$(CONFIG_LOONGSON_2P500) += ls2p500_gbkpjm0_v10.dtb
|
||||
dtb-$(CONFIG_LOONGSON_2K300) += ls2k300_mini_dp.dtb ls2k300_pai.dtb
|
||||
dtb-$(CONFIG_LOONGSON_2K300) += ls2k300_mini_dp.dtb ls2k300_pai.dtb ls2k300_gongkong_gbkpgk0.dtb
|
||||
|
||||
obj-y += $(patsubst %.dtb, %.dtb.o, $(dtb-y))
|
||||
|
||||
@@ -166,18 +166,34 @@
|
||||
pinctrl-single,bits = <0x10 0x00000f00 0x00000f00>;
|
||||
};
|
||||
|
||||
can0_as_gpio_pins: pinmux_G68_G69_as_gpio {
|
||||
pinctrl-single,bits = <0x10 0x00000000 0x00000f00>;
|
||||
};
|
||||
|
||||
can1_pins: pinmux_G70_G71_as_can1 {
|
||||
pinctrl-single,bits = <0x10 0x0000f000 0x0000f000>;
|
||||
};
|
||||
|
||||
can1_as_gpio_pins: pinmux_G70_G71_as_gpio {
|
||||
pinctrl-single,bits = <0x10 0x00000000 0x0000f000>;
|
||||
};
|
||||
|
||||
can2_pins: pinmux_G72_G73_as_can2 {
|
||||
pinctrl-single,bits = <0x10 0x000f0000 0x000f0000>;
|
||||
};
|
||||
|
||||
can2_as_gpio_pins: pinmux_G72_G73_as_gpio {
|
||||
pinctrl-single,bits = <0x10 0x00000000 0x000f0000>;
|
||||
};
|
||||
|
||||
can3_pins: pinmux_G74_G75_as_can3 {
|
||||
pinctrl-single,bits = <0x10 0x00f00000 0x00f00000>;
|
||||
};
|
||||
|
||||
can3_as_gpio_pins: pinmux_G74_G75_as_gpio {
|
||||
pinctrl-single,bits = <0x10 0x00000000 0x00f00000>;
|
||||
};
|
||||
|
||||
i2s_pins: pinmux_G76_G80_as_i2s {
|
||||
pinctrl-single,bits = <0x10 0xff000000 0xff000000
|
||||
0x14 0x00000003 0x00000003>;
|
||||
@@ -501,7 +517,9 @@
|
||||
interrupt-parent = <&icu>;
|
||||
interrupts = <8>;
|
||||
pinctrl-0 = <&can0_pins>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-1 = <&can0_as_gpio_pins>;
|
||||
pinctrl-names = "default", "isolate";
|
||||
ls,canfd-tx-gpio = <&gpio 69 GPIO_ACTIVE_HIGH>;
|
||||
dmas = <&dma 0 0xaae>;
|
||||
dma-names = "rx";
|
||||
status = "disabled";
|
||||
@@ -515,7 +533,9 @@
|
||||
interrupt-parent = <&icu>;
|
||||
interrupts = <9>;
|
||||
pinctrl-0 = <&can1_pins>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-1 = <&can1_as_gpio_pins>;
|
||||
pinctrl-names = "default", "isolate";
|
||||
ls,canfd-tx-gpio = <&gpio 71 GPIO_ACTIVE_HIGH>;
|
||||
dmas = <&dma 1 0xaae>;
|
||||
dma-names = "rx";
|
||||
status = "disabled";
|
||||
@@ -529,7 +549,9 @@
|
||||
interrupt-parent = <&icu>;
|
||||
interrupts = <10>;
|
||||
pinctrl-0 = <&can2_pins>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-1 = <&can2_as_gpio_pins>;
|
||||
pinctrl-names = "default", "isolate";
|
||||
ls,canfd-tx-gpio = <&gpio 73 GPIO_ACTIVE_HIGH>;
|
||||
dmas = <&dma 2 0xaae>;
|
||||
dma-names = "rx";
|
||||
status = "disabled";
|
||||
@@ -543,7 +565,9 @@
|
||||
interrupt-parent = <&icu>;
|
||||
interrupts = <11>;
|
||||
pinctrl-0 = <&can3_pins>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-1 = <&can3_as_gpio_pins>;
|
||||
pinctrl-names = "default", "isolate";
|
||||
ls,canfd-tx-gpio = <&gpio 75 GPIO_ACTIVE_HIGH>;
|
||||
dmas = <&dma 3 0xaae>;
|
||||
dma-names = "rx";
|
||||
status = "disabled";
|
||||
|
||||
@@ -94,5 +94,54 @@
|
||||
pixelclk-active = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
// 松大染印10寸屏
|
||||
panel-MTF101WS56A-1024x600{
|
||||
width-mm = <229>;
|
||||
height-mm = <149>;
|
||||
label = "MTF101WS56A-1024x600";
|
||||
data-mapping = "jeida-24";
|
||||
|
||||
panel-timing {
|
||||
clock-frequency = <40800000>;
|
||||
hactive = <1024>;
|
||||
vactive = <600>;
|
||||
// this timining is better
|
||||
hsync-len = <5>;
|
||||
hfront-porch = <15>;
|
||||
hback-porch = <70>;
|
||||
vfront-porch = <1>;
|
||||
vback-porch = <8>;
|
||||
vsync-len = <1>;
|
||||
de-active = <1>;
|
||||
hsync-active = <0>;
|
||||
vsync-active = <0>;
|
||||
pixelclk-active = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
// 松大染印15寸屏
|
||||
panel-G150XGEL07-1024x768{
|
||||
width-mm = <304>;
|
||||
height-mm = <228>;
|
||||
label = "G150XGEL07-1024x768";
|
||||
data-mapping = "jeida-24";
|
||||
|
||||
panel-timing {
|
||||
clock-frequency = <65000000>;
|
||||
hactive = <1024>;
|
||||
vactive = <768>;
|
||||
hsync-len = <5>;
|
||||
hfront-porch = <100>;
|
||||
hback-porch = <215>;
|
||||
vfront-porch = <2>;
|
||||
vback-porch = <18>;
|
||||
vsync-len = <18>;
|
||||
de-active = <1>;
|
||||
hsync-active = <0>;
|
||||
vsync-active = <0>;
|
||||
pixelclk-active = <0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
#include "loongson2k300.dtsi"
|
||||
|
||||
/ {
|
||||
chosen {
|
||||
stdout-path = "serial0:115200n8";
|
||||
bootargs = "earlycon";
|
||||
};
|
||||
|
||||
/* not need memory node, we get memory info from boot params. */
|
||||
//memory {
|
||||
// name = "memory";
|
||||
// device_type = "memory";
|
||||
// reg = <0 0x00200000 0 0x0ee00000
|
||||
// 0 0x90000000 0 0x10000000>;
|
||||
//};
|
||||
|
||||
reserved-memory {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
linux,cma {
|
||||
compatible = "shared-dma-pool";
|
||||
reusable;
|
||||
size = <0 0x02000000>;
|
||||
linux,cma-default;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&spi0 {
|
||||
status = "okay";
|
||||
|
||||
spi-flash@0 {
|
||||
compatible = "jedec,spi-nor";
|
||||
spi-max-frequency = <25000000>;
|
||||
reg = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c2 {
|
||||
status = "okay";
|
||||
pinctrl-0 = <&i2c2_G82_G83_pins>;
|
||||
};
|
||||
|
||||
&i2c3 {
|
||||
status = "okay";
|
||||
pinctrl-0 = <&i2c3_G84_G85_pins>;
|
||||
};
|
||||
@@ -0,0 +1,338 @@
|
||||
#include "ls2k300_g2k03z2_core.dtsi"
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
|
||||
/ {
|
||||
model = "LS2K300-GONGKONG-GBKPGK0";
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
sys_stat {
|
||||
label = "sys_stat";
|
||||
gpios = <&io_expander_a 8 GPIO_ACTIVE_LOW>;
|
||||
linux,default-trigger = "heartbeat";
|
||||
default-state = "on";
|
||||
};
|
||||
|
||||
led1 {
|
||||
label = "led1";
|
||||
gpios = <&io_expander_a 5 GPIO_ACTIVE_LOW>;
|
||||
default-state = "off";
|
||||
};
|
||||
|
||||
led2 {
|
||||
label = "led2";
|
||||
gpios = <&io_expander_a 7 GPIO_ACTIVE_LOW>;
|
||||
default-state = "off";
|
||||
};
|
||||
|
||||
led3 {
|
||||
label = "led3";
|
||||
gpios = <&io_expander_a 6 GPIO_ACTIVE_LOW>;
|
||||
default-state = "off";
|
||||
};
|
||||
};
|
||||
|
||||
lcd_backlight: backlight {
|
||||
compatible = "gpio-backlight";
|
||||
gpios = <&gpio 89 GPIO_ACTIVE_HIGH>;
|
||||
default-on;
|
||||
};
|
||||
|
||||
panel: dvo-connector@0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "panel-lvds", "auo,b101ean01";
|
||||
backlight = <&lcd_backlight>;
|
||||
|
||||
/* lcd power on control gpio */
|
||||
// enable-gpios = <&pioA 3 GPIO_ACTIVE_HIGH>;
|
||||
// power-supply = <&vdd_lcd>;
|
||||
#if 1 // 4.3' LCD
|
||||
width-mm = <223>;
|
||||
height-mm = <125>;
|
||||
label = "ATK-MD0430R-800x480";
|
||||
data-mapping = "jeida-24";
|
||||
|
||||
panel-timing {
|
||||
clock-frequency = <27000000>;
|
||||
hactive = <800>;
|
||||
vactive = <480>;
|
||||
hsync-len = <40>;
|
||||
hfront-porch = <48>;
|
||||
hback-porch = <40>;
|
||||
vfront-porch = <13>;
|
||||
vback-porch = <32>;
|
||||
vsync-len = <1>;
|
||||
de-active = <1>;
|
||||
hsync-active = <0>;
|
||||
vsync-active = <0>;
|
||||
pixelclk-active = <0>;
|
||||
};
|
||||
#else // 7' LCD
|
||||
width-mm = <223>;
|
||||
height-mm = <125>;
|
||||
label = "ATK-MD0700R-1024x600";
|
||||
data-mapping = "jeida-24";
|
||||
|
||||
panel-timing {
|
||||
clock-frequency = <51200000>;
|
||||
hactive = <1024>;
|
||||
vactive = <600>;
|
||||
hsync-len = <20>;
|
||||
hfront-porch = <160>;
|
||||
hback-porch = <140>;
|
||||
vfront-porch = <12>;
|
||||
vback-porch = <20>;
|
||||
vsync-len = <3>;
|
||||
de-active = <1>;
|
||||
hsync-active = <0>;
|
||||
vsync-active = <0>;
|
||||
pixelclk-active = <0>;
|
||||
};
|
||||
#endif
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
dvo_connector_in: endpoint@0 {
|
||||
reg = <0>;
|
||||
remote-endpoint = <&dc_out_rgb0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
vccio_codec: 3_3V{
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "VCC_IO";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
// 虽然这个时钟在从模式下没用,但 es8388 驱动必须指定这个时钟
|
||||
es8388_clk: es8388-clock {
|
||||
compatible = "fixed-clock";
|
||||
clock-frequency = <12288000>;
|
||||
#clock-cells = <1>;
|
||||
};
|
||||
};
|
||||
|
||||
&dc {
|
||||
status = "ok"
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
dc_out_rgb0: endpoint {
|
||||
remote-endpoint = <&dvo_connector_in>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&gmac0 {
|
||||
status = "okay";
|
||||
phy-handle = <&yt8511h0>;
|
||||
mdio {
|
||||
compatible = "snps,dwmac-mdio";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
yt8511h0: ethernet-phy@0 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <0>;
|
||||
motorcomm,led0_cfg = <0x40>; //千兆常亮
|
||||
motorcomm,led1_cfg = <0x30>; //百兆 十兆常亮
|
||||
motorcomm,led2_cfg = <0x2600>; //有数据时闪烁
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&gmac1 {
|
||||
status = "okay";
|
||||
phy-handle = <&yt8511h1>;
|
||||
mdio {
|
||||
compatible = "snps,dwmac-mdio";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
yt8511h1: ethernet-phy@1 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <0>;
|
||||
motorcomm,led0_cfg = <0x40>; //千兆常亮
|
||||
motorcomm,led1_cfg = <0x30>; //百兆 十兆常亮
|
||||
motorcomm,led2_cfg = <0x2600>; //有数据时闪烁
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&i2c2 {
|
||||
i2c-speed = <400000>;
|
||||
|
||||
codec: es8388@11{
|
||||
compatible = "everest,es8388";
|
||||
reg = <0x11>;
|
||||
AVDD-supply = <&vccio_codec>;
|
||||
DVDD-supply = <&vccio_codec>;
|
||||
HPVDD-supply = <&vccio_codec>;
|
||||
PVDD-supply = <&vccio_codec>;
|
||||
clocks = <&es8388_clk 0>;
|
||||
};
|
||||
|
||||
dido_A000: xl9555@20 {
|
||||
compatible = "nxp,pca9555";
|
||||
reg = <0x20>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-parent = <&io_expander_a>;
|
||||
interrupts = <10 IRQ_TYPE_EDGE_FALLING>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
dido_A001: xl9555@21 {
|
||||
compatible = "nxp,pca9555";
|
||||
reg = <0x21>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-parent = <&io_expander_a>;
|
||||
interrupts = <11 IRQ_TYPE_EDGE_FALLING>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
dido_A010: xl9555@22 {
|
||||
compatible = "nxp,pca9555";
|
||||
reg = <0x22>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-parent = <&io_expander_a>;
|
||||
interrupts = <12 IRQ_TYPE_EDGE_FALLING>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c3 {
|
||||
i2c-speed = <400000>;
|
||||
|
||||
touchpad: gt9147@14 {
|
||||
compatible = "goodix,gt9147";
|
||||
reg = <0x14>;
|
||||
interrupt-parent = <&io_expander_a>;
|
||||
interrupts = <2 IRQ_TYPE_EDGE_FALLING>;
|
||||
irq-gpios = <&io_expander_a 2 GPIO_ACTIVE_LOW>;
|
||||
reset-gpios = <&io_expander_a 3 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
io_expander_b: xl9555@26 {
|
||||
compatible = "nxp,pca9555";
|
||||
reg = <0x26>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
// 2K300 GPIO 支持中断控制
|
||||
// GPIO 中断号为 vhwirq-base + pinnum (194 = 128 + 66)
|
||||
interrupt-parent = <&gpio>;
|
||||
interrupts = <194 IRQ_TYPE_EDGE_FALLING>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
io_expander_a: xl9555@27 {
|
||||
compatible = "nxp,pca9555";
|
||||
reg = <0x27>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
// 2K300 GPIO 支持中断控制
|
||||
// GPIO 中断号为 vhwirq-base + pinnum (195 = 128 + 67)
|
||||
interrupt-parent = <&gpio>;
|
||||
interrupts = <195 IRQ_TYPE_EDGE_FALLING>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
dido_B000: xl9555@20 {
|
||||
compatible = "nxp,pca9555";
|
||||
reg = <0x20>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-parent = <&io_expander_a>;
|
||||
interrupts = <15 IRQ_TYPE_EDGE_FALLING>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
dido_B001: xl9555@21 {
|
||||
compatible = "nxp,pca9555";
|
||||
reg = <0x21>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-parent = <&io_expander_a>;
|
||||
interrupts = <14 IRQ_TYPE_EDGE_FALLING>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
dido_B010: xl9555@22 {
|
||||
compatible = "nxp,pca9555";
|
||||
reg = <0x22>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-parent = <&io_expander_a>;
|
||||
interrupts = <13 IRQ_TYPE_EDGE_FALLING>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
};
|
||||
|
||||
&uart1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart5 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&can2 {
|
||||
status = "ok"
|
||||
};
|
||||
|
||||
&can3 {
|
||||
status = "ok"
|
||||
};
|
||||
|
||||
&adc {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&sdio1 {
|
||||
pinctrl-0 = <&sdio1_pins>;
|
||||
pinctrl-names = "default";
|
||||
cap-sd-highspeed;
|
||||
cap-mmc-highspeed;
|
||||
bus-width = <4>;
|
||||
//cd-gpios = <&io_expander_a 4 GPIO_ACTIVE_LOW>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2s {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&audio {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&sound {
|
||||
status = "okay";
|
||||
loongson,audio-codec = <&codec>;
|
||||
// Easy Compatible for asound.state Configure
|
||||
loongson,sound-card-name = "ES8388";
|
||||
};
|
||||
|
||||
@@ -135,6 +135,14 @@
|
||||
interrupts = <210 IRQ_TYPE_EDGE_FALLING>;
|
||||
irq-gpios = <&gpio 82 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
touchpad_2: ft5426@38 {
|
||||
compatible = "focaltech,fts";
|
||||
reg = <0x38>;
|
||||
interrupt-parent = <&gpio>;
|
||||
interrupts = <210 IRQ_TYPE_EDGE_FALLING>;
|
||||
irq-gpios = <&gpio 82 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
&i2c2 {
|
||||
|
||||
@@ -13,14 +13,14 @@
|
||||
};
|
||||
|
||||
&pinmux {
|
||||
gpio_63_60_pins: pinmux_G60_G63_as_gpio {
|
||||
pinctrl-single,bits = <0xc 0x00000000 0xff000000>;
|
||||
};
|
||||
gpio_63_60_pins: pinmux_G60_G63_as_gpio {
|
||||
pinctrl-single,bits = <0xc 0x00000000 0xff000000>;
|
||||
};
|
||||
};
|
||||
|
||||
&gpio {
|
||||
pinctrl-0 = <&gpio_63_60_pins>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&gpio_63_60_pins>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
|
||||
&uart2 {
|
||||
@@ -45,12 +45,6 @@
|
||||
|
||||
&spi1 {
|
||||
status = "disable"
|
||||
|
||||
spidev0@0 {
|
||||
compatible = "rohm,dh2228fv";
|
||||
reg = <0>;
|
||||
spi-max-frequency = <25000000>;
|
||||
};
|
||||
};
|
||||
|
||||
&spi2 {
|
||||
@@ -67,7 +61,7 @@
|
||||
spi-max-frequency = <1500000>;
|
||||
};
|
||||
|
||||
spidev1@1 {
|
||||
spidev2@1 {
|
||||
compatible = "rohm,dh2228fv";
|
||||
reg = <1>;
|
||||
spi-max-frequency = <25000000>;
|
||||
|
||||
@@ -1,136 +0,0 @@
|
||||
#include "loongson2p500.dtsi"
|
||||
#include <dt-bindings/input/linux-event-codes.h>
|
||||
#include <dt-bindings/pwm/pwm.h>
|
||||
|
||||
/ {
|
||||
model = "LS2P500-EVB";
|
||||
chosen {
|
||||
stdout-path = "serial0:115200n8";
|
||||
bootargs = "earlycon";
|
||||
};
|
||||
|
||||
memory {
|
||||
name = "memory";
|
||||
device_type = "memory";
|
||||
/* low 256MB, 0 ~ 2MB reserved, highest 16MB reserved. */
|
||||
reg = <0 0x00200000 0 0x0ee00000
|
||||
0 0x90000000 0 0x30000000>;
|
||||
};
|
||||
|
||||
reserved-memory {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
linux,cma {
|
||||
compatible = "shared-dma-pool";
|
||||
reusable;
|
||||
size = <0 0x02000000>;
|
||||
// alloc-ranges = <0 0x00200000 0 0x09000000>;
|
||||
linux,cma-default;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart3 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart4 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart5 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart6 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart7 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
||||
&spi0 {
|
||||
status = "okay";
|
||||
// spidev@0 {
|
||||
// compatible = "rohm,dh2228fv";
|
||||
// spi-max-frequency = <100000000>;
|
||||
// reg = <0>;
|
||||
// };
|
||||
};
|
||||
|
||||
&spi2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gmac0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gmac1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
// &sdio {
|
||||
// status = "okay";
|
||||
// };
|
||||
|
||||
&rtc0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pwm0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pwm1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pwm2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pwm3 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&prt_pwm7 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&prt_pwm8 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&prt_pwm9 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&prt_pwm10 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&prt_pwm11 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
@@ -16,6 +16,16 @@
|
||||
default-state = "on";
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
&pioA {
|
||||
eth_bypass {
|
||||
gpio-hog;
|
||||
gpios = <13 GPIO_ACTIVE_HIGH>;
|
||||
output-high;
|
||||
line-name = "eth-bypass";
|
||||
};
|
||||
};
|
||||
|
||||
// UART LCD
|
||||
@@ -53,6 +63,9 @@
|
||||
|
||||
&gmac0 {
|
||||
status = "okay";
|
||||
snps,reset-gpio = <&pioA 12 GPIO_ACTIVE_LOW>;
|
||||
snps,reset-active-low;
|
||||
snps,reset-delays-us = <0 50000 50000>;
|
||||
};
|
||||
|
||||
&gmac1 {
|
||||
|
||||
@@ -1,233 +0,0 @@
|
||||
#include "ls2p500_g2p05z0_v10.dtsi"
|
||||
#include <dt-bindings/input/linux-event-codes.h>
|
||||
#include <dt-bindings/pwm/pwm.h>
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
|
||||
/ {
|
||||
model = "LS2P500-RSJ";
|
||||
|
||||
gpio-keys {
|
||||
//compatible = "gpio-keys";
|
||||
compatible = "gpio-keys-polled";
|
||||
poll-interval = <20>;
|
||||
|
||||
key1@0 {
|
||||
label = "key1";
|
||||
linux,code = <KEY_A>;
|
||||
gpios = <&pioC 6 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
key2@1 {
|
||||
label = "key2";
|
||||
linux,code = <KEY_B>;
|
||||
gpios = <&pioC 7 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
key3@2 {
|
||||
label = "key3";
|
||||
linux,code = <KEY_C>;
|
||||
gpios = <&pioC 8 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
key4@3 {
|
||||
label = "key4";
|
||||
linux,code = <KEY_D>;
|
||||
gpios = <&pioC 9 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
key5@4 {
|
||||
label = "key5";
|
||||
linux,code = <KEY_E>;
|
||||
gpios = <&pioC 10 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
key6@5 {
|
||||
label = "key6";
|
||||
linux,code = <KEY_F>;
|
||||
gpios = <&pioC 11 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
key7@6 {
|
||||
label = "key7";
|
||||
linux,code = <KEY_G>;
|
||||
gpios = <&pioC 12 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
key8@7 {
|
||||
label = "key8";
|
||||
linux,code = <KEY_H>;
|
||||
gpios = <&pioC 13 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
key9@8 {
|
||||
label = "key9";
|
||||
linux,code = <KEY_I>;
|
||||
gpios = <&pioC 14 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
key10@9 {
|
||||
label = "key10";
|
||||
linux,code = <KEY_J>;
|
||||
gpios = <&pioC 15 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
key11@10 {
|
||||
label = "key11";
|
||||
linux,code = <KEY_K>;
|
||||
gpios = <&pioC 16 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
key12@11 {
|
||||
label = "key12";
|
||||
linux,code = <KEY_L>;
|
||||
gpios = <&pioC 17 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
key13@12 {
|
||||
label = "key13";
|
||||
linux,code = <KEY_M>;
|
||||
gpios = <&pioC 18 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
||||
|
||||
pps0 {
|
||||
compatible = "pps-gpio";
|
||||
gpios = <&pioB 26 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
pps1 {
|
||||
compatible = "pps-gpio";
|
||||
gpios = <&pioB 27 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
dac_vdd:dac_vdd_5v {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "5v";
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
enable-active-high;
|
||||
regulator-boot-on;
|
||||
};
|
||||
|
||||
backlight {
|
||||
compatible = "gpio-backlight";
|
||||
gpios = <&pioC 20 GPIO_ACTIVE_HIGH>;
|
||||
default-on;
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
led1 {
|
||||
label = "led1";
|
||||
gpios = <&pioC 19 GPIO_ACTIVE_LOW>;
|
||||
linux,default-trigger = "heartbeat";
|
||||
default-state = "on";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
// UART LCD
|
||||
&uart1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
// RS485
|
||||
&uart2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
// RS485
|
||||
&uart3 {
|
||||
status = "okay";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart3_pins>, <&uart3_on_uart1>;
|
||||
};
|
||||
|
||||
// PRT-UART0
|
||||
&uart4 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
// SCA-UART0
|
||||
&uart6 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
// PRT-I2C0
|
||||
&i2c2 {
|
||||
status = "okay";
|
||||
|
||||
mcp4728-0@60{
|
||||
compatible = "microchip,mcp4728";
|
||||
reg = <0x60>;
|
||||
vdd-supply = <&dac_vdd>;
|
||||
// 外部电路有时要限制输出电压
|
||||
mcp4728,rawmax = <2928>;
|
||||
};
|
||||
mcp4728-4@64{
|
||||
compatible = "microchip,mcp4728";
|
||||
reg = <0x64>;
|
||||
vdd-supply = <&dac_vdd>;
|
||||
// 外部电路有时要限制输出电压
|
||||
mcp4728,rawmax = <2928>;
|
||||
};
|
||||
};
|
||||
|
||||
// PRT-I2C1
|
||||
&i2c3 {
|
||||
status = "okay";
|
||||
|
||||
sd2068@32 {
|
||||
compatible = "whwave,sd2068";
|
||||
reg = <0x32>;
|
||||
};
|
||||
|
||||
eeprom@57 {
|
||||
compatible = "atmel,24c32";
|
||||
reg = <0x57>;
|
||||
pagesize = <32>;
|
||||
};
|
||||
};
|
||||
|
||||
&spi2 {
|
||||
status = "okay";
|
||||
|
||||
ms518xn@0 {
|
||||
compatible = "ruimeng,ms518xn";
|
||||
reg = <0>;
|
||||
spi-max-frequency = <1000000>;
|
||||
ms518xn-chip-type = "ms5189n";
|
||||
ms518xn-chip-ref = <1>; //4.096V
|
||||
ms518xn-chip-rb = <1>; // do not readback
|
||||
};
|
||||
};
|
||||
|
||||
&spi3 {
|
||||
status = "okay";
|
||||
|
||||
max31865@0 {
|
||||
compatible = "maxim,max31865";
|
||||
reg = <0>;
|
||||
spi-max-frequency = <1000000>;
|
||||
spi-cpha;
|
||||
maxim,3-wire;
|
||||
|
||||
// 利用GPIO切换通道
|
||||
// gpios = <lsb ... msb>
|
||||
use-gpio-channels;
|
||||
channel-bits = <2>;
|
||||
// channel0 --> 0 + affined
|
||||
// 比如两个GPIO LOW 实际上表示都断开的情况
|
||||
// 硬件从 index 1 开始,可以偏移 1
|
||||
channel-affined = <1>;
|
||||
// force+
|
||||
force-gpios = <
|
||||
&pioC 23 0
|
||||
&pioC 32 0
|
||||
>;
|
||||
// in+
|
||||
in-positive-gpios = <
|
||||
&pioC 33 0
|
||||
&pioC 34 0
|
||||
>;
|
||||
// in-
|
||||
in-negative-gpios = <
|
||||
&pioC 35 0
|
||||
&pioC 36 0
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
&gmac0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
@@ -1,569 +0,0 @@
|
||||
CONFIG_LOCALVERSION=".lsgd"
|
||||
# CONFIG_LOCALVERSION_AUTO is not set
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_POSIX_MQUEUE=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_PREEMPT=y
|
||||
CONFIG_BSD_PROCESS_ACCT=y
|
||||
CONFIG_BSD_PROCESS_ACCT_V3=y
|
||||
CONFIG_TASKSTATS=y
|
||||
CONFIG_TASK_DELAY_ACCT=y
|
||||
CONFIG_TASK_XACCT=y
|
||||
CONFIG_TASK_IO_ACCOUNTING=y
|
||||
CONFIG_LOG_BUF_SHIFT=16
|
||||
CONFIG_MEMCG=y
|
||||
CONFIG_BLK_CGROUP=y
|
||||
CONFIG_CFS_BANDWIDTH=y
|
||||
CONFIG_RT_GROUP_SCHED=y
|
||||
CONFIG_CGROUP_PIDS=y
|
||||
CONFIG_CGROUP_FREEZER=y
|
||||
CONFIG_CGROUP_HUGETLB=y
|
||||
CONFIG_CPUSETS=y
|
||||
CONFIG_CGROUP_DEVICE=y
|
||||
CONFIG_CGROUP_CPUACCT=y
|
||||
CONFIG_CGROUP_PERF=y
|
||||
CONFIG_CGROUP_BPF=y
|
||||
CONFIG_NAMESPACES=y
|
||||
CONFIG_USER_NS=y
|
||||
CONFIG_CHECKPOINT_RESTORE=y
|
||||
CONFIG_SCHED_AUTOGROUP=y
|
||||
CONFIG_SYSFS_DEPRECATED=y
|
||||
CONFIG_RELAY=y
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_EXPERT=y
|
||||
CONFIG_BPF_SYSCALL=y
|
||||
CONFIG_USERFAULTFD=y
|
||||
CONFIG_PERF_EVENTS=y
|
||||
# CONFIG_COMPAT_BRK is not set
|
||||
CONFIG_LOONGSON_2K1000=y
|
||||
CONFIG_CPU_HAS_LSX=y
|
||||
CONFIG_CPU_HAS_LASX=y
|
||||
CONFIG_SMP=y
|
||||
CONFIG_NR_CPUS=2
|
||||
CONFIG_KEXEC=y
|
||||
CONFIG_HIBERNATION=y
|
||||
CONFIG_CPU_FREQ=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
||||
CONFIG_CPU_FREQ_GOV_USERSPACE=y
|
||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
|
||||
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
|
||||
CONFIG_MODULES=y
|
||||
CONFIG_MODULE_FORCE_LOAD=y
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_MODULE_FORCE_UNLOAD=y
|
||||
CONFIG_MODVERSIONS=y
|
||||
# CONFIG_BLK_DEV_BSG is not set
|
||||
CONFIG_BLK_DEV_THROTTLING=y
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
CONFIG_IOSCHED_BFQ=y
|
||||
CONFIG_BFQ_GROUP_IOSCHED=y
|
||||
CONFIG_SPARSEMEM_MANUAL=y
|
||||
CONFIG_MEMORY_HOTPLUG=y
|
||||
CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE=y
|
||||
CONFIG_MEMORY_HOTREMOVE=y
|
||||
CONFIG_KSM=y
|
||||
CONFIG_TRANSPARENT_HUGEPAGE=y
|
||||
CONFIG_FRONTSWAP=y
|
||||
CONFIG_CMA_AREAS=19
|
||||
CONFIG_ZSWAP=y
|
||||
CONFIG_ZSWAP_COMPRESSOR_DEFAULT_ZSTD=y
|
||||
CONFIG_Z3FOLD=y
|
||||
CONFIG_NET=y
|
||||
CONFIG_PACKET=y
|
||||
CONFIG_UNIX=y
|
||||
CONFIG_XFRM_USER=y
|
||||
CONFIG_NET_KEY=y
|
||||
CONFIG_INET=y
|
||||
CONFIG_IP_MULTICAST=y
|
||||
CONFIG_IP_ADVANCED_ROUTER=y
|
||||
CONFIG_IP_MULTIPLE_TABLES=y
|
||||
CONFIG_IP_ROUTE_MULTIPATH=y
|
||||
CONFIG_IP_ROUTE_VERBOSE=y
|
||||
CONFIG_IP_PNP=y
|
||||
CONFIG_IP_PNP_DHCP=y
|
||||
CONFIG_IP_PNP_BOOTP=y
|
||||
CONFIG_IP_PNP_RARP=y
|
||||
CONFIG_IP_MROUTE=y
|
||||
CONFIG_INET_ESP=y
|
||||
CONFIG_INET_UDP_DIAG=y
|
||||
CONFIG_TCP_CONG_ADVANCED=y
|
||||
CONFIG_IPV6_ROUTER_PREF=y
|
||||
CONFIG_IPV6_ROUTE_INFO=y
|
||||
CONFIG_IPV6_MROUTE=y
|
||||
CONFIG_NETWORK_PHY_TIMESTAMPING=y
|
||||
CONFIG_NETFILTER=y
|
||||
CONFIG_BRIDGE_NETFILTER=y
|
||||
CONFIG_NF_CONNTRACK=y
|
||||
CONFIG_NF_CONNTRACK_SECMARK=y
|
||||
CONFIG_NF_CONNTRACK_ZONES=y
|
||||
CONFIG_NF_CONNTRACK_EVENTS=y
|
||||
CONFIG_NF_CONNTRACK_TIMEOUT=y
|
||||
CONFIG_NF_CONNTRACK_TIMESTAMP=y
|
||||
CONFIG_NF_CONNTRACK_LABELS=y
|
||||
CONFIG_NF_CONNTRACK_AMANDA=y
|
||||
CONFIG_NF_CONNTRACK_FTP=y
|
||||
CONFIG_NF_CONNTRACK_H323=y
|
||||
CONFIG_NF_CONNTRACK_IRC=y
|
||||
CONFIG_NF_CONNTRACK_NETBIOS_NS=y
|
||||
CONFIG_NF_CONNTRACK_SNMP=y
|
||||
CONFIG_NF_CONNTRACK_PPTP=y
|
||||
CONFIG_NF_CONNTRACK_SANE=y
|
||||
CONFIG_NF_CONNTRACK_SIP=y
|
||||
CONFIG_NF_CONNTRACK_TFTP=y
|
||||
CONFIG_NF_CT_NETLINK=y
|
||||
CONFIG_NF_CT_NETLINK_TIMEOUT=y
|
||||
CONFIG_NETFILTER_XT_MARK=y
|
||||
CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=y
|
||||
CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
|
||||
CONFIG_NETFILTER_XT_MATCH_IPVS=y
|
||||
CONFIG_IP_VS=y
|
||||
CONFIG_IP_VS_PROTO_TCP=y
|
||||
CONFIG_IP_VS_PROTO_UDP=y
|
||||
CONFIG_IP_VS_RR=y
|
||||
CONFIG_IP_VS_NFCT=y
|
||||
CONFIG_NF_SOCKET_IPV4=y
|
||||
CONFIG_NF_TPROXY_IPV4=y
|
||||
CONFIG_NF_DUP_IPV4=y
|
||||
CONFIG_NF_LOG_ARP=y
|
||||
CONFIG_NF_LOG_IPV4=y
|
||||
CONFIG_IP_NF_IPTABLES=y
|
||||
CONFIG_IP_NF_MATCH_AH=y
|
||||
CONFIG_IP_NF_MATCH_ECN=y
|
||||
CONFIG_IP_NF_MATCH_RPFILTER=y
|
||||
CONFIG_IP_NF_MATCH_TTL=y
|
||||
CONFIG_IP_NF_FILTER=y
|
||||
CONFIG_IP_NF_TARGET_REJECT=y
|
||||
CONFIG_IP_NF_TARGET_SYNPROXY=y
|
||||
CONFIG_IP_NF_NAT=y
|
||||
CONFIG_IP_NF_TARGET_MASQUERADE=y
|
||||
CONFIG_IP_NF_TARGET_NETMAP=y
|
||||
CONFIG_IP_NF_TARGET_REDIRECT=y
|
||||
CONFIG_IP_NF_MANGLE=y
|
||||
CONFIG_IP_NF_TARGET_CLUSTERIP=y
|
||||
CONFIG_IP_NF_TARGET_ECN=y
|
||||
CONFIG_IP_NF_TARGET_TTL=y
|
||||
CONFIG_IP_NF_RAW=y
|
||||
CONFIG_IP_NF_SECURITY=y
|
||||
CONFIG_IP_NF_ARPTABLES=y
|
||||
CONFIG_IP_NF_ARPFILTER=y
|
||||
CONFIG_IP_NF_ARP_MANGLE=y
|
||||
CONFIG_IP6_NF_IPTABLES=y
|
||||
CONFIG_IP6_NF_FILTER=y
|
||||
CONFIG_RDS=y
|
||||
CONFIG_BRIDGE=y
|
||||
CONFIG_BRIDGE_VLAN_FILTERING=y
|
||||
CONFIG_VLAN_8021Q=y
|
||||
CONFIG_NETLINK_DIAG=y
|
||||
CONFIG_CGROUP_NET_PRIO=y
|
||||
CONFIG_CAN=y
|
||||
CONFIG_CAN_SJA1000=y
|
||||
CONFIG_CAN_SJA1000_PLATFORM=y
|
||||
CONFIG_BT=y
|
||||
CONFIG_BT_HCIBTUSB=m
|
||||
CONFIG_CFG80211=y
|
||||
CONFIG_NL80211_TESTMODE=y
|
||||
CONFIG_CFG80211_DEVELOPER_WARNINGS=y
|
||||
CONFIG_CFG80211_CERTIFICATION_ONUS=y
|
||||
CONFIG_CFG80211_REG_CELLULAR_HINTS=y
|
||||
CONFIG_CFG80211_REG_RELAX_NO_IR=y
|
||||
CONFIG_MAC80211=y
|
||||
CONFIG_MAC80211_MESH=y
|
||||
CONFIG_RFKILL=y
|
||||
CONFIG_PCIEPORTBUS=y
|
||||
CONFIG_HOTPLUG_PCI_PCIE=y
|
||||
CONFIG_PCIEAER=y
|
||||
# CONFIG_PCIEASPM is not set
|
||||
CONFIG_PCI_IOV=y
|
||||
CONFIG_HOTPLUG_PCI=y
|
||||
CONFIG_HOTPLUG_PCI_SHPC=y
|
||||
CONFIG_UEVENT_HELPER=y
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
CONFIG_MTD_BLOCK2MTD=y
|
||||
CONFIG_MTD_RAW_NAND=y
|
||||
CONFIG_MTD_NAND_ECC_SW_BCH=y
|
||||
CONFIG_MTD_NAND_LS=y
|
||||
CONFIG_MTD_SPI_NOR=y
|
||||
CONFIG_MTD_UBI=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_CRYPTOLOOP=y
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_SIZE=32768
|
||||
CONFIG_BLK_DEV_NVME=y
|
||||
CONFIG_EEPROM_AT24=y
|
||||
# CONFIG_SCSI_PROC_FS is not set
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_SG=y
|
||||
CONFIG_SCSI_CONSTANTS=y
|
||||
CONFIG_SCSI_LOGGING=y
|
||||
# CONFIG_SCSI_LOWLEVEL is not set
|
||||
CONFIG_ATA=y
|
||||
CONFIG_SATA_AHCI=y
|
||||
CONFIG_SATA_AHCI_PLATFORM=y
|
||||
CONFIG_PATA_ATIIXP=y
|
||||
CONFIG_MD=y
|
||||
CONFIG_BLK_DEV_DM=y
|
||||
CONFIG_DM_THIN_PROVISIONING=y
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_DUMMY=y
|
||||
CONFIG_MACVLAN=y
|
||||
CONFIG_IPVLAN=y
|
||||
CONFIG_VXLAN=y
|
||||
CONFIG_VETH=y
|
||||
# CONFIG_NET_VENDOR_3COM is not set
|
||||
# CONFIG_NET_VENDOR_ADAPTEC is not set
|
||||
# CONFIG_NET_VENDOR_AGERE is not set
|
||||
# CONFIG_NET_VENDOR_ALACRITECH is not set
|
||||
# CONFIG_NET_VENDOR_ALTEON is not set
|
||||
# CONFIG_NET_VENDOR_AMAZON is not set
|
||||
# CONFIG_NET_VENDOR_AMD is not set
|
||||
# CONFIG_NET_VENDOR_AQUANTIA is not set
|
||||
# CONFIG_NET_VENDOR_ARC is not set
|
||||
# CONFIG_NET_VENDOR_ATHEROS is not set
|
||||
# CONFIG_NET_VENDOR_AURORA is not set
|
||||
# CONFIG_NET_VENDOR_BROADCOM is not set
|
||||
# CONFIG_NET_VENDOR_BROCADE is not set
|
||||
# CONFIG_NET_VENDOR_CADENCE is not set
|
||||
# CONFIG_NET_VENDOR_CAVIUM is not set
|
||||
# CONFIG_NET_VENDOR_CHELSIO is not set
|
||||
# CONFIG_NET_VENDOR_CISCO is not set
|
||||
# CONFIG_NET_VENDOR_CORTINA is not set
|
||||
# CONFIG_NET_VENDOR_DEC is not set
|
||||
# CONFIG_NET_VENDOR_DLINK is not set
|
||||
# CONFIG_NET_VENDOR_EMULEX is not set
|
||||
# CONFIG_NET_VENDOR_EZCHIP is not set
|
||||
# CONFIG_NET_VENDOR_GOOGLE is not set
|
||||
# CONFIG_NET_VENDOR_HUAWEI is not set
|
||||
# CONFIG_NET_VENDOR_INTEL is not set
|
||||
# CONFIG_NET_VENDOR_MARVELL is not set
|
||||
# CONFIG_NET_VENDOR_MELLANOX is not set
|
||||
# CONFIG_NET_VENDOR_MICREL is not set
|
||||
# CONFIG_NET_VENDOR_MICROCHIP is not set
|
||||
# CONFIG_NET_VENDOR_MICROSEMI is not set
|
||||
# CONFIG_NET_VENDOR_MYRI is not set
|
||||
# CONFIG_NET_VENDOR_NATSEMI is not set
|
||||
# CONFIG_NET_VENDOR_NETERION is not set
|
||||
# CONFIG_NET_VENDOR_NETRONOME is not set
|
||||
# CONFIG_NET_VENDOR_NI is not set
|
||||
# CONFIG_NET_VENDOR_NVIDIA is not set
|
||||
# CONFIG_NET_VENDOR_OKI is not set
|
||||
# CONFIG_NET_VENDOR_PACKET_ENGINES is not set
|
||||
# CONFIG_NET_VENDOR_PENSANDO is not set
|
||||
# CONFIG_NET_VENDOR_QLOGIC is not set
|
||||
# CONFIG_NET_VENDOR_QUALCOMM is not set
|
||||
# CONFIG_NET_VENDOR_RDC is not set
|
||||
# CONFIG_NET_VENDOR_REALTEK is not set
|
||||
# CONFIG_NET_VENDOR_RENESAS is not set
|
||||
# CONFIG_NET_VENDOR_ROCKER is not set
|
||||
# CONFIG_NET_VENDOR_SAMSUNG is not set
|
||||
# CONFIG_NET_VENDOR_SEEQ is not set
|
||||
# CONFIG_NET_VENDOR_SOLARFLARE is not set
|
||||
# CONFIG_NET_VENDOR_SILAN is not set
|
||||
# CONFIG_NET_VENDOR_SIS is not set
|
||||
# CONFIG_NET_VENDOR_SMSC is not set
|
||||
# CONFIG_NET_VENDOR_SOCIONEXT is not set
|
||||
CONFIG_STMMAC_ETH=y
|
||||
CONFIG_STMMAC_PCI=y
|
||||
# CONFIG_NET_VENDOR_SUN is not set
|
||||
# CONFIG_NET_VENDOR_SYNOPSYS is not set
|
||||
# CONFIG_NET_VENDOR_TEHUTI is not set
|
||||
# CONFIG_NET_VENDOR_TI is not set
|
||||
# CONFIG_NET_VENDOR_VIA is not set
|
||||
# CONFIG_NET_VENDOR_WIZNET is not set
|
||||
# CONFIG_NET_VENDOR_XILINX is not set
|
||||
CONFIG_MOTORCOMM_PHY=y
|
||||
CONFIG_USB_USBNET=y
|
||||
# CONFIG_WLAN_VENDOR_ADMTEK is not set
|
||||
# CONFIG_WLAN_VENDOR_ATH is not set
|
||||
# CONFIG_WLAN_VENDOR_ATMEL is not set
|
||||
# CONFIG_WLAN_VENDOR_BROADCOM is not set
|
||||
# CONFIG_WLAN_VENDOR_CISCO is not set
|
||||
CONFIG_IPW2100=m
|
||||
CONFIG_IPW2100_MONITOR=y
|
||||
CONFIG_IPW2200=m
|
||||
CONFIG_IPW2200_MONITOR=y
|
||||
CONFIG_IPW2200_PROMISCUOUS=y
|
||||
CONFIG_IPW2200_QOS=y
|
||||
CONFIG_LIBIPW_DEBUG=y
|
||||
CONFIG_IWL4965=m
|
||||
CONFIG_IWL3945=m
|
||||
CONFIG_IWLWIFI=m
|
||||
CONFIG_IWLDVM=m
|
||||
CONFIG_IWLMVM=m
|
||||
CONFIG_IWLWIFI_BCAST_FILTERING=y
|
||||
# CONFIG_WLAN_VENDOR_INTERSIL is not set
|
||||
# CONFIG_WLAN_VENDOR_MARVELL is not set
|
||||
# CONFIG_WLAN_VENDOR_MEDIATEK is not set
|
||||
# CONFIG_WLAN_VENDOR_MICROCHIP is not set
|
||||
# CONFIG_WLAN_VENDOR_RALINK is not set
|
||||
CONFIG_RTL8180=m
|
||||
CONFIG_RTL8187=m
|
||||
CONFIG_RTL_CARDS=m
|
||||
CONFIG_RTL8XXXU=m
|
||||
CONFIG_RTW88=m
|
||||
CONFIG_RTW88_8822BE=m
|
||||
CONFIG_RTW88_8822CE=m
|
||||
CONFIG_RTW88_8723DE=m
|
||||
CONFIG_RTW88_8821CE=m
|
||||
# CONFIG_WLAN_VENDOR_RSI is not set
|
||||
# CONFIG_WLAN_VENDOR_ST is not set
|
||||
# CONFIG_WLAN_VENDOR_TI is not set
|
||||
# CONFIG_WLAN_VENDOR_ZYDAS is not set
|
||||
# CONFIG_WLAN_VENDOR_QUANTENNA is not set
|
||||
CONFIG_INPUT_MOUSEDEV=y
|
||||
CONFIG_INPUT_MOUSEDEV_PSAUX=y
|
||||
CONFIG_INPUT_EVDEV=y
|
||||
CONFIG_KEYBOARD_GPIO_POLLED=y
|
||||
# CONFIG_MOUSE_PS2 is not set
|
||||
CONFIG_INPUT_TOUCHSCREEN=y
|
||||
CONFIG_TOUCHSCREEN_GOODIX=y
|
||||
# CONFIG_SERIO_SERPORT is not set
|
||||
CONFIG_LEGACY_PTY_COUNT=16
|
||||
CONFIG_SERIAL_8250=y
|
||||
CONFIG_SERIAL_8250_CONSOLE=y
|
||||
# CONFIG_SERIAL_8250_PCI is not set
|
||||
CONFIG_SERIAL_8250_NR_UARTS=16
|
||||
CONFIG_SERIAL_8250_RUNTIME_UARTS=16
|
||||
CONFIG_SERIAL_8250_EXTENDED=y
|
||||
CONFIG_SERIAL_8250_MANY_PORTS=y
|
||||
CONFIG_SERIAL_8250_SHARE_IRQ=y
|
||||
CONFIG_SERIAL_8250_RSA=y
|
||||
CONFIG_SERIAL_OF_PLATFORM=y
|
||||
CONFIG_SERIAL_NONSTANDARD=y
|
||||
CONFIG_SERIAL_DEV_BUS=y
|
||||
CONFIG_HW_RANDOM=y
|
||||
CONFIG_I2C_CHARDEV=y
|
||||
CONFIG_I2C_MUX_GPMUX=y
|
||||
CONFIG_I2C_MUX_REG=y
|
||||
CONFIG_I2C_GPIO=y
|
||||
CONFIG_I2C_OCORES=y
|
||||
CONFIG_I2C_LS2X=y
|
||||
CONFIG_I2C_DEBUG_CORE=y
|
||||
CONFIG_SPI=y
|
||||
CONFIG_SPI_LS=y
|
||||
CONFIG_PINCTRL=y
|
||||
CONFIG_PINCTRL_LS2K1000=y
|
||||
CONFIG_PINCTRL_SINGLE=y
|
||||
CONFIG_GPIO_SYSFS=y
|
||||
CONFIG_GPIO_LOONGSON=y
|
||||
CONFIG_GPIO_PCA953X=y
|
||||
CONFIG_GPIO_PCA953X_IRQ=y
|
||||
CONFIG_POWER_RESET=y
|
||||
CONFIG_POWER_RESET_SYSCON=y
|
||||
CONFIG_POWER_RESET_SYSCON_POWEROFF=y
|
||||
CONFIG_POWER_SUPPLY=y
|
||||
CONFIG_SENSORS_GPIO_FAN=y
|
||||
CONFIG_THERMAL=y
|
||||
CONFIG_LOONGSON2K_THERMAL=y
|
||||
CONFIG_WATCHDOG=y
|
||||
CONFIG_LOONGSON2_WDT=y
|
||||
CONFIG_REGULATOR=y
|
||||
CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
||||
# CONFIG_MEDIA_CEC_SUPPORT is not set
|
||||
CONFIG_MEDIA_SUPPORT=y
|
||||
CONFIG_VIDEO_V4L2_SUBDEV_API=y
|
||||
CONFIG_VIDEO_ADV_DEBUG=y
|
||||
CONFIG_VIDEO_FIXED_MINOR_RANGES=y
|
||||
CONFIG_MEDIA_USB_SUPPORT=y
|
||||
CONFIG_USB_VIDEO_CLASS=y
|
||||
CONFIG_USB_GSPCA=y
|
||||
CONFIG_USB_M5602=y
|
||||
CONFIG_USB_STV06XX=y
|
||||
CONFIG_USB_GL860=y
|
||||
CONFIG_USB_GSPCA_BENQ=y
|
||||
CONFIG_USB_GSPCA_CONEX=y
|
||||
CONFIG_USB_GSPCA_CPIA1=y
|
||||
CONFIG_USB_GSPCA_DTCS033=y
|
||||
CONFIG_USB_GSPCA_ETOMS=y
|
||||
CONFIG_USB_GSPCA_FINEPIX=y
|
||||
CONFIG_USB_GSPCA_JEILINJ=y
|
||||
CONFIG_USB_GSPCA_JL2005BCD=y
|
||||
CONFIG_USB_GSPCA_KONICA=y
|
||||
CONFIG_USB_GSPCA_MARS=y
|
||||
CONFIG_USB_GSPCA_MR97310A=y
|
||||
CONFIG_USB_GSPCA_NW80X=y
|
||||
CONFIG_USB_GSPCA_OV519=y
|
||||
CONFIG_USB_GSPCA_OV534=y
|
||||
CONFIG_USB_GSPCA_OV534_9=y
|
||||
CONFIG_USB_GSPCA_PAC207=y
|
||||
CONFIG_USB_GSPCA_PAC7302=y
|
||||
CONFIG_USB_GSPCA_PAC7311=y
|
||||
CONFIG_USB_GSPCA_SE401=y
|
||||
CONFIG_USB_GSPCA_SN9C2028=y
|
||||
CONFIG_USB_GSPCA_SN9C20X=y
|
||||
CONFIG_USB_GSPCA_SONIXB=y
|
||||
CONFIG_USB_GSPCA_SONIXJ=y
|
||||
CONFIG_USB_GSPCA_SPCA500=y
|
||||
CONFIG_USB_GSPCA_SPCA501=y
|
||||
CONFIG_USB_GSPCA_SPCA505=y
|
||||
CONFIG_USB_GSPCA_SPCA506=y
|
||||
CONFIG_USB_GSPCA_SPCA508=y
|
||||
CONFIG_USB_GSPCA_SPCA561=y
|
||||
CONFIG_USB_GSPCA_SPCA1528=y
|
||||
CONFIG_USB_GSPCA_SQ905=y
|
||||
CONFIG_USB_GSPCA_SQ905C=y
|
||||
CONFIG_USB_GSPCA_SQ930X=y
|
||||
CONFIG_USB_GSPCA_STK014=y
|
||||
CONFIG_USB_GSPCA_STK1135=y
|
||||
CONFIG_USB_GSPCA_STV0680=y
|
||||
CONFIG_USB_GSPCA_SUNPLUS=y
|
||||
CONFIG_USB_GSPCA_T613=y
|
||||
CONFIG_USB_GSPCA_TOPRO=y
|
||||
CONFIG_USB_GSPCA_TOUPTEK=y
|
||||
CONFIG_USB_GSPCA_TV8532=y
|
||||
CONFIG_USB_GSPCA_VC032X=y
|
||||
CONFIG_USB_GSPCA_VICAM=y
|
||||
CONFIG_USB_GSPCA_XIRLINK_CIT=y
|
||||
CONFIG_USB_GSPCA_ZC3XX=y
|
||||
CONFIG_DRM=y
|
||||
# CONFIG_DRM_LOONGSON_PCI_DRIVER is not set
|
||||
# CONFIG_DRM_LSDC is not set
|
||||
CONFIG_DRM_PANEL_LVDS=y
|
||||
CONFIG_DRM_DISPLAY_CONNECTOR=y
|
||||
CONFIG_DRM_SII902X=y
|
||||
CONFIG_DRM_SIMPLE_BRIDGE=y
|
||||
CONFIG_FB_RADEON=y
|
||||
CONFIG_BACKLIGHT_PWM=y
|
||||
CONFIG_BACKLIGHT_GPIO=y
|
||||
# CONFIG_VGA_CONSOLE is not set
|
||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
|
||||
CONFIG_LOGO=y
|
||||
# CONFIG_LOGO_LINUX_MONO is not set
|
||||
# CONFIG_LOGO_LINUX_VGA16 is not set
|
||||
CONFIG_SOUND=y
|
||||
CONFIG_SND=y
|
||||
CONFIG_SND_OSSEMUL=y
|
||||
CONFIG_SND_MIXER_OSS=y
|
||||
CONFIG_SND_PCM_OSS=y
|
||||
CONFIG_SND_DYNAMIC_MINORS=y
|
||||
CONFIG_SND_SEQUENCER=y
|
||||
CONFIG_SND_SEQ_DUMMY=y
|
||||
CONFIG_SND_SEQUENCER_OSS=y
|
||||
# CONFIG_SND_DRIVERS is not set
|
||||
# CONFIG_SND_PCI is not set
|
||||
# CONFIG_SND_SPI is not set
|
||||
CONFIG_SND_USB_AUDIO=y
|
||||
CONFIG_SND_SOC=y
|
||||
CONFIG_SND_LS1X_SOC=y
|
||||
CONFIG_SND_LS1X_SOC_BOARD1C=y
|
||||
CONFIG_SND_SOC_ES7210=y
|
||||
CONFIG_HIDRAW=y
|
||||
CONFIG_HID_MULTITOUCH=y
|
||||
CONFIG_HID_PID=y
|
||||
CONFIG_USB_HIDDEV=y
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_MON=y
|
||||
CONFIG_USB_EHCI_HCD=y
|
||||
CONFIG_USB_EHCI_ROOT_HUB_TT=y
|
||||
CONFIG_USB_EHCI_HCD_PLATFORM=y
|
||||
CONFIG_USB_OHCI_HCD=y
|
||||
# CONFIG_USB_OHCI_HCD_PCI is not set
|
||||
CONFIG_USB_OHCI_HCD_PLATFORM=y
|
||||
CONFIG_USB_ACM=y
|
||||
CONFIG_USB_STORAGE=y
|
||||
CONFIG_USB_DWC2=y
|
||||
CONFIG_USB_SERIAL=y
|
||||
CONFIG_USB_SERIAL_OPTION=y
|
||||
CONFIG_LEDS_CLASS=y
|
||||
CONFIG_LEDS_GPIO=y
|
||||
CONFIG_LEDS_PWM=y
|
||||
CONFIG_LEDS_TRIGGER_HEARTBEAT=y
|
||||
CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
|
||||
CONFIG_LEDS_TRIGGER_AUDIO=y
|
||||
CONFIG_RTC_CLASS=y
|
||||
CONFIG_RTC_DRV_SD3078=y
|
||||
CONFIG_RTC_DRV_LS2X=y
|
||||
CONFIG_DMADEVICES=y
|
||||
CONFIG_LS_APBDMAC=y
|
||||
# CONFIG_VIRTIO_MENU is not set
|
||||
# CONFIG_VHOST_MENU is not set
|
||||
CONFIG_STAGING=y
|
||||
CONFIG_R8188EU=y
|
||||
# CONFIG_LOONGARCH_PLATFORM_DEVICES is not set
|
||||
CONFIG_LOONGSON2_SYSCLK_SOFT=y
|
||||
# CONFIG_IOMMU_SUPPORT is not set
|
||||
CONFIG_PM_DEVFREQ=y
|
||||
CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
|
||||
CONFIG_DEVFREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_DEVFREQ_GOV_POWERSAVE=y
|
||||
CONFIG_DEVFREQ_GOV_USERSPACE=y
|
||||
CONFIG_PWM=y
|
||||
CONFIG_PWM_LS=y
|
||||
CONFIG_EXT2_FS=y
|
||||
CONFIG_EXT2_FS_XATTR=y
|
||||
CONFIG_EXT2_FS_POSIX_ACL=y
|
||||
CONFIG_EXT2_FS_SECURITY=y
|
||||
CONFIG_EXT3_FS=y
|
||||
CONFIG_EXT3_FS_POSIX_ACL=y
|
||||
CONFIG_EXT3_FS_SECURITY=y
|
||||
CONFIG_BTRFS_FS=y
|
||||
CONFIG_BTRFS_FS_POSIX_ACL=y
|
||||
CONFIG_FANOTIFY=y
|
||||
CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
|
||||
CONFIG_QUOTA=y
|
||||
# CONFIG_PRINT_QUOTA_WARNING is not set
|
||||
CONFIG_AUTOFS4_FS=y
|
||||
CONFIG_OVERLAY_FS=y
|
||||
CONFIG_OVERLAY_FS_INDEX=y
|
||||
CONFIG_OVERLAY_FS_XINO_AUTO=y
|
||||
CONFIG_OVERLAY_FS_METACOPY=y
|
||||
CONFIG_FSCACHE=y
|
||||
CONFIG_ISO9660_FS=y
|
||||
CONFIG_JOLIET=y
|
||||
CONFIG_ZISOFS=y
|
||||
CONFIG_UDF_FS=y
|
||||
CONFIG_MSDOS_FS=y
|
||||
CONFIG_VFAT_FS=y
|
||||
CONFIG_FAT_DEFAULT_UTF8=y
|
||||
CONFIG_EXFAT_FS=y
|
||||
CONFIG_PROC_KCORE=y
|
||||
CONFIG_TMPFS=y
|
||||
CONFIG_TMPFS_POSIX_ACL=y
|
||||
CONFIG_HUGETLBFS=y
|
||||
CONFIG_CONFIGFS_FS=y
|
||||
CONFIG_UBIFS_FS=y
|
||||
CONFIG_UBIFS_FS_ADVANCED_COMPR=y
|
||||
CONFIG_SQUASHFS=y
|
||||
CONFIG_SQUASHFS_XATTR=y
|
||||
CONFIG_SQUASHFS_LZ4=y
|
||||
CONFIG_SQUASHFS_LZO=y
|
||||
CONFIG_SQUASHFS_XZ=y
|
||||
CONFIG_NFS_FS=y
|
||||
CONFIG_NFS_V3_ACL=y
|
||||
CONFIG_NFS_V4=y
|
||||
CONFIG_NFS_V4_1=y
|
||||
CONFIG_NFS_V4_2=y
|
||||
CONFIG_ROOT_NFS=y
|
||||
CONFIG_NFSD=y
|
||||
CONFIG_NFSD_V3_ACL=y
|
||||
CONFIG_NFSD_V4=y
|
||||
CONFIG_NFSD_BLOCKLAYOUT=y
|
||||
CONFIG_NLS_CODEPAGE_437=y
|
||||
CONFIG_NLS_CODEPAGE_936=y
|
||||
CONFIG_NLS_ASCII=y
|
||||
CONFIG_NLS_ISO8859_1=y
|
||||
CONFIG_NLS_UTF8=y
|
||||
CONFIG_KEY_DH_OPERATIONS=y
|
||||
CONFIG_SECURITY=y
|
||||
CONFIG_SECURITY_SELINUX=y
|
||||
CONFIG_SECURITY_SELINUX_BOOTPARAM=y
|
||||
CONFIG_SECURITY_SELINUX_DISABLE=y
|
||||
CONFIG_SECURITY_APPARMOR=y
|
||||
CONFIG_SECURITY_YAMA=y
|
||||
CONFIG_DEFAULT_SECURITY_DAC=y
|
||||
# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set
|
||||
CONFIG_PRINTK_TIME=y
|
||||
CONFIG_STRIP_ASM_SYMS=y
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
# CONFIG_SCHED_DEBUG is not set
|
||||
CONFIG_SCHEDSTATS=y
|
||||
# CONFIG_DEBUG_PREEMPT is not set
|
||||
# CONFIG_FTRACE is not set
|
||||
CONFIG_CMDLINE_BOOL=y
|
||||
CONFIG_CMDLINE="fbcon=logo-pos:center fbcon=logo-count:1"
|
||||
CONFIG_UNWINDER_ORC=y
|
||||
@@ -1,587 +0,0 @@
|
||||
CONFIG_LOCALVERSION=".lsgd"
|
||||
# CONFIG_LOCALVERSION_AUTO is not set
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_POSIX_MQUEUE=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_PREEMPT=y
|
||||
CONFIG_BSD_PROCESS_ACCT=y
|
||||
CONFIG_BSD_PROCESS_ACCT_V3=y
|
||||
CONFIG_TASKSTATS=y
|
||||
CONFIG_TASK_DELAY_ACCT=y
|
||||
CONFIG_TASK_XACCT=y
|
||||
CONFIG_TASK_IO_ACCOUNTING=y
|
||||
CONFIG_LOG_BUF_SHIFT=16
|
||||
CONFIG_MEMCG=y
|
||||
CONFIG_BLK_CGROUP=y
|
||||
CONFIG_CFS_BANDWIDTH=y
|
||||
CONFIG_RT_GROUP_SCHED=y
|
||||
CONFIG_CGROUP_PIDS=y
|
||||
CONFIG_CGROUP_FREEZER=y
|
||||
CONFIG_CGROUP_HUGETLB=y
|
||||
CONFIG_CPUSETS=y
|
||||
CONFIG_CGROUP_DEVICE=y
|
||||
CONFIG_CGROUP_CPUACCT=y
|
||||
CONFIG_CGROUP_PERF=y
|
||||
CONFIG_CGROUP_BPF=y
|
||||
CONFIG_NAMESPACES=y
|
||||
CONFIG_USER_NS=y
|
||||
CONFIG_CHECKPOINT_RESTORE=y
|
||||
CONFIG_SCHED_AUTOGROUP=y
|
||||
CONFIG_SYSFS_DEPRECATED=y
|
||||
CONFIG_RELAY=y
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_EXPERT=y
|
||||
CONFIG_BPF_SYSCALL=y
|
||||
CONFIG_USERFAULTFD=y
|
||||
CONFIG_PERF_EVENTS=y
|
||||
# CONFIG_COMPAT_BRK is not set
|
||||
CONFIG_LOONGSON_2K1000=y
|
||||
CONFIG_CPU_HAS_LSX=y
|
||||
CONFIG_CPU_HAS_LASX=y
|
||||
CONFIG_SMP=y
|
||||
CONFIG_NR_CPUS=2
|
||||
CONFIG_KEXEC=y
|
||||
CONFIG_HIBERNATION=y
|
||||
CONFIG_CPU_FREQ=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
||||
CONFIG_CPU_FREQ_GOV_USERSPACE=y
|
||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
|
||||
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
|
||||
CONFIG_MODULES=y
|
||||
CONFIG_MODULE_FORCE_LOAD=y
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_MODULE_FORCE_UNLOAD=y
|
||||
CONFIG_MODVERSIONS=y
|
||||
CONFIG_TRIM_UNUSED_KSYMS=y
|
||||
# CONFIG_BLK_DEV_BSG is not set
|
||||
CONFIG_BLK_DEV_THROTTLING=y
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
CONFIG_IOSCHED_BFQ=y
|
||||
CONFIG_BFQ_GROUP_IOSCHED=y
|
||||
CONFIG_SPARSEMEM_MANUAL=y
|
||||
CONFIG_MEMORY_HOTPLUG=y
|
||||
CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE=y
|
||||
CONFIG_MEMORY_HOTREMOVE=y
|
||||
CONFIG_KSM=y
|
||||
CONFIG_TRANSPARENT_HUGEPAGE=y
|
||||
CONFIG_FRONTSWAP=y
|
||||
CONFIG_CMA_AREAS=19
|
||||
CONFIG_ZSWAP=y
|
||||
CONFIG_ZSWAP_COMPRESSOR_DEFAULT_ZSTD=y
|
||||
CONFIG_Z3FOLD=y
|
||||
CONFIG_NET=y
|
||||
CONFIG_PACKET=y
|
||||
CONFIG_UNIX=y
|
||||
CONFIG_XFRM_USER=y
|
||||
CONFIG_NET_KEY=y
|
||||
CONFIG_INET=y
|
||||
CONFIG_IP_MULTICAST=y
|
||||
CONFIG_IP_ADVANCED_ROUTER=y
|
||||
CONFIG_IP_MULTIPLE_TABLES=y
|
||||
CONFIG_IP_ROUTE_MULTIPATH=y
|
||||
CONFIG_IP_ROUTE_VERBOSE=y
|
||||
CONFIG_IP_PNP=y
|
||||
CONFIG_IP_PNP_DHCP=y
|
||||
CONFIG_IP_PNP_BOOTP=y
|
||||
CONFIG_IP_PNP_RARP=y
|
||||
CONFIG_IP_MROUTE=y
|
||||
CONFIG_INET_ESP=y
|
||||
CONFIG_INET_UDP_DIAG=y
|
||||
CONFIG_TCP_CONG_ADVANCED=y
|
||||
CONFIG_IPV6_ROUTER_PREF=y
|
||||
CONFIG_IPV6_ROUTE_INFO=y
|
||||
CONFIG_IPV6_MROUTE=y
|
||||
CONFIG_NETWORK_PHY_TIMESTAMPING=y
|
||||
CONFIG_NETFILTER=y
|
||||
CONFIG_BRIDGE_NETFILTER=y
|
||||
CONFIG_NF_CONNTRACK=y
|
||||
CONFIG_NF_CONNTRACK_SECMARK=y
|
||||
CONFIG_NF_CONNTRACK_ZONES=y
|
||||
CONFIG_NF_CONNTRACK_EVENTS=y
|
||||
CONFIG_NF_CONNTRACK_TIMEOUT=y
|
||||
CONFIG_NF_CONNTRACK_TIMESTAMP=y
|
||||
CONFIG_NF_CONNTRACK_LABELS=y
|
||||
CONFIG_NF_CONNTRACK_AMANDA=y
|
||||
CONFIG_NF_CONNTRACK_FTP=y
|
||||
CONFIG_NF_CONNTRACK_H323=y
|
||||
CONFIG_NF_CONNTRACK_IRC=y
|
||||
CONFIG_NF_CONNTRACK_NETBIOS_NS=y
|
||||
CONFIG_NF_CONNTRACK_SNMP=y
|
||||
CONFIG_NF_CONNTRACK_PPTP=y
|
||||
CONFIG_NF_CONNTRACK_SANE=y
|
||||
CONFIG_NF_CONNTRACK_SIP=y
|
||||
CONFIG_NF_CONNTRACK_TFTP=y
|
||||
CONFIG_NF_CT_NETLINK=y
|
||||
CONFIG_NF_CT_NETLINK_TIMEOUT=y
|
||||
CONFIG_NETFILTER_XT_MARK=y
|
||||
CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=y
|
||||
CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
|
||||
CONFIG_NETFILTER_XT_MATCH_IPVS=y
|
||||
CONFIG_IP_VS=y
|
||||
CONFIG_IP_VS_PROTO_TCP=y
|
||||
CONFIG_IP_VS_PROTO_UDP=y
|
||||
CONFIG_IP_VS_RR=y
|
||||
CONFIG_IP_VS_NFCT=y
|
||||
CONFIG_NF_SOCKET_IPV4=y
|
||||
CONFIG_NF_TPROXY_IPV4=y
|
||||
CONFIG_NF_DUP_IPV4=y
|
||||
CONFIG_NF_LOG_ARP=y
|
||||
CONFIG_NF_LOG_IPV4=y
|
||||
CONFIG_IP_NF_IPTABLES=y
|
||||
CONFIG_IP_NF_MATCH_AH=y
|
||||
CONFIG_IP_NF_MATCH_ECN=y
|
||||
CONFIG_IP_NF_MATCH_RPFILTER=y
|
||||
CONFIG_IP_NF_MATCH_TTL=y
|
||||
CONFIG_IP_NF_FILTER=y
|
||||
CONFIG_IP_NF_TARGET_REJECT=y
|
||||
CONFIG_IP_NF_TARGET_SYNPROXY=y
|
||||
CONFIG_IP_NF_NAT=y
|
||||
CONFIG_IP_NF_TARGET_MASQUERADE=y
|
||||
CONFIG_IP_NF_TARGET_NETMAP=y
|
||||
CONFIG_IP_NF_TARGET_REDIRECT=y
|
||||
CONFIG_IP_NF_MANGLE=y
|
||||
CONFIG_IP_NF_TARGET_CLUSTERIP=y
|
||||
CONFIG_IP_NF_TARGET_ECN=y
|
||||
CONFIG_IP_NF_TARGET_TTL=y
|
||||
CONFIG_IP_NF_RAW=y
|
||||
CONFIG_IP_NF_SECURITY=y
|
||||
CONFIG_IP_NF_ARPTABLES=y
|
||||
CONFIG_IP_NF_ARPFILTER=y
|
||||
CONFIG_IP_NF_ARP_MANGLE=y
|
||||
CONFIG_IP6_NF_IPTABLES=y
|
||||
CONFIG_IP6_NF_FILTER=y
|
||||
CONFIG_RDS=y
|
||||
CONFIG_BRIDGE=y
|
||||
CONFIG_BRIDGE_VLAN_FILTERING=y
|
||||
CONFIG_VLAN_8021Q=y
|
||||
CONFIG_NETLINK_DIAG=y
|
||||
CONFIG_CGROUP_NET_PRIO=y
|
||||
CONFIG_CAN=y
|
||||
CONFIG_CAN_SJA1000=y
|
||||
CONFIG_CAN_SJA1000_PLATFORM=y
|
||||
CONFIG_BT=y
|
||||
CONFIG_BT_HCIBTUSB=m
|
||||
CONFIG_CFG80211=y
|
||||
CONFIG_NL80211_TESTMODE=y
|
||||
CONFIG_CFG80211_DEVELOPER_WARNINGS=y
|
||||
CONFIG_CFG80211_CERTIFICATION_ONUS=y
|
||||
CONFIG_CFG80211_REG_CELLULAR_HINTS=y
|
||||
CONFIG_CFG80211_REG_RELAX_NO_IR=y
|
||||
CONFIG_MAC80211=y
|
||||
CONFIG_MAC80211_MESH=y
|
||||
CONFIG_RFKILL=y
|
||||
CONFIG_PCIEPORTBUS=y
|
||||
CONFIG_HOTPLUG_PCI_PCIE=y
|
||||
CONFIG_PCIEAER=y
|
||||
# CONFIG_PCIEASPM is not set
|
||||
CONFIG_PCI_IOV=y
|
||||
CONFIG_HOTPLUG_PCI=y
|
||||
CONFIG_HOTPLUG_PCI_SHPC=y
|
||||
CONFIG_UEVENT_HELPER=y
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
CONFIG_MTD_BLOCK2MTD=y
|
||||
CONFIG_MTD_RAW_NAND=y
|
||||
CONFIG_MTD_NAND_ECC_SW_BCH=y
|
||||
CONFIG_MTD_NAND_LS=y
|
||||
CONFIG_MTD_SPI_NOR=y
|
||||
CONFIG_MTD_UBI=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_CRYPTOLOOP=y
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_SIZE=32768
|
||||
CONFIG_BLK_DEV_NVME=y
|
||||
CONFIG_LS_LOCALIO=y
|
||||
CONFIG_EEPROM_AT24=y
|
||||
# CONFIG_SCSI_PROC_FS is not set
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_SG=y
|
||||
CONFIG_SCSI_CONSTANTS=y
|
||||
CONFIG_SCSI_LOGGING=y
|
||||
# CONFIG_SCSI_LOWLEVEL is not set
|
||||
CONFIG_ATA=y
|
||||
CONFIG_SATA_AHCI=y
|
||||
CONFIG_SATA_AHCI_PLATFORM=y
|
||||
CONFIG_PATA_ATIIXP=y
|
||||
CONFIG_MD=y
|
||||
CONFIG_BLK_DEV_DM=y
|
||||
CONFIG_DM_THIN_PROVISIONING=y
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_DUMMY=y
|
||||
CONFIG_MACVLAN=y
|
||||
CONFIG_IPVLAN=y
|
||||
CONFIG_VXLAN=y
|
||||
CONFIG_VETH=y
|
||||
# CONFIG_NET_VENDOR_3COM is not set
|
||||
# CONFIG_NET_VENDOR_ADAPTEC is not set
|
||||
# CONFIG_NET_VENDOR_AGERE is not set
|
||||
# CONFIG_NET_VENDOR_ALACRITECH is not set
|
||||
# CONFIG_NET_VENDOR_ALTEON is not set
|
||||
# CONFIG_NET_VENDOR_AMAZON is not set
|
||||
# CONFIG_NET_VENDOR_AMD is not set
|
||||
# CONFIG_NET_VENDOR_AQUANTIA is not set
|
||||
# CONFIG_NET_VENDOR_ARC is not set
|
||||
# CONFIG_NET_VENDOR_ATHEROS is not set
|
||||
# CONFIG_NET_VENDOR_AURORA is not set
|
||||
# CONFIG_NET_VENDOR_BROADCOM is not set
|
||||
# CONFIG_NET_VENDOR_BROCADE is not set
|
||||
# CONFIG_NET_VENDOR_CADENCE is not set
|
||||
# CONFIG_NET_VENDOR_CAVIUM is not set
|
||||
# CONFIG_NET_VENDOR_CHELSIO is not set
|
||||
# CONFIG_NET_VENDOR_CISCO is not set
|
||||
# CONFIG_NET_VENDOR_CORTINA is not set
|
||||
# CONFIG_NET_VENDOR_DEC is not set
|
||||
# CONFIG_NET_VENDOR_DLINK is not set
|
||||
# CONFIG_NET_VENDOR_EMULEX is not set
|
||||
# CONFIG_NET_VENDOR_EZCHIP is not set
|
||||
# CONFIG_NET_VENDOR_GOOGLE is not set
|
||||
# CONFIG_NET_VENDOR_HUAWEI is not set
|
||||
# CONFIG_NET_VENDOR_INTEL is not set
|
||||
# CONFIG_NET_VENDOR_MARVELL is not set
|
||||
# CONFIG_NET_VENDOR_MELLANOX is not set
|
||||
# CONFIG_NET_VENDOR_MICREL is not set
|
||||
# CONFIG_NET_VENDOR_MICROCHIP is not set
|
||||
# CONFIG_NET_VENDOR_MICROSEMI is not set
|
||||
# CONFIG_NET_VENDOR_MYRI is not set
|
||||
# CONFIG_NET_VENDOR_NATSEMI is not set
|
||||
# CONFIG_NET_VENDOR_NETERION is not set
|
||||
# CONFIG_NET_VENDOR_NETRONOME is not set
|
||||
# CONFIG_NET_VENDOR_NI is not set
|
||||
# CONFIG_NET_VENDOR_NVIDIA is not set
|
||||
# CONFIG_NET_VENDOR_OKI is not set
|
||||
# CONFIG_NET_VENDOR_PACKET_ENGINES is not set
|
||||
# CONFIG_NET_VENDOR_PENSANDO is not set
|
||||
# CONFIG_NET_VENDOR_QLOGIC is not set
|
||||
# CONFIG_NET_VENDOR_QUALCOMM is not set
|
||||
# CONFIG_NET_VENDOR_RDC is not set
|
||||
CONFIG_8139CP=y
|
||||
CONFIG_8139TOO=y
|
||||
CONFIG_8139TOO_TUNE_TWISTER=y
|
||||
CONFIG_8139TOO_8129=y
|
||||
CONFIG_8139_OLD_RX_RESET=y
|
||||
CONFIG_R8169=y
|
||||
# CONFIG_NET_VENDOR_RENESAS is not set
|
||||
# CONFIG_NET_VENDOR_ROCKER is not set
|
||||
# CONFIG_NET_VENDOR_SAMSUNG is not set
|
||||
# CONFIG_NET_VENDOR_SEEQ is not set
|
||||
# CONFIG_NET_VENDOR_SOLARFLARE is not set
|
||||
# CONFIG_NET_VENDOR_SILAN is not set
|
||||
# CONFIG_NET_VENDOR_SIS is not set
|
||||
# CONFIG_NET_VENDOR_SMSC is not set
|
||||
# CONFIG_NET_VENDOR_SOCIONEXT is not set
|
||||
CONFIG_STMMAC_ETH=y
|
||||
CONFIG_STMMAC_PCI=y
|
||||
# CONFIG_NET_VENDOR_SUN is not set
|
||||
# CONFIG_NET_VENDOR_SYNOPSYS is not set
|
||||
# CONFIG_NET_VENDOR_TEHUTI is not set
|
||||
# CONFIG_NET_VENDOR_TI is not set
|
||||
# CONFIG_NET_VENDOR_VIA is not set
|
||||
# CONFIG_NET_VENDOR_WIZNET is not set
|
||||
# CONFIG_NET_VENDOR_XILINX is not set
|
||||
CONFIG_MOTORCOMM_PHY=y
|
||||
CONFIG_USB_USBNET=y
|
||||
# CONFIG_WLAN_VENDOR_ADMTEK is not set
|
||||
# CONFIG_WLAN_VENDOR_ATH is not set
|
||||
# CONFIG_WLAN_VENDOR_ATMEL is not set
|
||||
# CONFIG_WLAN_VENDOR_BROADCOM is not set
|
||||
# CONFIG_WLAN_VENDOR_CISCO is not set
|
||||
CONFIG_IPW2100=m
|
||||
CONFIG_IPW2100_MONITOR=y
|
||||
CONFIG_IPW2200=m
|
||||
CONFIG_IPW2200_MONITOR=y
|
||||
CONFIG_IPW2200_PROMISCUOUS=y
|
||||
CONFIG_IPW2200_QOS=y
|
||||
CONFIG_LIBIPW_DEBUG=y
|
||||
CONFIG_IWL4965=m
|
||||
CONFIG_IWL3945=m
|
||||
CONFIG_IWLWIFI=m
|
||||
CONFIG_IWLDVM=m
|
||||
CONFIG_IWLMVM=m
|
||||
CONFIG_IWLWIFI_BCAST_FILTERING=y
|
||||
# CONFIG_WLAN_VENDOR_INTERSIL is not set
|
||||
# CONFIG_WLAN_VENDOR_MARVELL is not set
|
||||
# CONFIG_WLAN_VENDOR_MEDIATEK is not set
|
||||
# CONFIG_WLAN_VENDOR_MICROCHIP is not set
|
||||
# CONFIG_WLAN_VENDOR_RALINK is not set
|
||||
CONFIG_RTL8180=m
|
||||
CONFIG_RTL8187=m
|
||||
CONFIG_RTL_CARDS=m
|
||||
CONFIG_RTL8XXXU=m
|
||||
CONFIG_RTW88=m
|
||||
CONFIG_RTW88_8822BE=m
|
||||
CONFIG_RTW88_8822CE=m
|
||||
CONFIG_RTW88_8723DE=m
|
||||
CONFIG_RTW88_8821CE=m
|
||||
# CONFIG_WLAN_VENDOR_RSI is not set
|
||||
# CONFIG_WLAN_VENDOR_ST is not set
|
||||
# CONFIG_WLAN_VENDOR_TI is not set
|
||||
# CONFIG_WLAN_VENDOR_ZYDAS is not set
|
||||
# CONFIG_WLAN_VENDOR_QUANTENNA is not set
|
||||
CONFIG_INPUT_MOUSEDEV=y
|
||||
CONFIG_INPUT_MOUSEDEV_PSAUX=y
|
||||
CONFIG_INPUT_EVDEV=y
|
||||
CONFIG_KEYBOARD_GPIO_POLLED=y
|
||||
# CONFIG_MOUSE_PS2 is not set
|
||||
CONFIG_INPUT_TOUCHSCREEN=y
|
||||
CONFIG_TOUCHSCREEN_GOODIX=y
|
||||
CONFIG_TOUCHSCREEN_FTS=y
|
||||
# CONFIG_SERIO_SERPORT is not set
|
||||
CONFIG_LEGACY_PTY_COUNT=16
|
||||
CONFIG_SERIAL_8250=y
|
||||
CONFIG_SERIAL_8250_CONSOLE=y
|
||||
# CONFIG_SERIAL_8250_PCI is not set
|
||||
CONFIG_SERIAL_8250_NR_UARTS=16
|
||||
CONFIG_SERIAL_8250_RUNTIME_UARTS=16
|
||||
CONFIG_SERIAL_8250_EXTENDED=y
|
||||
CONFIG_SERIAL_8250_MANY_PORTS=y
|
||||
CONFIG_SERIAL_8250_SHARE_IRQ=y
|
||||
CONFIG_SERIAL_8250_RSA=y
|
||||
CONFIG_SERIAL_OF_PLATFORM=y
|
||||
CONFIG_SERIAL_NONSTANDARD=y
|
||||
CONFIG_SERIAL_DEV_BUS=y
|
||||
CONFIG_HW_RANDOM=y
|
||||
CONFIG_I2C_CHARDEV=y
|
||||
CONFIG_I2C_MUX_GPMUX=y
|
||||
CONFIG_I2C_MUX_REG=y
|
||||
CONFIG_I2C_GPIO=y
|
||||
CONFIG_I2C_OCORES=y
|
||||
CONFIG_I2C_LS2X=y
|
||||
CONFIG_I2C_DEBUG_CORE=y
|
||||
CONFIG_SPI=y
|
||||
CONFIG_SPI_SPIDEV=y
|
||||
CONFIG_SPI_LS=y
|
||||
CONFIG_PINCTRL=y
|
||||
CONFIG_PINCTRL_LS2K1000=y
|
||||
CONFIG_PINCTRL_SINGLE=y
|
||||
CONFIG_GPIO_SYSFS=y
|
||||
CONFIG_GPIO_LOONGSON=y
|
||||
CONFIG_GPIO_PCA953X=y
|
||||
CONFIG_GPIO_PCA953X_IRQ=y
|
||||
CONFIG_POWER_RESET=y
|
||||
CONFIG_POWER_RESET_SYSCON=y
|
||||
CONFIG_POWER_RESET_SYSCON_POWEROFF=y
|
||||
CONFIG_POWER_SUPPLY=y
|
||||
CONFIG_SENSORS_GPIO_FAN=y
|
||||
CONFIG_SENSORS_AHT21=y
|
||||
CONFIG_THERMAL=y
|
||||
CONFIG_LOONGSON2K_THERMAL=y
|
||||
CONFIG_WATCHDOG=y
|
||||
CONFIG_GPIO_WATCHDOG=y
|
||||
CONFIG_GPIO_WATCHDOG_ARCH_INITCALL=y
|
||||
CONFIG_LOONGSON2_WDT=y
|
||||
CONFIG_REGULATOR=y
|
||||
CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
||||
# CONFIG_MEDIA_CEC_SUPPORT is not set
|
||||
CONFIG_MEDIA_SUPPORT=y
|
||||
CONFIG_VIDEO_V4L2_SUBDEV_API=y
|
||||
CONFIG_VIDEO_ADV_DEBUG=y
|
||||
CONFIG_VIDEO_FIXED_MINOR_RANGES=y
|
||||
CONFIG_MEDIA_USB_SUPPORT=y
|
||||
CONFIG_USB_VIDEO_CLASS=y
|
||||
CONFIG_USB_GSPCA=y
|
||||
CONFIG_USB_M5602=y
|
||||
CONFIG_USB_STV06XX=y
|
||||
CONFIG_USB_GL860=y
|
||||
CONFIG_USB_GSPCA_BENQ=y
|
||||
CONFIG_USB_GSPCA_CONEX=y
|
||||
CONFIG_USB_GSPCA_CPIA1=y
|
||||
CONFIG_USB_GSPCA_DTCS033=y
|
||||
CONFIG_USB_GSPCA_ETOMS=y
|
||||
CONFIG_USB_GSPCA_FINEPIX=y
|
||||
CONFIG_USB_GSPCA_JEILINJ=y
|
||||
CONFIG_USB_GSPCA_JL2005BCD=y
|
||||
CONFIG_USB_GSPCA_KONICA=y
|
||||
CONFIG_USB_GSPCA_MARS=y
|
||||
CONFIG_USB_GSPCA_MR97310A=y
|
||||
CONFIG_USB_GSPCA_NW80X=y
|
||||
CONFIG_USB_GSPCA_OV519=y
|
||||
CONFIG_USB_GSPCA_OV534=y
|
||||
CONFIG_USB_GSPCA_OV534_9=y
|
||||
CONFIG_USB_GSPCA_PAC207=y
|
||||
CONFIG_USB_GSPCA_PAC7302=y
|
||||
CONFIG_USB_GSPCA_PAC7311=y
|
||||
CONFIG_USB_GSPCA_SE401=y
|
||||
CONFIG_USB_GSPCA_SN9C2028=y
|
||||
CONFIG_USB_GSPCA_SN9C20X=y
|
||||
CONFIG_USB_GSPCA_SONIXB=y
|
||||
CONFIG_USB_GSPCA_SONIXJ=y
|
||||
CONFIG_USB_GSPCA_SPCA500=y
|
||||
CONFIG_USB_GSPCA_SPCA501=y
|
||||
CONFIG_USB_GSPCA_SPCA505=y
|
||||
CONFIG_USB_GSPCA_SPCA506=y
|
||||
CONFIG_USB_GSPCA_SPCA508=y
|
||||
CONFIG_USB_GSPCA_SPCA561=y
|
||||
CONFIG_USB_GSPCA_SPCA1528=y
|
||||
CONFIG_USB_GSPCA_SQ905=y
|
||||
CONFIG_USB_GSPCA_SQ905C=y
|
||||
CONFIG_USB_GSPCA_SQ930X=y
|
||||
CONFIG_USB_GSPCA_STK014=y
|
||||
CONFIG_USB_GSPCA_STK1135=y
|
||||
CONFIG_USB_GSPCA_STV0680=y
|
||||
CONFIG_USB_GSPCA_SUNPLUS=y
|
||||
CONFIG_USB_GSPCA_T613=y
|
||||
CONFIG_USB_GSPCA_TOPRO=y
|
||||
CONFIG_USB_GSPCA_TOUPTEK=y
|
||||
CONFIG_USB_GSPCA_TV8532=y
|
||||
CONFIG_USB_GSPCA_VC032X=y
|
||||
CONFIG_USB_GSPCA_VICAM=y
|
||||
CONFIG_USB_GSPCA_XIRLINK_CIT=y
|
||||
CONFIG_USB_GSPCA_ZC3XX=y
|
||||
CONFIG_DRM=y
|
||||
# CONFIG_DRM_LOONGSON_PCI_DRIVER is not set
|
||||
# CONFIG_DRM_LSDC is not set
|
||||
CONFIG_DRM_PANEL_LVDS=y
|
||||
CONFIG_DRM_DISPLAY_CONNECTOR=y
|
||||
CONFIG_DRM_SII902X=y
|
||||
CONFIG_DRM_SIMPLE_BRIDGE=y
|
||||
CONFIG_FB_RADEON=y
|
||||
CONFIG_BACKLIGHT_PWM=y
|
||||
CONFIG_BACKLIGHT_GPIO=y
|
||||
# CONFIG_VGA_CONSOLE is not set
|
||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
|
||||
CONFIG_LOGO=y
|
||||
# CONFIG_LOGO_LINUX_MONO is not set
|
||||
# CONFIG_LOGO_LINUX_VGA16 is not set
|
||||
CONFIG_SOUND=y
|
||||
CONFIG_SND=y
|
||||
CONFIG_SND_HDA_INTEL=y
|
||||
CONFIG_SND_HDA_LOONGSON=y
|
||||
CONFIG_SND_HDA_HWDEP=y
|
||||
CONFIG_SND_HDA_INPUT_BEEP=y
|
||||
CONFIG_SND_HDA_PATCH_LOADER=y
|
||||
CONFIG_SND_HDA_CODEC_REALTEK=y
|
||||
CONFIG_SND_HDA_CODEC_SIGMATEL=y
|
||||
CONFIG_SND_HDA_CODEC_HDMI=y
|
||||
CONFIG_SND_HDA_CODEC_CONEXANT=y
|
||||
CONFIG_SND_USB_AUDIO=y
|
||||
CONFIG_SND_SOC=y
|
||||
CONFIG_SND_SOC_LOONGSON=y
|
||||
CONFIG_SND_SOC_LOONGSON_CJC8988=y
|
||||
CONFIG_SND_LS=y
|
||||
CONFIG_SND_LS_PCM=y
|
||||
CONFIG_HIDRAW=y
|
||||
CONFIG_HID_MULTITOUCH=y
|
||||
CONFIG_HID_PID=y
|
||||
CONFIG_USB_HIDDEV=y
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_MON=y
|
||||
CONFIG_USB_EHCI_HCD=y
|
||||
CONFIG_USB_EHCI_ROOT_HUB_TT=y
|
||||
CONFIG_USB_EHCI_HCD_PLATFORM=y
|
||||
CONFIG_USB_OHCI_HCD=y
|
||||
# CONFIG_USB_OHCI_HCD_PCI is not set
|
||||
CONFIG_USB_OHCI_HCD_PLATFORM=y
|
||||
CONFIG_USB_STORAGE=y
|
||||
CONFIG_USB_DWC2=y
|
||||
CONFIG_USB_SERIAL=y
|
||||
CONFIG_USB_SERIAL_XR21V141X=y
|
||||
CONFIG_USB_SERIAL_OPTION=y
|
||||
CONFIG_USB_GADGET=y
|
||||
CONFIG_USB_CONFIGFS=y
|
||||
CONFIG_USB_CONFIGFS_RNDIS=y
|
||||
CONFIG_USB_ETH=y
|
||||
CONFIG_USB_ETH_EEM=y
|
||||
CONFIG_MMC=y
|
||||
CONFIG_MMC_LS2K=y
|
||||
CONFIG_LEDS_GPIO=y
|
||||
CONFIG_LEDS_PWM=y
|
||||
CONFIG_LEDS_TRIGGER_HEARTBEAT=y
|
||||
CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
|
||||
CONFIG_RTC_CLASS=y
|
||||
CONFIG_RTC_DRV_SD2068=y
|
||||
CONFIG_RTC_DRV_SD3078=y
|
||||
CONFIG_RTC_DRV_LS2X=y
|
||||
CONFIG_DMADEVICES=y
|
||||
CONFIG_LS_APBDMAC=y
|
||||
# CONFIG_VIRTIO_MENU is not set
|
||||
# CONFIG_VHOST_MENU is not set
|
||||
CONFIG_STAGING=y
|
||||
CONFIG_R8188EU=y
|
||||
# CONFIG_LOONGARCH_PLATFORM_DEVICES is not set
|
||||
CONFIG_LOONGSON2_SYSCLK_SOFT=y
|
||||
# CONFIG_IOMMU_SUPPORT is not set
|
||||
CONFIG_PM_DEVFREQ=y
|
||||
CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
|
||||
CONFIG_DEVFREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_DEVFREQ_GOV_POWERSAVE=y
|
||||
CONFIG_DEVFREQ_GOV_USERSPACE=y
|
||||
CONFIG_PWM=y
|
||||
CONFIG_PWM_LS=y
|
||||
CONFIG_LOONGSON_MSI_2K1000=y
|
||||
CONFIG_EXT2_FS=y
|
||||
CONFIG_EXT2_FS_XATTR=y
|
||||
CONFIG_EXT2_FS_POSIX_ACL=y
|
||||
CONFIG_EXT2_FS_SECURITY=y
|
||||
CONFIG_EXT3_FS=y
|
||||
CONFIG_EXT3_FS_POSIX_ACL=y
|
||||
CONFIG_EXT3_FS_SECURITY=y
|
||||
CONFIG_BTRFS_FS=y
|
||||
CONFIG_BTRFS_FS_POSIX_ACL=y
|
||||
CONFIG_FANOTIFY=y
|
||||
CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
|
||||
CONFIG_QUOTA=y
|
||||
# CONFIG_PRINT_QUOTA_WARNING is not set
|
||||
CONFIG_AUTOFS4_FS=y
|
||||
CONFIG_OVERLAY_FS=y
|
||||
CONFIG_OVERLAY_FS_INDEX=y
|
||||
CONFIG_OVERLAY_FS_XINO_AUTO=y
|
||||
CONFIG_OVERLAY_FS_METACOPY=y
|
||||
CONFIG_FSCACHE=y
|
||||
CONFIG_ISO9660_FS=y
|
||||
CONFIG_JOLIET=y
|
||||
CONFIG_ZISOFS=y
|
||||
CONFIG_UDF_FS=y
|
||||
CONFIG_MSDOS_FS=y
|
||||
CONFIG_VFAT_FS=y
|
||||
CONFIG_FAT_DEFAULT_UTF8=y
|
||||
CONFIG_EXFAT_FS=y
|
||||
CONFIG_PROC_KCORE=y
|
||||
CONFIG_TMPFS=y
|
||||
CONFIG_TMPFS_POSIX_ACL=y
|
||||
CONFIG_HUGETLBFS=y
|
||||
CONFIG_UBIFS_FS=y
|
||||
CONFIG_UBIFS_FS_ADVANCED_COMPR=y
|
||||
CONFIG_SQUASHFS=y
|
||||
CONFIG_SQUASHFS_XATTR=y
|
||||
CONFIG_SQUASHFS_LZ4=y
|
||||
CONFIG_SQUASHFS_LZO=y
|
||||
CONFIG_SQUASHFS_XZ=y
|
||||
CONFIG_NFS_FS=y
|
||||
CONFIG_NFS_V3_ACL=y
|
||||
CONFIG_NFS_V4=y
|
||||
CONFIG_NFS_V4_1=y
|
||||
CONFIG_NFS_V4_2=y
|
||||
CONFIG_ROOT_NFS=y
|
||||
CONFIG_NFSD=y
|
||||
CONFIG_NFSD_V3_ACL=y
|
||||
CONFIG_NFSD_V4=y
|
||||
CONFIG_NFSD_BLOCKLAYOUT=y
|
||||
CONFIG_NLS_CODEPAGE_437=y
|
||||
CONFIG_NLS_CODEPAGE_936=y
|
||||
CONFIG_NLS_ASCII=y
|
||||
CONFIG_NLS_ISO8859_1=y
|
||||
CONFIG_NLS_UTF8=y
|
||||
CONFIG_KEY_DH_OPERATIONS=y
|
||||
CONFIG_SECURITY=y
|
||||
CONFIG_SECURITY_SELINUX=y
|
||||
CONFIG_SECURITY_SELINUX_BOOTPARAM=y
|
||||
CONFIG_SECURITY_SELINUX_DISABLE=y
|
||||
CONFIG_SECURITY_APPARMOR=y
|
||||
CONFIG_SECURITY_YAMA=y
|
||||
CONFIG_DEFAULT_SECURITY_DAC=y
|
||||
# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set
|
||||
CONFIG_PRINTK_TIME=y
|
||||
CONFIG_STRIP_ASM_SYMS=y
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
# CONFIG_SCHED_DEBUG is not set
|
||||
CONFIG_SCHEDSTATS=y
|
||||
# CONFIG_DEBUG_PREEMPT is not set
|
||||
# CONFIG_FTRACE is not set
|
||||
CONFIG_CMDLINE_BOOL=y
|
||||
CONFIG_CMDLINE="fbcon=logo-pos:center fbcon=logo-count:1"
|
||||
CONFIG_UNWINDER_ORC=y
|
||||
@@ -83,6 +83,7 @@ CONFIG_IPV6_ROUTE_INFO=y
|
||||
CONFIG_IPV6_MROUTE=y
|
||||
CONFIG_NETWORK_PHY_TIMESTAMPING=y
|
||||
CONFIG_NETFILTER=y
|
||||
CONFIG_BRIDGE_NETFILTER=y
|
||||
CONFIG_NF_CONNTRACK=y
|
||||
CONFIG_NF_CONNTRACK_SECMARK=y
|
||||
CONFIG_NF_CONNTRACK_ZONES=y
|
||||
@@ -101,6 +102,34 @@ CONFIG_NF_CONNTRACK_SIP=y
|
||||
CONFIG_NF_CONNTRACK_TFTP=y
|
||||
CONFIG_NF_CT_NETLINK=y
|
||||
CONFIG_NF_CT_NETLINK_TIMEOUT=y
|
||||
CONFIG_NF_TABLES=y
|
||||
CONFIG_NF_TABLES_INET=y
|
||||
CONFIG_NF_TABLES_NETDEV=y
|
||||
CONFIG_NFT_NUMGEN=y
|
||||
CONFIG_NFT_CT=y
|
||||
CONFIG_NFT_COUNTER=y
|
||||
CONFIG_NFT_CONNLIMIT=y
|
||||
CONFIG_NFT_LOG=y
|
||||
CONFIG_NFT_LIMIT=y
|
||||
CONFIG_NFT_MASQ=y
|
||||
CONFIG_NFT_REDIR=y
|
||||
CONFIG_NFT_NAT=y
|
||||
CONFIG_NFT_TUNNEL=y
|
||||
CONFIG_NFT_OBJREF=y
|
||||
CONFIG_NFT_QUEUE=y
|
||||
CONFIG_NFT_QUOTA=y
|
||||
CONFIG_NFT_REJECT=y
|
||||
CONFIG_NFT_COMPAT=y
|
||||
CONFIG_NFT_HASH=y
|
||||
CONFIG_NFT_XFRM=y
|
||||
CONFIG_NFT_SOCKET=y
|
||||
CONFIG_NFT_OSF=y
|
||||
CONFIG_NFT_TPROXY=y
|
||||
CONFIG_NFT_SYNPROXY=y
|
||||
CONFIG_NFT_DUP_NETDEV=y
|
||||
CONFIG_NFT_FWD_NETDEV=y
|
||||
CONFIG_NF_FLOW_TABLE_INET=y
|
||||
CONFIG_NF_FLOW_TABLE=y
|
||||
CONFIG_NETFILTER_XT_TARGET_AUDIT=y
|
||||
CONFIG_NETFILTER_XT_TARGET_CHECKSUM=y
|
||||
CONFIG_NETFILTER_XT_TARGET_CLASSIFY=y
|
||||
@@ -150,6 +179,7 @@ CONFIG_NETFILTER_XT_MATCH_NFACCT=y
|
||||
CONFIG_NETFILTER_XT_MATCH_OSF=y
|
||||
CONFIG_NETFILTER_XT_MATCH_OWNER=y
|
||||
CONFIG_NETFILTER_XT_MATCH_POLICY=y
|
||||
CONFIG_NETFILTER_XT_MATCH_PHYSDEV=y
|
||||
CONFIG_NETFILTER_XT_MATCH_PKTTYPE=y
|
||||
CONFIG_NETFILTER_XT_MATCH_QUOTA=y
|
||||
CONFIG_NETFILTER_XT_MATCH_RATEEST=y
|
||||
@@ -163,6 +193,8 @@ CONFIG_NETFILTER_XT_MATCH_STRING=y
|
||||
CONFIG_NETFILTER_XT_MATCH_TCPMSS=y
|
||||
CONFIG_NETFILTER_XT_MATCH_TIME=y
|
||||
CONFIG_NETFILTER_XT_MATCH_U32=y
|
||||
CONFIG_NF_TABLES_ARP=y
|
||||
CONFIG_NF_FLOW_TABLE_IPV4=y
|
||||
CONFIG_NF_LOG_ARP=y
|
||||
CONFIG_IP_NF_IPTABLES=y
|
||||
CONFIG_IP_NF_MATCH_AH=y
|
||||
@@ -187,10 +219,37 @@ CONFIG_IP_NF_ARPFILTER=y
|
||||
CONFIG_IP_NF_ARP_MANGLE=y
|
||||
CONFIG_IP6_NF_IPTABLES=y
|
||||
CONFIG_IP6_NF_FILTER=y
|
||||
CONFIG_NF_TABLES_BRIDGE=y
|
||||
CONFIG_NFT_BRIDGE_META=y
|
||||
CONFIG_NFT_BRIDGE_REJECT=y
|
||||
CONFIG_NF_LOG_BRIDGE=y
|
||||
CONFIG_NF_CONNTRACK_BRIDGE=y
|
||||
CONFIG_BRIDGE_NF_EBTABLES=y
|
||||
CONFIG_BRIDGE_EBT_BROUTE=y
|
||||
CONFIG_BRIDGE_EBT_T_FILTER=y
|
||||
CONFIG_BRIDGE_EBT_T_NAT=y
|
||||
CONFIG_BRIDGE_EBT_802_3=y
|
||||
CONFIG_BRIDGE_EBT_AMONG=y
|
||||
CONFIG_BRIDGE_EBT_ARP=y
|
||||
CONFIG_BRIDGE_EBT_IP=y
|
||||
CONFIG_BRIDGE_EBT_IP6=y
|
||||
CONFIG_BRIDGE_EBT_LIMIT=y
|
||||
CONFIG_BRIDGE_EBT_MARK=y
|
||||
CONFIG_BRIDGE_EBT_PKTTYPE=y
|
||||
CONFIG_BRIDGE_EBT_STP=y
|
||||
CONFIG_BRIDGE_EBT_VLAN=y
|
||||
CONFIG_BRIDGE_EBT_ARPREPLY=y
|
||||
CONFIG_BRIDGE_EBT_DNAT=y
|
||||
CONFIG_BRIDGE_EBT_MARK_T=y
|
||||
CONFIG_BRIDGE_EBT_REDIRECT=y
|
||||
CONFIG_BRIDGE_EBT_SNAT=y
|
||||
CONFIG_BRIDGE_EBT_LOG=y
|
||||
CONFIG_BRIDGE_EBT_NFLOG=y
|
||||
CONFIG_BPFILTER=y
|
||||
CONFIG_RDS=y
|
||||
CONFIG_BRIDGE=y
|
||||
CONFIG_BRIDGE_VLAN_FILTERING=y
|
||||
CONFIG_BRIDGE_MRP=y
|
||||
CONFIG_NET_DSA=y
|
||||
CONFIG_VLAN_8021Q=y
|
||||
CONFIG_VLAN_8021Q_GVRP=y
|
||||
@@ -234,6 +293,8 @@ CONFIG_SCSI_LOGGING=y
|
||||
# CONFIG_SCSI_LOWLEVEL is not set
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_DUMMY=y
|
||||
CONFIG_WIREGUARD=m
|
||||
CONFIG_WIREGUARD_DEBUG=y
|
||||
CONFIG_MACVLAN=y
|
||||
CONFIG_MACVTAP=y
|
||||
CONFIG_IPVLAN=y
|
||||
@@ -368,7 +429,9 @@ CONFIG_INPUT_MOUSEDEV_PSAUX=y
|
||||
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1280
|
||||
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=800
|
||||
CONFIG_INPUT_EVDEV=y
|
||||
CONFIG_KEYBOARD_GPIO=y
|
||||
CONFIG_KEYBOARD_GPIO_POLLED=y
|
||||
CONFIG_KEYBOARD_MATRIX_POLLED=y
|
||||
# CONFIG_MOUSE_PS2 is not set
|
||||
CONFIG_MOUSE_SERIAL=y
|
||||
CONFIG_INPUT_TOUCHSCREEN=y
|
||||
@@ -400,11 +463,13 @@ CONFIG_SPI=y
|
||||
CONFIG_SPI_SPIDEV=y
|
||||
CONFIG_SPI_LS=y
|
||||
CONFIG_SPI_LS_IO=y
|
||||
CONFIG_PPS_CLIENT_GPIO=y
|
||||
CONFIG_PINCTRL=y
|
||||
CONFIG_PINCTRL_SINGLE=y
|
||||
CONFIG_GPIO_SYSFS=y
|
||||
CONFIG_GPIO_LOONGSON_IRQCHIP=y
|
||||
CONFIG_GPIO_PCA953X=y
|
||||
CONFIG_GPIO_PCA953X_IRQ=y
|
||||
CONFIG_W1=y
|
||||
CONFIG_W1_MASTER_GPIO=y
|
||||
CONFIG_W1_SLAVE_THERM=y
|
||||
@@ -514,7 +579,9 @@ CONFIG_LOONGSON2_GUTS=y
|
||||
CONFIG_IIO=y
|
||||
CONFIG_MCP320X=y
|
||||
CONFIG_TI_ADS1015=y
|
||||
CONFIG_MS518XN_ADC=y
|
||||
CONFIG_LS_2K300_ADC=y
|
||||
CONFIG_MCP4728=y
|
||||
CONFIG_IIO_ST_GYRO_3AXIS=y
|
||||
CONFIG_ADIS16475=y
|
||||
CONFIG_INV_MPU6050_SPI=y
|
||||
@@ -522,6 +589,7 @@ CONFIG_IIO_ST_LSM9DS0=y
|
||||
# CONFIG_IIO_ST_LSM9DS0_I2C is not set
|
||||
CONFIG_MS5611=y
|
||||
CONFIG_MS5611_SPI=y
|
||||
CONFIG_MAX31865=y
|
||||
CONFIG_PWM=y
|
||||
CONFIG_PWM_LS=y
|
||||
CONFIG_LOONGSON_IOINTC_2K500=y
|
||||
@@ -590,6 +658,9 @@ CONFIG_DEFAULT_SECURITY_DAC=y
|
||||
CONFIG_CRYPTO_HMAC=y
|
||||
CONFIG_CRYPTO_DEFLATE=y
|
||||
CONFIG_CRYPTO_LZO=y
|
||||
CONFIG_CRYPTO_LIB_BLAKE2S=y
|
||||
CONFIG_CRYPTO_LIB_CURVE25519=y
|
||||
CONFIG_CRYPTO_LIB_CHACHA20POLY1305=y
|
||||
CONFIG_PRINTK_TIME=y
|
||||
CONFIG_STRIP_ASM_SYMS=y
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
|
||||
@@ -66,8 +66,8 @@ CONFIG_Z3FOLD=m
|
||||
CONFIG_NET=y
|
||||
CONFIG_PACKET=y
|
||||
CONFIG_UNIX=y
|
||||
CONFIG_XFRM_USER=m
|
||||
CONFIG_NET_KEY=m
|
||||
CONFIG_XFRM_USER=y
|
||||
CONFIG_NET_KEY=y
|
||||
CONFIG_INET=y
|
||||
CONFIG_IP_MULTICAST=y
|
||||
CONFIG_IP_ADVANCED_ROUTER=y
|
||||
@@ -79,11 +79,11 @@ CONFIG_IP_PNP_DHCP=y
|
||||
CONFIG_IP_PNP_BOOTP=y
|
||||
CONFIG_IP_PNP_RARP=y
|
||||
CONFIG_IP_MROUTE=y
|
||||
CONFIG_INET_DIAG=m
|
||||
CONFIG_INET_UDP_DIAG=m
|
||||
# CONFIG_IPV6 is not set
|
||||
CONFIG_INET_UDP_DIAG=y
|
||||
CONFIG_INET_RAW_DIAG=y
|
||||
CONFIG_NETWORK_PHY_TIMESTAMPING=y
|
||||
CONFIG_NETFILTER=y
|
||||
CONFIG_BRIDGE_NETFILTER=y
|
||||
CONFIG_NF_CONNTRACK=y
|
||||
CONFIG_NF_LOG_NETDEV=y
|
||||
CONFIG_NF_CONNTRACK_ZONES=y
|
||||
@@ -105,21 +105,26 @@ CONFIG_NF_CT_NETLINK_TIMEOUT=y
|
||||
CONFIG_NF_CT_NETLINK_HELPER=y
|
||||
CONFIG_NETFILTER_NETLINK_GLUE_CT=y
|
||||
CONFIG_NF_TABLES=y
|
||||
CONFIG_NF_TABLES_INET=y
|
||||
CONFIG_NF_TABLES_NETDEV=y
|
||||
CONFIG_NFT_NUMGEN=y
|
||||
CONFIG_NFT_CT=y
|
||||
CONFIG_NFT_FLOW_OFFLOAD=y
|
||||
CONFIG_NFT_COUNTER=y
|
||||
CONFIG_NFT_CONNLIMIT=y
|
||||
CONFIG_NFT_LOG=y
|
||||
CONFIG_NFT_LIMIT=y
|
||||
CONFIG_NFT_MASQ=y
|
||||
CONFIG_NFT_REDIR=y
|
||||
CONFIG_NFT_NAT=y
|
||||
CONFIG_NFT_TUNNEL=y
|
||||
CONFIG_NFT_OBJREF=y
|
||||
CONFIG_NFT_QUEUE=y
|
||||
CONFIG_NFT_QUOTA=y
|
||||
CONFIG_NFT_REJECT=y
|
||||
CONFIG_NFT_COMPAT=y
|
||||
CONFIG_NFT_HASH=y
|
||||
CONFIG_NFT_FIB_INET=y
|
||||
CONFIG_NFT_XFRM=y
|
||||
CONFIG_NFT_SOCKET=y
|
||||
CONFIG_NFT_OSF=y
|
||||
@@ -127,9 +132,15 @@ CONFIG_NFT_TPROXY=y
|
||||
CONFIG_NFT_SYNPROXY=y
|
||||
CONFIG_NFT_DUP_NETDEV=y
|
||||
CONFIG_NFT_FWD_NETDEV=y
|
||||
CONFIG_NFT_FIB_NETDEV=y
|
||||
CONFIG_NF_FLOW_TABLE_INET=y
|
||||
CONFIG_NF_FLOW_TABLE=y
|
||||
CONFIG_NETFILTER_XT_SET=y
|
||||
CONFIG_NETFILTER_XT_TARGET_CHECKSUM=y
|
||||
CONFIG_NETFILTER_XT_TARGET_CLASSIFY=y
|
||||
CONFIG_NETFILTER_XT_TARGET_CONNMARK=y
|
||||
CONFIG_NETFILTER_XT_TARGET_CT=y
|
||||
CONFIG_NETFILTER_XT_TARGET_DSCP=y
|
||||
CONFIG_NETFILTER_XT_TARGET_HMARK=y
|
||||
CONFIG_NETFILTER_XT_TARGET_IDLETIMER=y
|
||||
CONFIG_NETFILTER_XT_TARGET_LED=y
|
||||
@@ -138,7 +149,10 @@ CONFIG_NETFILTER_XT_TARGET_MARK=y
|
||||
CONFIG_NETFILTER_XT_TARGET_NFLOG=y
|
||||
CONFIG_NETFILTER_XT_TARGET_NFQUEUE=y
|
||||
CONFIG_NETFILTER_XT_TARGET_TEE=y
|
||||
CONFIG_NETFILTER_XT_TARGET_TPROXY=y
|
||||
CONFIG_NETFILTER_XT_TARGET_TRACE=y
|
||||
CONFIG_NETFILTER_XT_TARGET_TCPMSS=y
|
||||
CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=y
|
||||
CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=y
|
||||
CONFIG_NETFILTER_XT_MATCH_BPF=y
|
||||
CONFIG_NETFILTER_XT_MATCH_CGROUP=y
|
||||
@@ -168,6 +182,7 @@ CONFIG_NETFILTER_XT_MATCH_NFACCT=y
|
||||
CONFIG_NETFILTER_XT_MATCH_OSF=y
|
||||
CONFIG_NETFILTER_XT_MATCH_OWNER=y
|
||||
CONFIG_NETFILTER_XT_MATCH_POLICY=y
|
||||
CONFIG_NETFILTER_XT_MATCH_PHYSDEV=y
|
||||
CONFIG_NETFILTER_XT_MATCH_PKTTYPE=y
|
||||
CONFIG_NETFILTER_XT_MATCH_QUOTA=y
|
||||
CONFIG_NETFILTER_XT_MATCH_RATEEST=y
|
||||
@@ -199,6 +214,7 @@ CONFIG_IP_SET_HASH_NETPORT=y
|
||||
CONFIG_IP_SET_HASH_NETIFACE=y
|
||||
CONFIG_IP_SET_LIST_SET=y
|
||||
CONFIG_IP_VS=y
|
||||
CONFIG_IP_VS_IPV6=y
|
||||
CONFIG_IP_VS_DEBUG=y
|
||||
CONFIG_IP_VS_PROTO_TCP=y
|
||||
CONFIG_IP_VS_PROTO_UDP=y
|
||||
@@ -220,7 +236,6 @@ CONFIG_IP_VS_SED=y
|
||||
CONFIG_IP_VS_NQ=y
|
||||
CONFIG_IP_VS_FTP=y
|
||||
CONFIG_IP_VS_PE_SIP=y
|
||||
CONFIG_NF_TABLES_IPV4=y
|
||||
CONFIG_NFT_DUP_IPV4=y
|
||||
CONFIG_NFT_FIB_IPV4=y
|
||||
CONFIG_NF_TABLES_ARP=y
|
||||
@@ -229,6 +244,7 @@ CONFIG_NF_LOG_ARP=y
|
||||
CONFIG_IP_NF_IPTABLES=y
|
||||
CONFIG_IP_NF_MATCH_AH=y
|
||||
CONFIG_IP_NF_MATCH_ECN=y
|
||||
CONFIG_IP_NF_MATCH_RPFILTER=y
|
||||
CONFIG_IP_NF_MATCH_TTL=y
|
||||
CONFIG_IP_NF_FILTER=y
|
||||
CONFIG_IP_NF_TARGET_REJECT=y
|
||||
@@ -245,12 +261,65 @@ CONFIG_IP_NF_RAW=y
|
||||
CONFIG_IP_NF_ARPTABLES=y
|
||||
CONFIG_IP_NF_ARPFILTER=y
|
||||
CONFIG_IP_NF_ARP_MANGLE=y
|
||||
CONFIG_NFT_DUP_IPV6=y
|
||||
CONFIG_NFT_FIB_IPV6=y
|
||||
CONFIG_NF_FLOW_TABLE_IPV6=y
|
||||
CONFIG_IP6_NF_IPTABLES=y
|
||||
CONFIG_IP6_NF_MATCH_AH=y
|
||||
CONFIG_IP6_NF_MATCH_EUI64=y
|
||||
CONFIG_IP6_NF_MATCH_FRAG=y
|
||||
CONFIG_IP6_NF_MATCH_OPTS=y
|
||||
CONFIG_IP6_NF_MATCH_HL=y
|
||||
CONFIG_IP6_NF_MATCH_IPV6HEADER=y
|
||||
CONFIG_IP6_NF_MATCH_MH=y
|
||||
CONFIG_IP6_NF_MATCH_RPFILTER=y
|
||||
CONFIG_IP6_NF_MATCH_RT=y
|
||||
CONFIG_IP6_NF_MATCH_SRH=y
|
||||
CONFIG_IP6_NF_TARGET_HL=y
|
||||
CONFIG_IP6_NF_FILTER=y
|
||||
CONFIG_IP6_NF_TARGET_REJECT=y
|
||||
CONFIG_IP6_NF_TARGET_SYNPROXY=y
|
||||
CONFIG_IP6_NF_MANGLE=y
|
||||
CONFIG_IP6_NF_RAW=y
|
||||
CONFIG_IP6_NF_NAT=y
|
||||
CONFIG_IP6_NF_TARGET_MASQUERADE=y
|
||||
CONFIG_IP6_NF_TARGET_NPT=y
|
||||
CONFIG_NF_TABLES_BRIDGE=y
|
||||
CONFIG_NFT_BRIDGE_META=y
|
||||
CONFIG_NFT_BRIDGE_REJECT=y
|
||||
CONFIG_NF_LOG_BRIDGE=y
|
||||
CONFIG_NF_CONNTRACK_BRIDGE=y
|
||||
CONFIG_NETLINK_DIAG=m
|
||||
CONFIG_BRIDGE_NF_EBTABLES=y
|
||||
CONFIG_BRIDGE_EBT_BROUTE=y
|
||||
CONFIG_BRIDGE_EBT_T_FILTER=y
|
||||
CONFIG_BRIDGE_EBT_T_NAT=y
|
||||
CONFIG_BRIDGE_EBT_802_3=y
|
||||
CONFIG_BRIDGE_EBT_AMONG=y
|
||||
CONFIG_BRIDGE_EBT_ARP=y
|
||||
CONFIG_BRIDGE_EBT_IP=y
|
||||
CONFIG_BRIDGE_EBT_IP6=y
|
||||
CONFIG_BRIDGE_EBT_LIMIT=y
|
||||
CONFIG_BRIDGE_EBT_MARK=y
|
||||
CONFIG_BRIDGE_EBT_PKTTYPE=y
|
||||
CONFIG_BRIDGE_EBT_STP=y
|
||||
CONFIG_BRIDGE_EBT_VLAN=y
|
||||
CONFIG_BRIDGE_EBT_ARPREPLY=y
|
||||
CONFIG_BRIDGE_EBT_DNAT=y
|
||||
CONFIG_BRIDGE_EBT_MARK_T=y
|
||||
CONFIG_BRIDGE_EBT_REDIRECT=y
|
||||
CONFIG_BRIDGE_EBT_SNAT=y
|
||||
CONFIG_BRIDGE_EBT_LOG=y
|
||||
CONFIG_BRIDGE_EBT_NFLOG=y
|
||||
CONFIG_BPFILTER=y
|
||||
CONFIG_BPFILTER_UMH=y
|
||||
CONFIG_BRIDGE=y
|
||||
CONFIG_BRIDGE_VLAN_FILTERING=y
|
||||
CONFIG_BRIDGE_MRP=y
|
||||
CONFIG_VLAN_8021Q=y
|
||||
CONFIG_VLAN_8021Q_GVRP=y
|
||||
CONFIG_VLAN_8021Q_MVRP=y
|
||||
CONFIG_NETLINK_DIAG=y
|
||||
CONFIG_CGROUP_NET_PRIO=y
|
||||
CONFIG_CAN=m
|
||||
CONFIG_CAN_SJA1000=m
|
||||
CONFIG_CAN_SJA1000_PLATFORM=m
|
||||
# CONFIG_WIRELESS is not set
|
||||
# CONFIG_PCIEASPM is not set
|
||||
CONFIG_UEVENT_HELPER=y
|
||||
|
||||
@@ -110,6 +110,7 @@ extern u32 __dtb_ls2k1000_dp_begin[];
|
||||
extern u32 __dtb_ls2p500_gbkpjm0_v10_begin[];
|
||||
extern u32 __dtb_ls2k300_mini_dp_begin[];
|
||||
extern u32 __dtb_ls2k300_pai_begin[];
|
||||
extern u32 __dtb_ls2k300_gongkong_gbkpgk0_begin[];
|
||||
extern char __dtb_start[];
|
||||
extern struct boot_params *efi_bp;
|
||||
extern struct loongson_board_info b_info;
|
||||
|
||||
@@ -212,8 +212,10 @@ static void __init parse_dt_cpus(void)
|
||||
}
|
||||
|
||||
static char cpu_full_name_bak[] = " - ";
|
||||
#ifdef CONFIG_LOONGSON_2K500
|
||||
#if defined(CONFIG_LOONGSON_2K500)
|
||||
static char cpu_ls2k500_name[] = "loongson-2k500";
|
||||
#elif defined(CONFIG_LOONGSON_2K300)
|
||||
static char cpu_ls2k300_name[] = "loongson-2k300";
|
||||
#endif
|
||||
|
||||
static inline int check_cpu_full_name_invaild(int cpu)
|
||||
@@ -260,8 +262,12 @@ static void *get_fdt_by_board_name(void)
|
||||
fdt = &__dtb_ls2k300_mini_dp_begin;
|
||||
else if (!strncmp(b_info.board_name, "LS2K300-PAI", 11))
|
||||
fdt = &__dtb_ls2k300_pai_begin;
|
||||
else if (!strncmp(b_info.board_name, "LS2K300-GONGKONG-GBKPGK0", 24))
|
||||
fdt = &__dtb_ls2k300_gongkong_gbkpgk0_begin;
|
||||
else
|
||||
fdt = &__dtb_ls2k300_mini_dp_begin;
|
||||
|
||||
__cpu_full_name[0] = cpu_ls2k300_name;
|
||||
#endif
|
||||
}
|
||||
return fdt;
|
||||
|
||||
@@ -262,10 +262,20 @@ static void lsdc_enable_display(struct lsdc_device *ldev, unsigned int index)
|
||||
if (index == 0) {
|
||||
val = readl(ldev->reg_base + LSDC_CRTC0_CFG_REG);
|
||||
val |= CFG_OUTPUT_EN_BIT;
|
||||
if (ldev->display_rgb565) {
|
||||
val |= 0x7;
|
||||
val ^= 0x7;
|
||||
val |= 0x3;
|
||||
}
|
||||
writel(val, ldev->reg_base + LSDC_CRTC0_CFG_REG);
|
||||
} else if (index == 1) {
|
||||
val = readl(ldev->reg_base + LSDC_CRTC1_CFG_REG);
|
||||
val |= CFG_OUTPUT_EN_BIT;
|
||||
if (ldev->display_rgb565) {
|
||||
val |= 0x7;
|
||||
val ^= 0x7;
|
||||
val |= 0x3;
|
||||
}
|
||||
writel(val, ldev->reg_base + LSDC_CRTC1_CFG_REG);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -193,7 +193,10 @@ static int lsdc_mode_config_init(struct lsdc_device *ldev)
|
||||
ddev->mode_config.min_height = 1;
|
||||
ddev->mode_config.max_width = 4096;
|
||||
ddev->mode_config.max_height = 4096;
|
||||
ddev->mode_config.preferred_depth = 24;
|
||||
if (ldev->display_rgb565)
|
||||
ddev->mode_config.preferred_depth = 16;
|
||||
else
|
||||
ddev->mode_config.preferred_depth = 24;
|
||||
ddev->mode_config.prefer_shadow = ldev->use_vram_helper;
|
||||
|
||||
ddev->mode_config.cursor_width = descp->hw_cursor_h;
|
||||
@@ -329,7 +332,10 @@ int lsdc_common_probe(struct lsdc_device *ldev)
|
||||
if (ret)
|
||||
goto err_poll_fini;
|
||||
|
||||
drm_fbdev_generic_setup(ddev, 32);
|
||||
if (ldev->display_rgb565)
|
||||
drm_fbdev_generic_setup(ddev, 16);
|
||||
else
|
||||
drm_fbdev_generic_setup(ddev, 32);
|
||||
|
||||
// 设置完fb后再显示
|
||||
// CFG_OUTPUT_EN_BIT 在 common_probe 中设置才有效
|
||||
|
||||
@@ -157,6 +157,8 @@ struct lsdc_device {
|
||||
bool has_dt;
|
||||
/* @has_ports_node: true if there are OF graph in the DT */
|
||||
bool has_ports_node;
|
||||
|
||||
bool display_rgb565;
|
||||
};
|
||||
|
||||
static inline struct lsdc_device *to_lsdc(struct drm_device *ddev)
|
||||
|
||||
@@ -178,6 +178,11 @@ static int lsdc_platform_probe(struct platform_device *pdev)
|
||||
of_property_read_bool(dev->of_node, "lsdc,relax_alignment");
|
||||
}
|
||||
|
||||
ldev->display_rgb565 = 0;
|
||||
if (dev->of_node) {
|
||||
ldev->display_rgb565 = of_property_read_bool(dev->of_node, "display_rgb565");
|
||||
}
|
||||
|
||||
ret = lsdc_common_probe(ldev);
|
||||
if (ret) {
|
||||
goto err_free;
|
||||
|
||||
@@ -83,7 +83,7 @@ static int max31865_parse_gpio_channels(struct device *dev, const char* con_id,
|
||||
GPIOD_OUT_LOW);
|
||||
if (IS_ERR((*gpios)[i]))
|
||||
{
|
||||
pr_err("gpio(%s) channel[%d] get fail\n",
|
||||
dev_err(dev, "gpio(%s) channel[%d] get fail\n",
|
||||
con_id, i);
|
||||
return PTR_ERR((*gpios)[i]);
|
||||
}
|
||||
@@ -351,6 +351,7 @@ static int max31865_probe(struct spi_device *spi)
|
||||
const struct spi_device_id *id = spi_get_device_id(spi);
|
||||
struct iio_dev *indio_dev;
|
||||
struct max31865_data *data;
|
||||
struct gpio_desc* drdy_gpiod;
|
||||
int ret;
|
||||
|
||||
indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*data));
|
||||
@@ -404,6 +405,18 @@ static int max31865_probe(struct spi_device *spi)
|
||||
&data->in_negative_gpios, data->channel_bits);
|
||||
}
|
||||
|
||||
drdy_gpiod = devm_gpiod_get_optional(&spi->dev, "drdy", GPIOD_IN);
|
||||
if (IS_ERR_OR_NULL(drdy_gpiod))
|
||||
{
|
||||
dev_warn(&spi->dev, "DRDY GPIO not configured\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
gpiod_direction_input(drdy_gpiod);
|
||||
dev_warn(&spi->dev, "DRDY GPIO[%d] Set INPUT\n", desc_to_gpio(drdy_gpiod));
|
||||
gpiod_put(drdy_gpiod);
|
||||
}
|
||||
|
||||
return devm_iio_device_register(&spi->dev, indio_dev);
|
||||
}
|
||||
|
||||
|
||||
@@ -305,6 +305,16 @@ config KEYBOARD_MATRIX
|
||||
To compile this driver as a module, choose M here: the
|
||||
module will be called matrix_keypad.
|
||||
|
||||
config KEYBOARD_MATRIX_POLLED
|
||||
tristate "GPIO-POLLED driven matrix keypad support"
|
||||
depends on GPIOLIB || COMPILE_TEST
|
||||
select INPUT_MATRIXKMAP
|
||||
help
|
||||
Enable support for GPIO driven matrix keypad.
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
module will be called matrix_keypad.
|
||||
|
||||
config KEYBOARD_HIL_OLD
|
||||
tristate "HP HIL keyboard support (simple driver)"
|
||||
depends on GSC || HP300
|
||||
|
||||
@@ -40,6 +40,7 @@ obj-$(CONFIG_KEYBOARD_LOCOMO) += locomokbd.o
|
||||
obj-$(CONFIG_KEYBOARD_LPC32XX) += lpc32xx-keys.o
|
||||
obj-$(CONFIG_KEYBOARD_MAPLE) += maple_keyb.o
|
||||
obj-$(CONFIG_KEYBOARD_MATRIX) += matrix_keypad.o
|
||||
obj-$(CONFIG_KEYBOARD_MATRIX_POLLED) += matrix_keypad_polled.o
|
||||
obj-$(CONFIG_KEYBOARD_MAX7359) += max7359_keypad.o
|
||||
obj-$(CONFIG_KEYBOARD_MCS) += mcs_touchkey.o
|
||||
obj-$(CONFIG_KEYBOARD_MPR121) += mpr121_touchkey.o
|
||||
|
||||
@@ -0,0 +1,388 @@
|
||||
// All GPIOS are pull-up
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/input.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/jiffies.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/input/matrix_keypad.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_gpio.h>
|
||||
#include <linux/of_platform.h>
|
||||
|
||||
struct matrix_keypad_polled {
|
||||
const struct matrix_keypad_platform_data *pdata;
|
||||
struct input_dev *input;
|
||||
unsigned int row_shift;
|
||||
|
||||
int out_value;
|
||||
int row_values[MATRIX_MAX_ROWS];
|
||||
int col_values[MATRIX_MAX_COLS];
|
||||
int poll_interval;
|
||||
};
|
||||
|
||||
enum matrix_keypad_edge {
|
||||
MATRIX_KEY_GPIO_FALLING,
|
||||
MATRIX_KEY_GPIO_RISING,
|
||||
};
|
||||
|
||||
static void keypad_all_row_input(struct matrix_keypad_polled *keypad)
|
||||
{
|
||||
const struct matrix_keypad_platform_data *pdata = keypad->pdata;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < pdata->num_row_gpios; i++)
|
||||
gpio_direction_input(pdata->row_gpios[i]);
|
||||
}
|
||||
|
||||
static void keypad_all_row_output(struct matrix_keypad_polled *keypad)
|
||||
{
|
||||
const struct matrix_keypad_platform_data *pdata = keypad->pdata;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < pdata->num_row_gpios; i++)
|
||||
gpio_direction_output(pdata->row_gpios[i], keypad->out_value);
|
||||
}
|
||||
|
||||
static void keypad_all_col_input(struct matrix_keypad_polled *keypad)
|
||||
{
|
||||
const struct matrix_keypad_platform_data *pdata = keypad->pdata;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < pdata->num_col_gpios; i++)
|
||||
gpio_direction_input(pdata->col_gpios[i]);
|
||||
}
|
||||
|
||||
static void keypad_all_col_output(struct matrix_keypad_polled *keypad)
|
||||
{
|
||||
const struct matrix_keypad_platform_data *pdata = keypad->pdata;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < pdata->num_col_gpios; i++)
|
||||
gpio_direction_output(pdata->col_gpios[i], keypad->out_value);
|
||||
}
|
||||
|
||||
static int keypad_which_row_bounce(struct matrix_keypad_polled* keypad,
|
||||
enum matrix_keypad_edge* edge)
|
||||
{
|
||||
const struct matrix_keypad_platform_data *pdata = keypad->pdata;
|
||||
int val, i;
|
||||
|
||||
for (i = 0; i < pdata->num_row_gpios; i++)
|
||||
{
|
||||
val = gpio_get_value_cansleep(pdata->row_gpios[i]);
|
||||
if (val != keypad->row_values[i])
|
||||
{
|
||||
keypad->row_values[i] = val;
|
||||
*edge = (val == 0) ?
|
||||
MATRIX_KEY_GPIO_FALLING : MATRIX_KEY_GPIO_RISING;
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
static int keypad_which_col_bounce(struct matrix_keypad_polled* keypad)
|
||||
{
|
||||
const struct matrix_keypad_platform_data *pdata = keypad->pdata;
|
||||
int val, i;
|
||||
|
||||
for (i = 0; i < pdata->num_col_gpios; i++)
|
||||
{
|
||||
val = gpio_get_value_cansleep(pdata->col_gpios[i]);
|
||||
if (val != keypad->col_values[i])
|
||||
{
|
||||
keypad->col_values[i] = val;
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
static int keypad_assert_row(struct matrix_keypad_polled* keypad,
|
||||
enum matrix_keypad_edge* edge)
|
||||
{
|
||||
keypad_all_col_output(keypad);
|
||||
keypad_all_row_input(keypad);
|
||||
|
||||
return keypad_which_row_bounce(keypad, edge);
|
||||
}
|
||||
|
||||
static int keypad_assert_col(struct matrix_keypad_polled* keypad)
|
||||
{
|
||||
keypad_all_row_output(keypad);
|
||||
keypad_all_col_input(keypad);
|
||||
|
||||
return keypad_which_col_bounce(keypad);
|
||||
}
|
||||
|
||||
static void matrix_keypad_polled(struct input_dev *input)
|
||||
{
|
||||
struct matrix_keypad_polled *keypad = input_get_drvdata(input);
|
||||
const unsigned short *keycodes = input->keycode;
|
||||
enum matrix_keypad_edge edge;
|
||||
int row, col, code;
|
||||
|
||||
row = keypad_assert_row(keypad, &edge);
|
||||
if (row >= 0)
|
||||
{
|
||||
col = keypad_assert_col(keypad);
|
||||
|
||||
//pr_info("(%d,%d) = %d\n",
|
||||
// row, col, edge);
|
||||
|
||||
code = MATRIX_SCAN_CODE(row, col, keypad->row_shift);
|
||||
input_event(input, EV_MSC, MSC_SCAN, code);
|
||||
input_report_key(input, keycodes[code], !edge);
|
||||
}
|
||||
|
||||
input_sync(input);
|
||||
}
|
||||
|
||||
static int matrix_keypad_polled_start(struct input_dev *dev)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void matrix_keypad_polled_stop(struct input_dev *dev)
|
||||
{
|
||||
}
|
||||
|
||||
static int matrix_keypad_polled_init_gpio(struct platform_device *pdev,
|
||||
struct matrix_keypad_polled *keypad)
|
||||
{
|
||||
const struct matrix_keypad_platform_data *pdata = keypad->pdata;
|
||||
int i, err;
|
||||
|
||||
/* initialized strobe lines as outputs, activated */
|
||||
for (i = 0; i < pdata->num_col_gpios; i++) {
|
||||
err = gpio_request(pdata->col_gpios[i], "matrix_kbd_col");
|
||||
if (err) {
|
||||
dev_err(&pdev->dev,
|
||||
"failed to request GPIO%d for COL%d\n",
|
||||
pdata->col_gpios[i], i);
|
||||
goto err_free_cols;
|
||||
}
|
||||
|
||||
gpio_direction_output(pdata->col_gpios[i], 0);
|
||||
keypad->col_values[i] = ! keypad->out_value;
|
||||
}
|
||||
|
||||
for (i = 0; i < pdata->num_row_gpios; i++) {
|
||||
err = gpio_request(pdata->row_gpios[i], "matrix_kbd_row");
|
||||
if (err) {
|
||||
dev_err(&pdev->dev,
|
||||
"failed to request GPIO%d for ROW%d\n",
|
||||
pdata->row_gpios[i], i);
|
||||
goto err_free_rows;
|
||||
}
|
||||
|
||||
gpio_direction_input(pdata->row_gpios[i]);
|
||||
keypad->row_values[i] = ! keypad->out_value;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
err_free_rows:
|
||||
while (--i >= 0)
|
||||
gpio_free(pdata->row_gpios[i]);
|
||||
i = pdata->num_col_gpios;
|
||||
err_free_cols:
|
||||
while (--i >= 0)
|
||||
gpio_free(pdata->col_gpios[i]);
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
static void keypad_free_gpio(struct matrix_keypad_polled *keypad)
|
||||
{
|
||||
const struct matrix_keypad_platform_data *pdata = keypad->pdata;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < pdata->num_row_gpios; i++)
|
||||
gpio_free(pdata->row_gpios[i]);
|
||||
|
||||
for (i = 0; i < pdata->num_col_gpios; i++)
|
||||
gpio_free(pdata->col_gpios[i]);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_OF
|
||||
static struct matrix_keypad_platform_data *
|
||||
matrix_keypad_polled_parse_dt(struct device *dev)
|
||||
{
|
||||
struct matrix_keypad_platform_data *pdata;
|
||||
struct device_node *np = dev->of_node;
|
||||
unsigned int *gpios;
|
||||
int ret, i, nrow, ncol;
|
||||
|
||||
if (!np) {
|
||||
dev_err(dev, "device lacks DT data\n");
|
||||
return ERR_PTR(-ENODEV);
|
||||
}
|
||||
|
||||
pdata = devm_kzalloc(dev, sizeof(*pdata), GFP_KERNEL);
|
||||
if (!pdata) {
|
||||
dev_err(dev, "could not allocate memory for platform data\n");
|
||||
return ERR_PTR(-ENOMEM);
|
||||
}
|
||||
|
||||
pdata->num_row_gpios = nrow = of_gpio_named_count(np, "row-gpios");
|
||||
pdata->num_col_gpios = ncol = of_gpio_named_count(np, "col-gpios");
|
||||
if (nrow <= 0 || ncol <= 0) {
|
||||
dev_err(dev, "number of keypad rows/columns not specified\n");
|
||||
return ERR_PTR(-EINVAL);
|
||||
}
|
||||
|
||||
if (of_get_property(np, "linux,no-autorepeat", NULL))
|
||||
pdata->no_autorepeat = true;
|
||||
|
||||
gpios = devm_kcalloc(dev,
|
||||
pdata->num_row_gpios + pdata->num_col_gpios,
|
||||
sizeof(unsigned int),
|
||||
GFP_KERNEL);
|
||||
if (!gpios) {
|
||||
dev_err(dev, "could not allocate memory for gpios\n");
|
||||
return ERR_PTR(-ENOMEM);
|
||||
}
|
||||
|
||||
for (i = 0; i < nrow; i++) {
|
||||
ret = of_get_named_gpio(np, "row-gpios", i);
|
||||
if (ret < 0)
|
||||
return ERR_PTR(ret);
|
||||
gpios[i] = ret;
|
||||
}
|
||||
|
||||
for (i = 0; i < ncol; i++) {
|
||||
ret = of_get_named_gpio(np, "col-gpios", i);
|
||||
if (ret < 0)
|
||||
return ERR_PTR(ret);
|
||||
gpios[nrow + i] = ret;
|
||||
}
|
||||
|
||||
pdata->row_gpios = gpios;
|
||||
pdata->col_gpios = &gpios[pdata->num_row_gpios];
|
||||
|
||||
return pdata;
|
||||
}
|
||||
#else
|
||||
static inline struct matrix_keypad_platform_data *
|
||||
matrix_keypad_parse_dt(struct device *dev)
|
||||
{
|
||||
dev_err(dev, "no platform data defined\n");
|
||||
|
||||
return ERR_PTR(-EINVAL);
|
||||
}
|
||||
#endif
|
||||
|
||||
static int matrix_keypad_polled_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct device *dev = &pdev->dev;
|
||||
const struct matrix_keypad_platform_data *pdata;
|
||||
struct matrix_keypad_polled *keypad;
|
||||
struct input_dev *input;
|
||||
int err;
|
||||
|
||||
pdata = dev_get_platdata(dev);
|
||||
if (!pdata) {
|
||||
pdata = matrix_keypad_polled_parse_dt(dev);
|
||||
if (IS_ERR(pdata))
|
||||
return PTR_ERR(pdata);
|
||||
} else if (!pdata->keymap_data) {
|
||||
dev_err(&pdev->dev, "no keymap data defined\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
keypad = kzalloc(sizeof(struct matrix_keypad_polled), GFP_KERNEL);
|
||||
input = devm_input_allocate_device(dev);
|
||||
if (!keypad || !input) {
|
||||
err = -ENOMEM;
|
||||
goto err_free_mem;
|
||||
}
|
||||
|
||||
keypad->input = input;
|
||||
keypad->pdata = pdata;
|
||||
keypad->row_shift = get_count_order(pdata->num_col_gpios);
|
||||
of_property_read_u32(dev->of_node, "poll-interval",
|
||||
&keypad->poll_interval);
|
||||
|
||||
input->open = matrix_keypad_polled_start;
|
||||
input->close = matrix_keypad_polled_stop;
|
||||
|
||||
err = matrix_keypad_build_keymap(pdata->keymap_data, NULL,
|
||||
pdata->num_row_gpios,
|
||||
pdata->num_col_gpios,
|
||||
NULL, input);
|
||||
if (err) {
|
||||
dev_err(&pdev->dev, "failed to build keymap\n");
|
||||
goto err_free_mem;
|
||||
}
|
||||
|
||||
__set_bit(EV_KEY, input->evbit);
|
||||
if (!pdata->no_autorepeat)
|
||||
__set_bit(EV_REP, input->evbit);
|
||||
input_set_capability(input, EV_MSC, MSC_SCAN);
|
||||
input_set_drvdata(input, keypad);
|
||||
|
||||
err = input_setup_polling(input, matrix_keypad_polled);
|
||||
if (err) {
|
||||
dev_err(&pdev->dev, "unable to set up polling, err=%d\n", err);
|
||||
return err;
|
||||
}
|
||||
|
||||
input_set_poll_interval(input, keypad->poll_interval);
|
||||
|
||||
err = matrix_keypad_polled_init_gpio(pdev, keypad);
|
||||
if (err)
|
||||
goto err_free_mem;
|
||||
|
||||
err = input_register_device(input);
|
||||
if (err)
|
||||
goto err_free_gpio;
|
||||
|
||||
input_sync(input);
|
||||
|
||||
return 0;
|
||||
|
||||
err_free_gpio:
|
||||
keypad_free_gpio(keypad);
|
||||
err_free_mem:
|
||||
input_free_device(input);
|
||||
kfree(keypad);
|
||||
return err;
|
||||
}
|
||||
|
||||
static int matrix_keypad_polled_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct matrix_keypad_polled *keypad = platform_get_drvdata(pdev);
|
||||
|
||||
keypad_free_gpio(keypad);
|
||||
input_unregister_device(keypad->input);
|
||||
kfree(keypad);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_OF
|
||||
static const struct of_device_id matrix_keypad_polled_dt_match[] = {
|
||||
{ .compatible = "gpio-matrix-keypad-polled" },
|
||||
{ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, matrix_keypad_polled_dt_match);
|
||||
#endif
|
||||
|
||||
static struct platform_driver matrix_keypad_polled_driver = {
|
||||
.probe = matrix_keypad_polled_probe,
|
||||
.remove = matrix_keypad_polled_remove,
|
||||
.driver = {
|
||||
.name = "matrix-keypad-polled",
|
||||
.of_match_table = of_match_ptr(matrix_keypad_polled_dt_match),
|
||||
},
|
||||
};
|
||||
module_platform_driver(matrix_keypad_polled_driver);
|
||||
@@ -722,6 +722,7 @@ static int goodix_reset(struct goodix_ts_data *ts)
|
||||
|
||||
/* begin select I2C slave addr */
|
||||
error = gpiod_direction_output(ts->gpiod_rst, 0);
|
||||
error = gpiod_direction_output(ts->gpiod_int, 0);
|
||||
if (error)
|
||||
return error;
|
||||
|
||||
@@ -741,7 +742,7 @@ static int goodix_reset(struct goodix_ts_data *ts)
|
||||
usleep_range(6000, 10000); /* T4: > 5ms */
|
||||
|
||||
/* end select I2C slave addr */
|
||||
error = gpiod_direction_input(ts->gpiod_rst);
|
||||
error = gpiod_direction_input(ts->gpiod_int);
|
||||
if (error)
|
||||
return error;
|
||||
|
||||
|
||||
+211
-159
@@ -14,146 +14,170 @@
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/of_gpio.h>
|
||||
#include <linux/cdev.h>
|
||||
#include <linux/miscdevice.h>
|
||||
#include <linux/fs.h>
|
||||
#include <linux/delay.h> //内核延时 忙等
|
||||
#include <linux/uaccess.h>
|
||||
#include <linux/gpio.h> // 包含 GPIO 支持
|
||||
|
||||
#define ERROR_PRINT(x) do{ \
|
||||
printk(x " is error!\n"); \
|
||||
printk(KERN_ERR x " is error!\n"); \
|
||||
return -1; \
|
||||
}while(0)
|
||||
|
||||
#define DEVICE_NAME "dht11"
|
||||
|
||||
#define HIGH 1
|
||||
#define LOW 0
|
||||
#define HIGH 1 // 代表高电平
|
||||
#define LOW 0 // 代表低电平
|
||||
|
||||
/*1、platform匹配*/
|
||||
/*2、匹配成功后,注册字符设备或杂项设备*/
|
||||
#define DHT_MAXCOUNT 32000 // 计数超时的最大值
|
||||
|
||||
int dht11_GPIO; //DHT11_GPIO编号
|
||||
// dht11响应信号 + 数据信号,一共 1 + 40 次低高电平变化
|
||||
#define DHT_PULSES 41
|
||||
// 低高电平变化中,低和高各变化一次,所以电平维持计数记录需要 (1 + 40) * 2 次
|
||||
#define DHT_PULSES_SAMPLING_COUNT (DHT_PULSES * 2)
|
||||
|
||||
struct gpio_desc* dht11_gpiod; //DHT11_GPIO编号
|
||||
|
||||
struct dht11_info {
|
||||
dev_t devt;
|
||||
struct cdev cdev;
|
||||
struct class *dht11_class;
|
||||
struct device *dht11_device;
|
||||
dev_t devt; // 实际上就是 u32 类型 用于记录主设备号
|
||||
struct miscdevice dht11_device; // misc设备 用于创建 /dev/ 下的节点
|
||||
};
|
||||
|
||||
struct dht11_info dht11;
|
||||
/*起始信号
|
||||
主机发送采集信号
|
||||
主机由高电平-->低电平(至少18ms)--->高电平(20-40us)
|
||||
|
||||
DHT响应信号 低电平(80us)--->高电平(80us)
|
||||
/*
|
||||
* dht11 采样时序
|
||||
* 1. 起始信号
|
||||
* 主机发送采集信号,此时 GPIO 由 CPU 控制,设置为输出状态
|
||||
* 主机由高电平-->低电平(至少18ms)--->高电平(20-40us)
|
||||
*
|
||||
* 2. DHT响应信号,此时 GPIO 由 dht11 控制,所以应该设置为输入状态
|
||||
* 低电平(80us)--->高电平(80us)
|
||||
*
|
||||
* 3. DHT数据传输信号,共40bit,即5字节数据开始传输,先发送的bit是字节里的高位(MSB)
|
||||
* 数据开始 低电平(50us) ---> 数据0 高电平 26us-28us
|
||||
* 数据开始 低电平(50us) ---> 数据1 高电平 70us
|
||||
*/
|
||||
|
||||
数据开始 低电平(50us)
|
||||
数据0 高电平 26us-28us
|
||||
数据1 高电平70us
|
||||
*/
|
||||
|
||||
void end(void)
|
||||
static void end(void)
|
||||
{
|
||||
gpio_direction_output(dht11_GPIO, HIGH);
|
||||
}
|
||||
/*数据采集*/
|
||||
unsigned char get_dht11_value(void)
|
||||
{
|
||||
int i;
|
||||
volatile int max_wait;
|
||||
unsigned char data = 0;
|
||||
for (i = 0; i < 8; i++) { //8bit
|
||||
udelay(10);
|
||||
if (gpio_get_value(dht11_GPIO) == LOW) {
|
||||
// max_wait = 0;
|
||||
// while(gpio_get_value(dht11_GPIO) == LOW) {
|
||||
// ++max_wait;
|
||||
// udelay(1);
|
||||
// if (max_wait == 40) {
|
||||
// pr_info("33333\n");
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// udelay(40);
|
||||
while(gpio_get_value(dht11_GPIO) == LOW);
|
||||
/*当变为高电平时, 等待40us 查看是否为高电平
|
||||
如果为高电平 则为 1
|
||||
如果为低电平 则为 0
|
||||
*/
|
||||
udelay(30);
|
||||
if (gpio_get_value(dht11_GPIO) == HIGH) {
|
||||
data |= (0x1 << (7 - i)); //数据自高位到低位
|
||||
udelay(40);
|
||||
}
|
||||
else
|
||||
data &= ~(0x1 << (7 - i)); // 置为0
|
||||
}
|
||||
}
|
||||
return data;
|
||||
// 建议结束时,GPIO输出高,下次采样成功率高点
|
||||
gpiod_direction_output(dht11_gpiod, HIGH);
|
||||
}
|
||||
|
||||
ssize_t dht11_read(struct file *file, char __user * user_buf, size_t size, loff_t * loff)
|
||||
{
|
||||
volatile int max_wait;
|
||||
int err;
|
||||
unsigned char dht11_data[5];
|
||||
//mdelay(5); //拉低5ms 以免过快检测导致读取数据失败
|
||||
gpio_set_value(dht11_GPIO, LOW);
|
||||
mdelay(20); //拉低20ms
|
||||
/*拉高20-40us*/
|
||||
gpio_set_value(dht11_GPIO, HIGH);
|
||||
udelay(30); //拉高30us
|
||||
//设置为输入
|
||||
gpio_direction_input(dht11_GPIO);
|
||||
/*DHT11响应信号*/
|
||||
udelay(10);
|
||||
if (gpio_get_value(dht11_GPIO) == LOW) {
|
||||
//80us 低电平
|
||||
// max_wait = 0;
|
||||
err = 0;
|
||||
// while(gpio_get_value(dht11_GPIO) == LOW) {
|
||||
// ++max_wait;
|
||||
// udelay(10);
|
||||
// if (max_wait == 20) {
|
||||
// err = 1;
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// max_wait = 0;
|
||||
// while(gpio_get_value(dht11_GPIO) == LOW) {
|
||||
// ++max_wait;
|
||||
// if (max_wait == 214742000) {
|
||||
// err = 1;
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// while(gpio_get_value(dht11_GPIO) == LOW);
|
||||
udelay(70); //拉高80us
|
||||
//80us 高电平
|
||||
// while(gpio_get_value(dht11_GPIO) == HIGH);
|
||||
unsigned int pulse_counts[DHT_PULSES_SAMPLING_COUNT];
|
||||
volatile unsigned int i;
|
||||
unsigned int pulse_low_average;
|
||||
int data_index;
|
||||
|
||||
// max_wait = 0;
|
||||
// while(gpio_get_value(dht11_GPIO) == HIGH) {
|
||||
// ++max_wait;
|
||||
// if (max_wait == 214742000) {
|
||||
// err = 1;
|
||||
// pr_info("2222222\n");
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
udelay(80); //拉高80us
|
||||
/*
|
||||
* 下列算法解析:
|
||||
*
|
||||
* DHT_PULSES_SAMPLING_COUNT 为 82,因为从DHT11的响应信号开始,低高电平一共有82次
|
||||
* 低 80us 高 80us 为2次,这是一开始的响应信号
|
||||
* 低 50us 高 28us 或 70us,表示bit为0或1,这个有40次信号
|
||||
* 所以 (1 + 40) * 2 = 82
|
||||
* 数组输出化 0,因为这个数组是将电平维持时间通过计数形式表达
|
||||
* 如果电平维持时间为 80us,那么 pulse_counts[i] 就会比较大
|
||||
* 如果电平维持时间为 28us,那么 pulse_counts[i] 就会相比于80us时比较小
|
||||
*
|
||||
* 对于代表 低电平维持了 50us 的那些pulse_counts[i]而言(从i=2,i += 2)
|
||||
* 由于维持的时间都相同,所以计数值都差不多,把这40个低电平50us的计数求平均数
|
||||
* 那么这个平均数就代表 50us 的计数
|
||||
* 当分辨bit是0还是1时,就需要看低电平50us后的高电平维持的时间,也就是计数值。
|
||||
* 当计数值小于上面求的平均数,代表着高电平维持的时间少于50us,也就是在了 28us 左右,那么当前bit为0。
|
||||
* 当计数值大于上面求的平均数,代表着低电平维持的时间多于50us,也就是在了 70us 左右,那么当前bit为1。
|
||||
*
|
||||
* 这样就能得到5个字节的数据。
|
||||
*/
|
||||
for (i = 0; i < DHT_PULSES_SAMPLING_COUNT; ++i)
|
||||
pulse_counts[i] = 0;
|
||||
for (i = 0; i < 5; ++i)
|
||||
dht11_data[i] = 0;
|
||||
|
||||
if (!err) {
|
||||
dht11_data[0] = get_dht11_value(); //湿度整数数据
|
||||
dht11_data[1] = get_dht11_value(); //湿度小数数据 0
|
||||
dht11_data[2] = get_dht11_value(); //温度整数数据
|
||||
dht11_data[3] = get_dht11_value(); //温度小数数据
|
||||
dht11_data[4] = get_dht11_value(); //校验和
|
||||
// 实现 1. 起始信号 的时序
|
||||
gpiod_direction_output(dht11_gpiod, LOW);
|
||||
mdelay(20); //拉低20ms 要求是(最小18ms)
|
||||
gpiod_direction_output(dht11_gpiod, HIGH);
|
||||
udelay(40); //拉高40us 要求是(20-40us)
|
||||
|
||||
// 之后是DHT11响应信号的数据传输信号,所以 GPIO 要设置为输入状态
|
||||
gpiod_direction_input(dht11_gpiod);
|
||||
|
||||
err = 0;
|
||||
for (i = 0; i < DHT_PULSES_SAMPLING_COUNT; i += 2) {
|
||||
// 根据前面所说,响应信号和数据传输信号,都是以低电平开始,高电平结束
|
||||
// 这里就是前面说的计数,将电平维持时间转化为计数值
|
||||
while(gpiod_get_value(dht11_gpiod) == LOW) {
|
||||
if (++pulse_counts[i] >= DHT_MAXCOUNT) {
|
||||
// failed
|
||||
err = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (err)
|
||||
break;
|
||||
while(gpiod_get_value(dht11_gpiod) == HIGH) {
|
||||
if (++pulse_counts[i + 1] >= DHT_MAXCOUNT) {
|
||||
// failed
|
||||
err = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (err)
|
||||
break;
|
||||
}
|
||||
|
||||
// 计数过大(DHT_MAXCOUNT),代表DHT11数据信号采样(计数)失败
|
||||
if (err) {
|
||||
// 计数失败会很常见,所以这个打印可以注释掉
|
||||
pr_info("dht11 lost response! (GPIO : %d)\n", desc_to_gpio(dht11_gpiod));
|
||||
end();
|
||||
return -16;
|
||||
}
|
||||
|
||||
/*
|
||||
* 开始统计收集到的计数值,此时已经和DHT11没关系了
|
||||
*/
|
||||
|
||||
// 跳过一开始的 80us 低 80us 高的响应信号 所以 i 不会等于0和1
|
||||
|
||||
// 算出低电平的维持50us时的平均值
|
||||
pulse_low_average = 0;
|
||||
for (i = 2; i < DHT_PULSES_SAMPLING_COUNT; i += 2)
|
||||
pulse_low_average += pulse_counts[i];
|
||||
pulse_low_average /= DHT_PULSES; //平均值
|
||||
|
||||
// 根据平均值,区分 bit 0 还是 bit 1
|
||||
for (i = 3; i < DHT_PULSES_SAMPLING_COUNT; i += 2) {
|
||||
/*
|
||||
* 3 5 7 9 11 13 15 17
|
||||
* 19 21 23 25 27 29 31 33
|
||||
* 35 37 39 41 43 45 47 49
|
||||
* 51 53 55 57 59 61 63 65
|
||||
* 67 69 71 73 75 77 79 81
|
||||
*
|
||||
* 要算当前的 pulse_counts[i] 属于那个字节,也就是 data_index
|
||||
* i从3开始,所以先减去3
|
||||
* 8bit 一个字节,但是 pulse_counts[i - 1] pulse_counts[i] 构成一个bit
|
||||
* 所以 8 * 2 = 16,所以要除以16,这样就算到了 data_index
|
||||
*/
|
||||
data_index = (i - 3) / 16;
|
||||
dht11_data[data_index] <<= 1; // 前面说过,先来的bit属于高位,所以先左移一位,将高位向前移动
|
||||
|
||||
// 高于平均值代表是 bit1
|
||||
if (pulse_counts[i] >= pulse_low_average)
|
||||
dht11_data[data_index] |= 1;
|
||||
// 由于前面已经左移一位,所以第 0 位一定是 0,所以遇到bit0,无需再置位
|
||||
}
|
||||
|
||||
if (copy_to_user(user_buf, dht11_data, size) != 0)
|
||||
ERROR_PRINT("dht11 date copy_to_user failed");
|
||||
//恢复为输出模式高电平
|
||||
end();
|
||||
return 0;
|
||||
}
|
||||
@@ -162,21 +186,27 @@ ssize_t dht11_write(struct file *file, const char __user *user_buf, size_t size,
|
||||
{
|
||||
int ret;
|
||||
unsigned int gpio;
|
||||
struct gpio_desc* new_gpiod_desc;
|
||||
|
||||
/* 检查用户空间的buffer是否足够大以存储一个无符号整型 */
|
||||
// 检查用户空间的buffer是否足够大以存储一个无符号整型也就是4字节
|
||||
if (size < sizeof(gpio)) {
|
||||
printk(KERN_WARNING "dht11_write: buffer too small\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/* 从用户空间复制数据到内核空间 */
|
||||
// 从用户空间复制数据到内核空间 不能直接 memcpy
|
||||
ret = copy_from_user(&gpio, user_buf, sizeof(gpio));
|
||||
if (ret != 0) {
|
||||
printk(KERN_ERR "dht11_write: failed to copy data from user space\n");
|
||||
return -EFAULT;
|
||||
}
|
||||
|
||||
dht11_GPIO = gpio;
|
||||
// 根据 GPIO 编号获取 gpiod_desc
|
||||
new_gpiod_desc = gpio_to_desc(gpio);
|
||||
if (new_gpiod_desc < 0)
|
||||
return -1;
|
||||
|
||||
dht11_gpiod = new_gpiod_desc; // 更新 gpiod_desc 之后 read 调用时就会操作新的gpio
|
||||
|
||||
/* 返回写入的字节数 */
|
||||
return sizeof(gpio);
|
||||
@@ -186,100 +216,122 @@ int dht11_open(struct inode * inode, struct file * file)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int dht11_release(struct inode * inode, struct file *file)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* 因为最终目的是为了对 /dev/dht11 节点进行io
|
||||
* 所以需要实现这些内核接口,实现了才能进行操作
|
||||
* open 和 release 对应 open 和 close 函数,但没有什么初始化和关闭操作,所以函数里面无需实现代码
|
||||
*
|
||||
* read 对应 read 函数,是为了读取5个字节的采样数据,也就是触发一次采样
|
||||
*
|
||||
* write 对应 write 函数,对于dht11而言,没什么要写入的,但是本驱动实现的是改变操作dht11的gpio的效果
|
||||
* 比如一开始设备树里面注册的是gpio 88去控制的,但是实际使用时,改成了gpio 61去控制
|
||||
* 那么write写入61这个数字所在int的指针,即可修改gpiod_desc(dht11_gpiod)为 gpio 61 的gpiod_desc
|
||||
* 后续的read函数也是操作gpio 61这个引脚。
|
||||
*/
|
||||
struct file_operations fops = {
|
||||
.open = dht11_open,
|
||||
.release = dht11_release,
|
||||
.read = dht11_read,
|
||||
.write = dht11_write, // 添加这行
|
||||
.write = dht11_write,
|
||||
.owner = THIS_MODULE
|
||||
};
|
||||
|
||||
/*匹配成功进入probe函数*/
|
||||
/*
|
||||
* 字符设备管理代码
|
||||
* 下面的代码是为了向内核注册驱动和设备
|
||||
*
|
||||
* 这两个是为了注册驱动和注销驱动
|
||||
* dht11_init
|
||||
* dht11_exit
|
||||
*
|
||||
* 这两个是为了声明设备和删除设备
|
||||
* dht11_probe
|
||||
* dht11_remove
|
||||
*
|
||||
* 有了驱动,才会去找设备
|
||||
* 而找到设备靠的是设备树里面有没有一个设备的 compatible 字段和
|
||||
* of_match_table 里面 compatible 字段匹配
|
||||
* 如果匹配了,就会调用 dht11_probe
|
||||
*/
|
||||
|
||||
int dht11_probe(struct platform_device *pdev)
|
||||
{
|
||||
/*匹配成功之后,获取硬件资源,然后注册字符设备*/
|
||||
/*SHT11-gpios = <&gpk3 0 GPIO_ACTIVE_HIGH>;*/
|
||||
int ret;
|
||||
dht11_GPIO = of_get_named_gpio(pdev->dev.of_node, "SHT11-gpios", 0);
|
||||
if (dht11_GPIO < 0)
|
||||
ERROR_PRINT("of_get_named_gpio");
|
||||
/*获取资源*/
|
||||
// ret = gpio_request(dht11_GPIO, "dht11_gpio");
|
||||
// if (ret != 0)
|
||||
// {
|
||||
// ERROR_PRINT("gpio_request!");
|
||||
// }
|
||||
ret = gpio_direction_output(dht11_GPIO, HIGH);
|
||||
if (ret != 0)
|
||||
ERROR_PRINT("gpio_direction_output");
|
||||
|
||||
/*
|
||||
* dht11-gpios = <&gpio 61 GPIO_ACTIVE_HIGH>;
|
||||
* 注意 GPIO_ACTIVE_HIGH 这个也要关注
|
||||
* 如果 GPIO的高电平对应逻辑值 1,那么填 GPIO_ACTIVE_HIGH
|
||||
* 否则 填GPIO_ACTIVE_LOW
|
||||
*/
|
||||
dht11_gpiod = devm_gpiod_get_optional(&pdev->dev, DEVICE_NAME, 0);
|
||||
if (dht11_gpiod <= 0)
|
||||
ERROR_PRINT("devm_gpiod_get_optional");
|
||||
|
||||
/*注册字符设备驱动*/
|
||||
/*分配设备号*/
|
||||
ret = alloc_chrdev_region(&dht11.devt, 0, 1, "dht11");
|
||||
// 分配设备号
|
||||
ret = alloc_chrdev_region(&dht11.devt, 0, 1, DEVICE_NAME);
|
||||
if (ret != 0)
|
||||
ERROR_PRINT("alloc_chrdev_region");
|
||||
/*初始化cdev*/
|
||||
dht11.cdev.owner = THIS_MODULE;
|
||||
cdev_init(&dht11.cdev, &fops);
|
||||
|
||||
/*将cdev注册到内核*/
|
||||
ret = cdev_add(&dht11.cdev, dht11.devt,1);
|
||||
if (ret != 0)
|
||||
ERROR_PRINT("cdev_add");
|
||||
/*创建设备class*/
|
||||
dht11.dht11_class = class_create(THIS_MODULE, "dht11_class");
|
||||
if (dht11.dht11_class == NULL)
|
||||
ERROR_PRINT("class_create");
|
||||
/*在class下创建设备节点*/
|
||||
dht11.dht11_device = device_create(dht11.dht11_class, NULL, dht11.devt, NULL, DEVICE_NAME);
|
||||
if (dht11.dht11_device == NULL)
|
||||
ERROR_PRINT("device_create");
|
||||
printk("probe success!\n");
|
||||
// 注册 misc 设备,在/dev/下生成 dht11 节点(文件)
|
||||
dht11.dht11_device.minor = MISC_DYNAMIC_MINOR; // 动态分配次设备号
|
||||
dht11.dht11_device.name = "dht11";
|
||||
dht11.dht11_device.fops = &fops;
|
||||
ret = misc_register(&dht11.dht11_device); // 这样 /dev 下就会生成对应节点
|
||||
if (ret < 0) {
|
||||
unregister_chrdev_region(dht11.devt, 1);
|
||||
return ret;
|
||||
}
|
||||
|
||||
printk(KERN_INFO "dht11 probe success! (GPIO: %d)\n", desc_to_gpio(dht11_gpiod));
|
||||
return 0;
|
||||
}
|
||||
|
||||
int dht11_remove(struct platform_device *pdev)
|
||||
{
|
||||
// 注销 misc 设备
|
||||
misc_deregister(&dht11.dht11_device);
|
||||
// 注销设备号
|
||||
unregister_chrdev_region(dht11.devt, 1);
|
||||
// 释放 GPIO 描述符
|
||||
gpiod_put(dht11_gpiod);
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct of_device_id of_match_table[] = {
|
||||
{.compatible = "dht11-sensor"},
|
||||
{}
|
||||
}; //设备树匹配
|
||||
}; // 设备树匹配
|
||||
|
||||
struct platform_driver pdrv = {
|
||||
.probe = dht11_probe,
|
||||
.remove = dht11_remove,
|
||||
.driver = {
|
||||
.name = "dht11",
|
||||
.name = DEVICE_NAME,
|
||||
.owner = THIS_MODULE,
|
||||
.of_match_table = of_match_table
|
||||
},
|
||||
};
|
||||
|
||||
static int dht11_init(void)
|
||||
{
|
||||
//注册platform_driver
|
||||
// 注册platform_driver
|
||||
int ret = platform_driver_register(&pdrv);
|
||||
if (ret != 0)
|
||||
ERROR_PRINT("platform driver register");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void dht11_exit(void)
|
||||
{
|
||||
/*注销设备节点*/
|
||||
device_destroy(dht11.dht11_class, dht11.devt);
|
||||
/*注销class*/
|
||||
class_destroy(dht11.dht11_class);
|
||||
/*注销字符设备*/
|
||||
cdev_del(&dht11.cdev);
|
||||
/*注销设备号*/
|
||||
unregister_chrdev_region(dht11.devt, 1);
|
||||
/*注销GPIO*/
|
||||
gpio_free(dht11_GPIO);
|
||||
/*注销设备节点*/
|
||||
/*注销platform_driver*/
|
||||
platform_driver_unregister(&pdrv);
|
||||
}
|
||||
|
||||
@@ -8,6 +8,18 @@
|
||||
# matching values else you do not screw only LS CAN FD build but even
|
||||
# base kernel build
|
||||
|
||||
obj-$(CONFIG_CAN_LSCANFD) := lscanfd.o
|
||||
lscanfd-y := lscanfd_dma.elfbin
|
||||
obj-$(CONFIG_CAN_LSCANFD_PLATFORM) += lscanfd_platform.elfbin
|
||||
quiet_cmd_build_lscanfd_dma = GEN $@
|
||||
cmd_build_lscanfd_dma = cp $(obj)/lscanfd_dma.o_shipped $@
|
||||
|
||||
quiet_cmd_build_lscanfd_platform = GEN $@
|
||||
cmd_build_lscanfd_platform = cp $(obj)/lscanfd_platform.o_shipped $@
|
||||
|
||||
$(obj)/lscanfd_dma.o: FORCE
|
||||
$(call if_changed,build_lscanfd_dma)
|
||||
|
||||
$(obj)/lscanfd_platform.o: FORCE
|
||||
$(call if_changed,build_lscanfd_platform)
|
||||
|
||||
obj-$(CONFIG_CAN_LSCANFD) := lscanfd_dma.o
|
||||
obj-$(CONFIG_CAN_LSCANFD_PLATFORM) += lscanfd_platform.o
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -250,6 +250,7 @@ static void option_instat_callback(struct urb *urb);
|
||||
#define QUECTEL_PRODUCT_EP06 0x0306
|
||||
#define QUECTEL_PRODUCT_EM12 0x0512
|
||||
#define QUECTEL_PRODUCT_RM500Q 0x0800
|
||||
#define QUECTEL_PRODUCT_EC200A_CN 0x6005
|
||||
#define QUECTEL_PRODUCT_EC200T 0x6026
|
||||
#define QUECTEL_PRODUCT_EC200U_CN 0x0901
|
||||
|
||||
@@ -1119,6 +1120,7 @@ static const struct usb_device_id option_ids[] = {
|
||||
{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500Q, 0xff, 0, 0) },
|
||||
{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500Q, 0xff, 0xff, 0x10),
|
||||
.driver_info = ZLP },
|
||||
{ USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC200A_CN) },
|
||||
{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC200T, 0xff, 0, 0) },
|
||||
{ USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC200U_CN) },
|
||||
|
||||
@@ -2095,6 +2097,7 @@ static struct usb_serial_driver option_1port_device = {
|
||||
.suspend = usb_wwan_suspend,
|
||||
.resume = usb_wwan_resume,
|
||||
#endif
|
||||
.reset_resume = usb_wwan_resume,
|
||||
};
|
||||
|
||||
static struct usb_serial_driver * const serial_drivers[] = {
|
||||
@@ -2128,6 +2131,36 @@ static int option_probe(struct usb_serial *serial,
|
||||
*/
|
||||
if (device_flags & NUMEP2 && iface_desc->bNumEndpoints != 2)
|
||||
return -ENODEV;
|
||||
#if 1 //Added by Quectel
|
||||
//Quectel UC20's interface 4 can be used as USB Network device
|
||||
if (serial->dev->descriptor.idVendor == cpu_to_le16(0x05C6)
|
||||
&& serial->dev->descriptor.idProduct == cpu_to_le16(0x9003)
|
||||
&& serial->interface->cur_altsetting->desc.bInterfaceNumber >= 4)
|
||||
return -ENODEV;
|
||||
|
||||
//Quectel EC20(MDM9215)'s interface 4 can be used as USB Network device
|
||||
if (serial->dev->descriptor.idVendor == cpu_to_le16(0x05C6)
|
||||
&& serial->dev->descriptor.idProduct == cpu_to_le16(0x9215)
|
||||
&& serial->interface->cur_altsetting->desc.bInterfaceNumber >= 4)
|
||||
return -ENODEV;
|
||||
|
||||
if (serial->dev->descriptor.idVendor == cpu_to_le16(0x2C7C)) {
|
||||
__u16 idProduct = le16_to_cpu(serial->dev->descriptor.idProduct);
|
||||
struct usb_interface_descriptor *intf = &serial->interface->cur_altsetting->desc;
|
||||
|
||||
if (intf->bInterfaceClass != 0xFF || intf->bInterfaceSubClass == 0x42) {
|
||||
//ECM, RNDIS, NCM, MBIM, ACM, UAC, ADB
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
if ((idProduct&0xF000) == 0x0000) {
|
||||
//MDM interface 4 is QMI
|
||||
if (intf->bInterfaceNumber == 4 && intf->bNumEndpoints == 3
|
||||
&& intf->bInterfaceSubClass == 0xFF && intf->bInterfaceProtocol == 0xFF)
|
||||
return -ENODEV;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Store the device flags so we can use them during attach. */
|
||||
usb_set_serial_data(serial, (void *)device_flags);
|
||||
|
||||
@@ -478,6 +478,21 @@ static struct urb *usb_wwan_setup_urb(struct usb_serial_port *port,
|
||||
|
||||
if (intfdata->use_zlp && dir == USB_DIR_OUT)
|
||||
urb->transfer_flags |= URB_ZERO_PACKET;
|
||||
#if 1 //Added by Quectel for Zero Packet
|
||||
if (dir == USB_DIR_OUT) {
|
||||
if (serial->dev->descriptor.idVendor == cpu_to_le16(0x05C6)
|
||||
&& serial->dev->descriptor.idProduct == cpu_to_le16(0x9090))
|
||||
urb->transfer_flags |= URB_ZERO_PACKET;
|
||||
if (serial->dev->descriptor.idVendor == cpu_to_le16(0x05C6)
|
||||
&& serial->dev->descriptor.idProduct == cpu_to_le16(0x9003))
|
||||
urb->transfer_flags |= URB_ZERO_PACKET;
|
||||
if (serial->dev->descriptor.idVendor == cpu_to_le16(0x05C6)
|
||||
&& serial->dev->descriptor.idProduct == cpu_to_le16(0x9215))
|
||||
urb->transfer_flags |= URB_ZERO_PACKET;
|
||||
if (serial->dev->descriptor.idVendor == cpu_to_le16(0x2C7C))
|
||||
urb->transfer_flags |= URB_ZERO_PACKET;
|
||||
}
|
||||
#endif
|
||||
|
||||
return urb;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user