Message ID | 20221022084737.1028-1-linux.amoon@gmail.com |
---|---|
State | New |
Headers | show |
Series | [PATCHv3] arm64: dts: meson: Enable active coling using gpio-fan on Odroid N2/N2+ | expand |
Hi, On 25/10/2022 20:06, Anand Moon wrote: > Hi Martin, > > On Sat, 22 Oct 2022 at 17:22, Martin Blumenstingl > <martin.blumenstingl@googlemail.com> wrote: >> >> Hi Anand, >> >> On Sat, Oct 22, 2022 at 1:27 PM Anand Moon <linux.amoon@gmail.com> wrote: >> [...] >>>>> @@ -1982,7 +1982,6 @@ pwm_ao_d_10_pins: pwm-ao-d-10 { >>>>> mux { >>>>> groups = "pwm_ao_d_10"; >>>>> function = "pwm_ao_d"; >>>>> - bias-disable; >>>> &pwm_ao_d_10_pins is not referenced anywhere so it seems that this >>>> change has no impact on controlling the fan on Odroid-N2(+). >>>> How did you test this change? >>>> >>> Ok I felt these changes affect the behavior of the pinctrl >>> >>> * @PIN_CONFIG_BIAS_DISABLE: disable any pin bias on the pin, a >>> * transition from say pull-up to pull-down implies that you disable >>> * pull-up in the process, this setting disables all biasing. >>> >>> I mapped this is linked in pinctrl driver, pwm_ao_d_10_pins GPIOAO_10 see below >> Yes, I understand this part. >> My concern is: &pwm_ao_d_10_pins settings only become active when this >> node is actively referenced. You can even see it in your output >> below... >> >> [...] >>> pin 10 (GPIOAO_10): (MUX UNCLAIMED) aobus-banks:1958 >> This shows that it's used as a GPIO. If the &pwm_ao_d_10_pins setting >> was used then it would show "function pwm_ao_d group pwm_ao_d_10" >> (similar to what GPIOE_1 shows in your output) >> >> If you want to know if a pull-up/down is enabled you can look at the output of: >> $ cat /sys/kernel/debug/pinctrl/ff800000.sys-ctrl\:pinctrl@14-pinctrl-meson/pinconf-pins >> (I'm sure this can also be retrieved from some userspace tools, but I >> don't know how) >> > > I now switch using pwm-fan with the local changes I am able to link > pwm_ao_d_10_pins > but now the issue is fan keeps on spinning on boot-up and stays on. > > I can manually turn on off by using > $ sudo gpioset gpiochip1 10=1 // fan on > $ sudo gpioset gpiochip1 10=0 // fan off By doing that actually override the PWM function of the pin and set it as a GPIO. > > It is not controlled by the thermal tip as expected. > I feel some configuration is missing in pwm-meson driver. > Any input for me? > > $ sudo cat /sys/kernel/debug/pinctrl/ff800000.sys-ctrl\:pinctrl@14-pinctrl-meson/pinmux-pins > [sudo] password for alarm: > Pinmux settings per pin > Format: pin (name): mux_owner gpio_owner hog? > pin 0 (GPIOAO_0): ff803000.serial (GPIO UNCLAIMED) function uart_ao_a > group uart_ao_a_tx > pin 1 (GPIOAO_1): ff803000.serial (GPIO UNCLAIMED) function uart_ao_a > group uart_ao_a_rx > pin 2 (GPIOAO_2): (MUX UNCLAIMED) aobus-banks:1950 > pin 3 (GPIOAO_3): (MUX UNCLAIMED) (GPIO UNCLAIMED) > pin 4 (GPIOAO_4): (MUX UNCLAIMED) (GPIO UNCLAIMED) > pin 5 (GPIOAO_5): ff808000.ir (GPIO UNCLAIMED) function > remote_ao_input group remote_ao_input > pin 6 (GPIOAO_6): (MUX UNCLAIMED) (GPIO UNCLAIMED) > pin 7 (GPIOAO_7): (MUX UNCLAIMED) (GPIO UNCLAIMED) > pin 8 (GPIOAO_8): (MUX UNCLAIMED) aobus-banks:1956 > pin 9 (GPIOAO_9): (MUX UNCLAIMED) aobus-banks:1957 > pin 10 (GPIOAO_10): ff807000.pwm (GPIO UNCLAIMED) function pwm_ao_d > group pwm_ao_d_10 > pin 11 (GPIOAO_11): (MUX UNCLAIMED) aobus-banks:1959 > pin 12 (GPIOE_0): (MUX UNCLAIMED) (GPIO UNCLAIMED) > pin 13 (GPIOE_1): ff802000.pwm (GPIO UNCLAIMED) function pwm_ao_d > group pwm_ao_d_e > pin 14 (GPIOE_2): ffd1b000.pwm (GPIO UNCLAIMED) function pwm_a_e group pwm_a_e > > $ sudo cat /sys/kernel/debug/pwm > platform/ffd1b000.pwm, 2 PWM devices > pwm-0 (regulator-vddcpu-a ): requested enabled period: 1250 ns > duty: 838 ns polarity: normal > pwm-1 ((null) ): period: 0 ns duty: 0 ns polarity: normal > > platform/ff807000.pwm, 2 PWM devices > pwm-0 (pwm-fan ): requested period: 1250 ns duty: 0 ns > polarity: normal > pwm-1 ((null) ): period: 0 ns duty: 0 ns polarity: normal This should be on the pwm-1, hence the "pwm_AO_cd" name, "c" and "d" and the names of the outputs. So you need to use 1 as first PWM phandle argument instead of 0. > > platform/ff802000.pwm, 2 PWM devices > pwm-0 ((null) ): period: 0 ns duty: 0 ns polarity: normal > pwm-1 (regulator-vddcpu-b ): requested enabled period: 1250 ns > duty: 1213 ns polarity: normal > > I could observe a change in duty when we have stress testing the CPU. Can you share the complete change you did here ? > > Thanks > > -Anand Neil
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi index 45947c1031c4..10a09fe362fa 100644 --- a/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi +++ b/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi @@ -1982,7 +1982,6 @@ pwm_ao_d_10_pins: pwm-ao-d-10 { mux { groups = "pwm_ao_d_10"; function = "pwm_ao_d"; - bias-disable; }; }; diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi index fd3fa82e4c33..667d2b774924 100644 --- a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi +++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi @@ -39,6 +39,14 @@ emmc_pwrseq: emmc-pwrseq { reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>; }; + fan: gpio-fan { + compatible = "gpio-fan"; + gpios = <&gpio_ao GPIOAO_10 GPIO_ACTIVE_HIGH>; + /* Using Dummy Speed */ + gpio-fan,speed-map = <0 0>, <1 1>; + #cooling-cells = <2>; + }; + leds { compatible = "gpio-leds"; @@ -410,6 +418,40 @@ &cpu103 { clock-latency = <50000>; }; +&cpu_thermal { + trips { + cpu_active: cpu-active { + temperature = <60000>; /* millicelsius */ + hysteresis = <2000>; /* millicelsius */ + type = "active"; + }; + }; + + cooling-maps { + map { + trip = <&cpu_active>; + cooling-device = <&fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; +}; + +&ddr_thermal { + trips { + ddr_active: ddr-active { + temperature = <60000>; /* millicelsius */ + hysteresis = <2000>; /* millicelsius */ + type = "active"; + }; + }; + + cooling-maps { + map { + trip = <&ddr_active>; + cooling-device = <&fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + }; + }; +}; + &ext_mdio { external_phy: ethernet-phy@0 { /* Realtek RTL8211F (0x001cc916) */
Odroid N2/N2+ support active cooling via gpio-fan controller. Add fan controls and tip point for cpu and ddr thermal sensor on this boards. Drop bias-disable from set pwm_ao_d_10 the pin as to allow transition from say pull-up to pull-down for on/off of the fan. Signed-off-by: Anand Moon <linux.amoon@gmail.com> --- v2: changes tip name cpu-active --> ddr-active v3: drop bias-disable for pwm_ao_d_10 pine. --- .../boot/dts/amlogic/meson-g12-common.dtsi | 1 - .../dts/amlogic/meson-g12b-odroid-n2.dtsi | 42 +++++++++++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-) base-commit: 4da34b7d175dc99b8befebd69e96546c960d526c