From 812ded0d8d6800728c4c11abed7546d735449123 Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Wed, 15 Feb 2023 09:14:04 +0000 Subject: [PATCH] add rk809 spk hp --- kernel/arch/arm64/boot/dts/rockchip/rk3568-evb.dtsi | 2 kernel/arch/arm64/boot/dts/rockchip/NK-R36S0.dtsi | 46 +++++++++------ kernel/drivers/misc/nkio/nkio.h | 6 +- kernel/drivers/misc/nkio/nk_io_core.c | 71 ++++++++++++++++------- 4 files changed, 83 insertions(+), 42 deletions(-) diff --git a/kernel/arch/arm64/boot/dts/rockchip/NK-R36S0.dtsi b/kernel/arch/arm64/boot/dts/rockchip/NK-R36S0.dtsi index 2c59a55..2342060 100755 --- a/kernel/arch/arm64/boot/dts/rockchip/NK-R36S0.dtsi +++ b/kernel/arch/arm64/boot/dts/rockchip/NK-R36S0.dtsi @@ -17,7 +17,7 @@ rk_headset: rk-headset { compatible = "rockchip_headset"; - headset_gpio = <&gpio3 RK_PC2 GPIO_ACTIVE_LOW>; + headset_gpio = <&gpio0 RK_PD5 GPIO_ACTIVE_LOW>; pinctrl-names = "default"; pinctrl-0 = <&hp_det>; }; @@ -32,15 +32,6 @@ vin-supply = <&vcc3v3_sys>; }; - vcc3v3_vga: vcc3v3-vga { - compatible = "regulator-fixed"; - regulator-name = "vcc3v3_vga"; - regulator-always-on; - regulator-boot-on; - gpio = <&gpio0 RK_PD5 GPIO_ACTIVE_HIGH>; - enable-active-high; - vin-supply = <&vcc3v3_sys>; - }; pcie30_avdd0v9: pcie30-avdd0v9 { compatible = "regulator-fixed"; @@ -97,7 +88,7 @@ nk_io_init { compatible = "nk_io_control"; - usb_en_oc_gpio = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>; //USB_EN_OC_GPIO0_A5 +// usb_en_oc_gpio = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>; //USB_EN_OC_GPIO0_A5 lcd_bk_en_gpio = <&gpio0 RK_PB0 GPIO_ACTIVE_HIGH>; //LCD0_BKLT_EN_3V3 lcd_pwblk_gpio = <&gpio0 RK_PB7 GPIO_ACTIVE_HIGH>; //LCD0_BKLT_EN_3V3 vcc3_io_en_gpio = <&gpio0 RK_PC4 GPIO_ACTIVE_HIGH>; //VCC3_IO_EN_GPIO0_C4_3V3 @@ -110,12 +101,14 @@ reset_4g_gpio = <&gpio1 RK_PB2 GPIO_ACTIVE_HIGH>; //4G_RST_GPIO01_B2_3V3 air_mode_4g_gpio = <&gpio1 RK_PB0 GPIO_ACTIVE_HIGH>; //4G_AIR_MODE_GPIO01_B0_3V3 wake_4g_gpio = <&gpio1 RK_PB1 GPIO_ACTIVE_HIGH>; //4G_WAKEUP_GPIO01_B1_3V3 - + hp_en_gpio = <&gpio3 RK_PA6 GPIO_ACTIVE_HIGH>;//HP_EN_GPIO3_A6_3V3 + spk_out_gpio = <&gpio4 RK_PC2 GPIO_ACTIVE_HIGH>;//AMP_SD_GPIO4_C2_3V3 + edp_enable_gpio = <&gpio0 RK_PC4 GPIO_ACTIVE_HIGH>; - edp_gpio0 = <&gpio3 RK_PD2 GPIO_ACTIVE_LOW>; //7511_GPIO0-GPIO3_D2 - edp_gpio1 = <&gpio3 RK_PD3 GPIO_ACTIVE_LOW>; //7511_GPIO1-GPIO3_D3 - edp_gpio2 = <&gpio3 RK_PD4 GPIO_ACTIVE_LOW>; //7511_GPIO2-GPIO3_D4 - edp_gpio3 = <&gpio3 RK_PD5 GPIO_ACTIVE_LOW>; //7511_GPIO3-GPIO3_D5 + edp_gpio0 = <&gpio3 RK_PD2 GPIO_ACTIVE_HIGH>; //7511_GPIO0-GPIO3_D2 + edp_gpio1 = <&gpio3 RK_PD3 GPIO_ACTIVE_HIGH>; //7511_GPIO1-GPIO3_D3 + edp_gpio2 = <&gpio3 RK_PD4 GPIO_ACTIVE_HIGH>; //7511_GPIO2-GPIO3_D4 + edp_gpio3 = <&gpio3 RK_PD5 GPIO_ACTIVE_HIGH>; //7511_GPIO3-GPIO3_D5 edp_reset = <&gpio3 RK_PD1 GPIO_ACTIVE_LOW>; //7511_RST_GPIO3_D1 // tp_reset = <&gpio3 RK_PA7 GPIO_ACTIVE_HIGH>; // vddio_mipi = <&gpio1 RK_PA4 GPIO_ACTIVE_HIGH>; @@ -434,7 +427,7 @@ // }; headphone { hp_det: hp-det { - rockchip,pins = <3 RK_PC2 RK_FUNC_GPIO &pcfg_pull_down>; + rockchip,pins = <0 RK_PD5 RK_FUNC_GPIO &pcfg_pull_down>; }; }; @@ -451,7 +444,24 @@ }; nk_io_init{ nk_io_gpio: nk-io-gpio{ - rockchip,pins = <0 RK_PC6 RK_FUNC_GPIO &pcfg_pull_up>; + rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>, + <0 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>, + <0 RK_PC4 RK_FUNC_GPIO &pcfg_pull_none>, + <4 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>, + <4 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>, + <1 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>, + <0 RK_PC7 RK_FUNC_GPIO &pcfg_pull_none>, + <1 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>, + <1 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>, + <1 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>, + <3 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>, + <4 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>, + <3 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>, + <3 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>, + <3 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>, + <3 RK_PD5 RK_FUNC_GPIO &pcfg_pull_none>, + <3 RK_PD1 RK_FUNC_GPIO &pcfg_pull_none>, + <0 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>; }; }; }; diff --git a/kernel/arch/arm64/boot/dts/rockchip/rk3568-evb.dtsi b/kernel/arch/arm64/boot/dts/rockchip/rk3568-evb.dtsi index 83cde4b..dec6b3a 100755 --- a/kernel/arch/arm64/boot/dts/rockchip/rk3568-evb.dtsi +++ b/kernel/arch/arm64/boot/dts/rockchip/rk3568-evb.dtsi @@ -273,6 +273,8 @@ vcc5v0_otg: vcc5v0-otg-regulator { compatible = "regulator-fixed"; regulator-name = "vcc5v0_otg"; + egulator-boot-on; + regulator-always-on; regulator-min-microvolt = <5000000>; regulator-max-microvolt = <5000000>; enable-active-high; diff --git a/kernel/drivers/misc/nkio/nk_io_core.c b/kernel/drivers/misc/nkio/nk_io_core.c index 46e2120..4193df9 100755 --- a/kernel/drivers/misc/nkio/nk_io_core.c +++ b/kernel/drivers/misc/nkio/nk_io_core.c @@ -139,27 +139,6 @@ } - //usb_en_oc_gpio - ret = of_get_named_gpio_flags(node, "usb_en_oc_gpio", 0, &flags); - if (ret < 0) { - printk("%s() Can not read property usb_en_oc_gpio\n", __FUNCTION__); - goto err; - } else { - pdata->usb_en_oc_gpio = ret; - gpio_free(ret); - ret = devm_gpio_request(&pdev->dev, pdata->usb_en_oc_gpio, "usb_en_oc_gpio"); - if (ret < 0){ - printk("%s() devm_gpio_request usb_en_oc_gpio request ERROR\n", __FUNCTION__); - goto err; - } - - ret = gpio_direction_output(pdata->usb_en_oc_gpio,1); - if(ret < 0){ - printk("%s() gpio_direction_input usb_en_oc_gpio set ERROR\n", __FUNCTION__); - goto err; - } - } - //hub_host2_5V_rest_gpio ret = of_get_named_gpio_flags(node, "hub_host2_5V_rest_gpio", 0, &flags); if (ret < 0) { @@ -292,7 +271,57 @@ } } + //hp_en_gpio + ret = of_get_named_gpio_flags(node, "hp_en_gpio", 0, &flags); + if (ret < 0) { + printk("%s() Can not read property hp_en_gpio\n", __FUNCTION__); + } else { + pdata->hp_en_gpio = ret; + ret = devm_gpio_request(&pdev->dev, pdata->hp_en_gpio, "hp_en_gpio"); + if(ret < 0){ + printk("%s() devm_gpio_request hp_en_gpio request ERROR\n", __FUNCTION__); + } + ret = gpio_direction_output(pdata->hp_en_gpio,1); + if(ret < 0){ + printk("%s() gpio_direction_output hp_en_gpio set ERROR\n", __FUNCTION__); + } + } + + //wifi_power_en_gpio + ret = of_get_named_gpio_flags(node, "wifi_power_en_gpio", 0, &flags); + if (ret < 0) { + printk("%s() Can not read property wifi_power_en_gpio\n", __FUNCTION__); + } else { + pdata->wifi_power_en_gpio = ret; + + ret = devm_gpio_request(&pdev->dev, pdata->wifi_power_en_gpio, "wifi_power_en_gpio"); + if(ret < 0){ + printk("%s() devm_gpio_request wifi_power_en_gpio request ERROR\n", __FUNCTION__); + } + ret = gpio_direction_output(pdata->wifi_power_en_gpio,1); + if(ret < 0){ + printk("%s() gpio_direction_output wifi_power_en_gpio set ERROR\n", __FUNCTION__); + } + } + + + //spk_out_gpio + ret = of_get_named_gpio_flags(node, "spk_out_gpio", 0, &flags); + if (ret < 0) { + printk("%s() Can not read property spk_out_gpio\n", __FUNCTION__); + } else { + pdata->spk_out_gpio = ret; + + ret = devm_gpio_request(&pdev->dev, pdata->spk_out_gpio, "spk_out_gpio"); + if(ret < 0){ + printk("%s() devm_gpio_request spk_out_gpio request ERROR\n", __FUNCTION__); + } + ret = gpio_direction_output(pdata->spk_out_gpio,0); + if(ret < 0){ + printk("%s() gpio_direction_output spk_out_gpio set ERROR\n", __FUNCTION__); + } + } //air_mode_4g_gpio ret = of_get_named_gpio_flags(node, "air_mode_4g_gpio", 0, &flags); if (ret < 0) { diff --git a/kernel/drivers/misc/nkio/nkio.h b/kernel/drivers/misc/nkio/nkio.h index e94e17f..1693957 100755 --- a/kernel/drivers/misc/nkio/nkio.h +++ b/kernel/drivers/misc/nkio/nkio.h @@ -7,8 +7,8 @@ unsigned int vcc_3_3v_io; unsigned int vcc_12v_io; unsigned int usb_5v_gpio; - //unsigned int hub_5V_rest_gpio; - //unsigned int hub_5V_gpio; + unsigned int wifi_power_en_gpio; + unsigned int hp_en_gpio; unsigned int led_gpio; unsigned int mic_switch_gpio; unsigned int audio_switch_gpio; @@ -27,7 +27,7 @@ unsigned int hub_host3_5v_gpio; unsigned int edp_power_supply_gpio; unsigned int edp_enable_gpio; - unsigned int tp_enable; + unsigned int spk_out_gpio; unsigned int vddio_mipi; // unsigned int tp_reset; }; -- Gitblit v1.6.2