[AST2600] PWM/TACH driver and dbus-sensor issue

Tung Nguyen OS tungnguyen at os.amperecomputing.com
Wed Feb 16 18:07:00 AEDT 2022


Hi Billy,
I don't have the device to capture the waveform here, i will need our HW team's help. Meanwhile, debugging in the tach-aspeed-ast2600.c i have observed that:
+ In the case that can read the fan speed, the debug messages output like:
# cat /sys/class/hwmon/hwmon1/pwm1
120
# echo 110 > /sys/class/hwmon/hwmon1/pwm1
# cat /sys/class/hwmon/hwmon0/fan1_input
837053
[  325.499388] clk 200000000, raw_data 7 , tach_div 14336
[  326.070305] clk 200000000, raw_data 7 , tach_div 14336
[  326.641221] clk 200000000, raw_data 7 , tach_div 14336
[  327.212095] clk 200000000, raw_data 7 , tach_div 14336
[  327.783012] clk 200000000, raw_data 7 , tach_div 14336

+ In the issue case, i can see the code is timeout at regmap_read_poll_timeout (below)
150 static int aspeed_get_fan_tach_ch_rpm(struct aspeed_tach_data *priv,
151                                       u8 fan_tach_ch)
152 {
153         u32 raw_data, tach_div, clk_source, usec, val;
154         u64 rpm;
155         int ret;
156
157         usec = priv->tacho_channel[fan_tach_ch].sample_period;
158         /* Restart the Tach channel to guarantee the value is fresh */
159         regmap_update_bits(priv->regmap, ASPEED_TACHO_CTRL_CH(fan_tach_ch),
160                              TACHO_ENABLE, 0);
161         regmap_update_bits(priv->regmap, ASPEED_TACHO_CTRL_CH(fan_tach_ch),
162                              TACHO_ENABLE, TACHO_ENABLE);
163         ret = regmap_read_poll_timeout(
164                 priv->regmap, ASPEED_TACHO_STS_CH(fan_tach_ch), val,
165                 (val & TACHO_FULL_MEASUREMENT) && (val & TACHO_VALUE_UPDATE),
166                 RPM_POLLING_PERIOD_US, usec);
167
168         if (ret) {
169                 /* return 0 if we didn't get an answer because of timeout*/
170                 if (ret == -ETIMEDOUT)
171                         return 0; ==> TIMEOUT HERE
172                 else
173                         return ret;
174         }
175
176         raw_data = val & TACHO_VALUE_MASK;

Do you have comments on what should be checked here ?

________________________________________
From: Billy Tsai <billy_tsai at aspeedtech.com>
Sent: Tuesday, February 15, 2022 5:33 PM
To: Tung Nguyen OS; Troy Lee; openbmc at lists.ozlabs.org
Cc: Thu Nguyen OS; Thang Nguyen OS; Phong Vo OS
Subject: Re: [AST2600] PWM/TACH driver and dbus-sensor issue

Hi Tung,

The register setting looks fine.
Can you check the connection of the FAN tach pin and BMC tach input pin?
If it is normal, can you check the FAN tach output waveform?

I test with San Ace 80 and get the result below:

root at ast2600-default:~# cat /sys/class/hwmon/hwmon1/fan1_input
3570
root at ast2600-default:~# echo 100 > /sys/class/hwmon/hwmon4/pwm1
root at ast2600-default:~# cat /sys/class/hwmon/hwmon1/fan1_input
3568
root at ast2600-default:~# echo 120 > /sys/class/hwmon/hwmon4/pwm1
root at ast2600-default:~# cat /sys/class/hwmon/hwmon1/fan1_input
4032
root at ast2600-default:~# echo 140 > /sys/class/hwmon/hwmon4/pwm1
root at ast2600-default:~# cat /sys/class/hwmon/hwmon1/fan1_input
4422
root at ast2600-default:~# echo 255 > /sys/class/hwmon/hwmon4/pwm1
root at ast2600-default:~# cat /sys/class/hwmon/hwmon1/fan1_input
6293


Thanks

Best Regards,
Billy Tsai

From: Tung Nguyen OS <tungnguyen at os.amperecomputing.com>
Date: Tuesday, February 15, 2022 at 6:10 PM
To: Billy Tsai <billy_tsai at aspeedtech.com>, Troy Lee <troy_lee at aspeedtech.com>, "openbmc at lists.ozlabs.org" <openbmc at lists.ozlabs.org>
Cc: Thu Nguyen OS <thu at os.amperecomputing.com>, Thang Nguyen OS <thang at os.amperecomputing.com>, Phong Vo OS <phong at os.amperecomputing.com>
Subject: Re: [AST2600] PWM/TACH driver and dbus-sensor issue

Hi Billy,

Please help check:
root at sunmoonlake:/tmp# ./test.sh 100
echo 100 > /sys/class/hwmon/hwmon1/pwm1
cat /sys/class/hwmon/hwmon0/fan1_input
0
devmem 0x1e610000
0x0001101E
devmem 0x1e610004
0xFF006500
devmem 0x1e610008
0x10500000
devmem 0x1e61000c
0xA5400000
root at sunmoonlake:/tmp# ./test.sh 120
echo 120 > /sys/class/hwmon/hwmon1/pwm1
cat /sys/class/hwmon/hwmon0/fan1_input
266335
devmem 0x1e610000
0x0001101E
devmem 0x1e610004
0xFF007900
devmem 0x1e610008
0x10500000
devmem 0x1e61000c
0xF4B00016
root at sunmoonlake:/tmp# ./test.sh 140
echo 140 > /sys/class/hwmon/hwmon1/pwm1
cat /sys/class/hwmon/hwmon0/fan1_input
837053
devmem 0x1e610000
0x0001101E
devmem 0x1e610004
0xFF008D00
devmem 0x1e610008
0x10500000
devmem 0x1e61000c
0xE4B00007
root at sunmoonlake:/tmp# ./test.sh 255
echo 255 > /sys/class/hwmon/hwmon1/pwm1
cat /sys/class/hwmon/hwmon0/fan1_input
0
devmem 0x1e610000
0x0001101E
devmem 0x1e610004
0xFF000000
devmem 0x1e610008
0x10500000
devmem 0x1e61000c
0xB5C00000
root at sunmoonlake:/tmp#

Please note that i'm using the fan settings as:

        fan0: pwm-fan0 {
                compatible = "pwm-fan";
                pwms = <&pwm 0 40000 0>;        /* Target freq:25 kHz */
                cooling-min-state = <0>;
                cooling-max-state = <3>;
                #cooling-cells = <2>;
                cooling-levels = <0 25 128 255>;
        };
.....
        fan at 0 {
                reg = <0x00>;
                aspeed,pulse-pr = <2>;
        };


________________________________________
From: Billy Tsai <billy_tsai at aspeedtech.com<mailto:billy_tsai at aspeedtech.com>>
Sent: Monday, February 14, 2022 1:34 PM
To: Tung Nguyen OS; Troy Lee; openbmc at lists.ozlabs.org<mailto:openbmc at lists.ozlabs.org>
Cc: Thu Nguyen OS; Thang Nguyen OS; Phong Vo OS
Subject: Re: [AST2600] PWM/TACH driver and dbus-sensor issue

Hi Tung,

Can you check the PWM frequency and dump the register value 0x1e610000~0x1e61000c?

Thanks

Best Regards,
Billy Tsai

From: Tung Nguyen OS <tungnguyen at os.amperecomputing.com<mailto:tungnguyen at os.amperecomputing.com>>
Date: Monday, February 14, 2022 at 12:24 PM
To: Troy Lee <troy_lee at aspeedtech.com<mailto:troy_lee at aspeedtech.com>>, "openbmc at lists.ozlabs.org<mailto:openbmc at lists.ozlabs.org>" <openbmc at lists.ozlabs.org<mailto:openbmc at lists.ozlabs.org>>
Cc: Thu Nguyen OS <thu at os.amperecomputing.com<mailto:thu at os.amperecomputing.com>>, Thang Nguyen OS <thang at os.amperecomputing.com<mailto:thang at os.amperecomputing.com>>, Phong Vo OS <phong at os.amperecomputing.com<mailto:phong at os.amperecomputing.com>>, Billy Tsai <billy_tsai at aspeedtech.com<mailto:billy_tsai at aspeedtech.com>>
Subject: Re: [AST2600] PWM/TACH driver and dbus-sensor issue

Hi Troy,
the fan settings in device tree are similar to aspeed-ast2600a1-evb.dts, like:

        fan0: pwm-fan0 {
                compatible = "pwm-fan";
                pwms = <&pwm 0 40000 0>;        /* Target freq:25 kHz */
                cooling-min-state = <0>;
                cooling-max-state = <3>;
                #cooling-cells = <2>;
                cooling-levels = <0 25 128 255>;
        };
.....
        fan at 0 {
                reg = <0x00>;
                aspeed,pulse-pr = <2>;
        };

I test with co-fan F-5010HH12B and San Ace 92 with above setting, and the result looks like in-correct as in previous email.

________________________________________
From: Troy Lee <troy_lee at aspeedtech.com<mailto:troy_lee at aspeedtech.com><mailto:troy_lee at aspeedtech.com<mailto:troy_lee at aspeedtech.com>>>
Sent: Monday, February 14, 2022 11:02 AM
To: Tung Nguyen OS; openbmc at lists.ozlabs.org<mailto:openbmc at lists.ozlabs.org><mailto:openbmc at lists.ozlabs.org<mailto:openbmc at lists.ozlabs.org>>
Cc: Thu Nguyen OS; Thang Nguyen OS; Phong Vo OS; Billy Tsai
Subject: RE: [AST2600] PWM/TACH driver and dbus-sensor issue

Adding Billy.

Hi Tung,

-----Original Message-----
From: Tung Nguyen OS <tungnguyen at os.amperecomputing.com<mailto:tungnguyen at os.amperecomputing.com><mailto:tungnguyen at os.amperecomputing.com<mailto:tungnguyen at os.amperecomputing.com>>>
Sent: Monday, February 14, 2022 11:46 AM
To: Troy Lee <troy_lee at aspeedtech.com<mailto:troy_lee at aspeedtech.com><mailto:troy_lee at aspeedtech.com<mailto:troy_lee at aspeedtech.com>>>; openbmc at lists.ozlabs.org<mailto:openbmc at lists.ozlabs.org><mailto:openbmc at lists.ozlabs.org<mailto:openbmc at lists.ozlabs.org>>
Cc: Thu Nguyen OS <thu at os.amperecomputing.com<mailto:thu at os.amperecomputing.com><mailto:thu at os.amperecomputing.com<mailto:thu at os.amperecomputing.com>>>; Thang Nguyen OS
<thang at os.amperecomputing.com<mailto:thang at os.amperecomputing.com><mailto:thang at os.amperecomputing.com<mailto:thang at os.amperecomputing.com>>>; Phong Vo OS
<phong at os.amperecomputing.com<mailto:phong at os.amperecomputing.com><mailto:phong at os.amperecomputing.com<mailto:phong at os.amperecomputing.com>>>
Subject: Re: [AST2600] PWM/TACH driver and dbus-sensor issue

Hi Troy,
Thank you for the information, i have merged the dbus-sensor patch and see
it creates the Fan sensors well.
One more issue i have observed about the fan tach report like this:

root at mtmitchell:~# echo 120 > /sys/class/hwmon/hwmon1/pwm1
root at mtmitchell:~# cat /sys/class/hwmon/hwmon0/fan1_input
418526
root at mtmitchell:~# echo 100 > /sys/class/hwmon/hwmon1/pwm1
root at mtmitchell:~# cat /sys/class/hwmon/hwmon0/fan1_input
195312
root at mtmitchell:~# echo 255 > /sys/class/hwmon/hwmon1/pwm1
root at mtmitchell:~# cat /sys/class/hwmon/hwmon0/fan1_input
0
root at mtmitchell:~# echo 50 > /sys/class/hwmon/hwmon1/pwm1
root at mtmitchell:~# cat /sys/class/hwmon/hwmon0/fan1_input
0

It means the fan speed is reported incorrectly somehow, but i can see the
fan speed changes by eyes, do you have idea on this issue ?

Does the aspeed,pulse-pr property of fan node set correspondingly?
What is the expected RPM of you fan? 418526 RPM?

Thanks,
Troy Lee


________________________________________
From: Troy Lee <troy_lee at aspeedtech.com<mailto:troy_lee at aspeedtech.com><mailto:troy_lee at aspeedtech.com<mailto:troy_lee at aspeedtech.com>>>
Sent: Friday, February 11, 2022 12:13 PM
To: Tung Nguyen OS; openbmc at lists.ozlabs.org<mailto:openbmc at lists.ozlabs.org><mailto:openbmc at lists.ozlabs.org<mailto:openbmc at lists.ozlabs.org>>
Cc: Thu Nguyen OS; Thang Nguyen OS; Phong Vo OS
Subject: RE: [AST2600] PWM/TACH driver and dbus-sensor issue

Hi Tung,

-----Original Message-----
From: openbmc <openbmc-
bounces+troy_lee=aspeedtech.com at lists.ozlabs.org<mailto:aspeedtech.com at lists.ozlabs.org><mailto:aspeedtech.com at lists.ozlabs.org<mailto:aspeedtech.com at lists.ozlabs.org>>> On Behalf Of Tung
Nguyen OS
Sent: Wednesday, February 9, 2022 10:40 PM
To: openbmc at lists.ozlabs.org<mailto:openbmc at lists.ozlabs.org><mailto:openbmc at lists.ozlabs.org<mailto:openbmc at lists.ozlabs.org>>
Cc: Thu Nguyen OS <thu at os.amperecomputing.com<mailto:thu at os.amperecomputing.com><mailto:thu at os.amperecomputing.com<mailto:thu at os.amperecomputing.com>>>; Thang Nguyen OS
<thang at os.amperecomputing.com<mailto:thang at os.amperecomputing.com><mailto:thang at os.amperecomputing.com<mailto:thang at os.amperecomputing.com>>>; Phong Vo OS
<phong at os.amperecomputing.com<mailto:phong at os.amperecomputing.com><mailto:phong at os.amperecomputing.com<mailto:phong at os.amperecomputing.com>>>
Subject: [AST2600] PWM/TACH driver and dbus-sensor issue

Dear community,
We have ported the PWM/TACH hwmon driver for AST2600 from ASPEED's
repository https://github.com/AspeedTech-BMC/linux/tree/aspeed-
master-
v5.4/drivers/hwmon to support Ampere Computing's systems. Verify with
AST2600 EVB, i can see the driver works. However there is a concern like:
1. The change of hwmon fan pwm/tach in sysfs (as below), this is
different from the ast2500 as the separated of the fan*_input and pwm1
in various hwmon directories. At this time, the driver doesn't exist
in the OpenBMC linux at https://github.com/openbmc/linux. Is OpenBMC
going to merge and keep this driver ?

Please have a look on this patch.
https://gerrit.openbmc-project.xyz/c/openbmc/dbus-sensors/+/49253

Thanks,
Troy Lee

root at mtmitchell:~# ls -la /sys/class/hwmon/hwmon hwmon0/ hwmon1/
hwmon2/ hwmon3/ hwmon4/ hwmon5/ hwmon6/ hwmon7/ hwmon8/
hwmon9/
root at mtmitchell:~# ls -la /sys/class/hwmon/hwmon0/
drwxr-xr-x    3 root     root             0 Jan  1  1970 .
drwxr-xr-x    3 root     root             0 Jan  1  1970 ..
lrwxrwxrwx    1 root     root             0 Feb  9 08:38 device -
> ../../../1e610000.pwm_tach:tach
-r--r--r--    1 root     root          4096 Feb  9 08:38 fan10_input
-r--r--r--    1 root     root          4096 Feb  9 08:38 fan11_input
-r--r--r--    1 root     root          4096 Feb  9 08:38 fan12_input
-r--r--r--    1 root     root          4096 Feb  9 08:38 fan13_input
-r--r--r--    1 root     root          4096 Feb  9 08:38 fan14_input
-r--r--r--    1 root     root          4096 Feb  9 08:38 fan15_input
-r--r--r--    1 root     root          4096 Feb  9 08:38 fan16_input
-r--r--r--    1 root     root          4096 Feb  9 08:38 fan1_input
-r--r--r--    1 root     root          4096 Feb  9 08:38 fan2_input
-r--r--r--    1 root     root          4096 Feb  9 08:38 fan3_input
-r--r--r--    1 root     root          4096 Feb  9 08:38 fan4_input
-r--r--r--    1 root     root          4096 Feb  9 08:38 fan5_input
-r--r--r--    1 root     root          4096 Feb  9 08:38 fan6_input
-r--r--r--    1 root     root          4096 Feb  9 08:38 fan7_input
-r--r--r--    1 root     root          4096 Feb  9 08:38 fan8_input
-r--r--r--    1 root     root          4096 Feb  9 08:38 fan9_input
-r--r--r--    1 root     root          4096 Feb  9 08:38 name
lrwxrwxrwx    1 root     root             0 Feb  9 08:38 of_node -
> ../../../../../../../../firmware/devicetree/base/ahb/apb/pwm_tach at 1e
> 610
000/tach
drwxr-xr-x    2 root     root             0 Feb  9 08:38 power
lrwxrwxrwx    1 root     root             0 Jan  1  1970 subsystem -
> ../../../../../../../../class/hwmon
-rw-r--r--    1 root     root          4096 Jan  1  1970 uevent
root at mtmitchell:~# ls -la /sys/class/hwmon/hwmon*/pwm*
-rw-r--r--    1 root     root          4096 Feb  9 09:13
/sys/class/hwmon/hwmon1/pwm1
-rw-r--r--    1 root     root          4096 Feb  9 09:20
/sys/class/hwmon/hwmon2/pwm1
-rw-r--r--    1 root     root          4096 Feb  9 08:38
/sys/class/hwmon/hwmon3/pwm1
-rw-r--r--    1 root     root          4096 Feb  9 08:38
/sys/class/hwmon/hwmon4/pwm1
-rw-r--r--    1 root     root          4096 Feb  9 08:38
/sys/class/hwmon/hwmon5/pwm1
-rw-r--r--    1 root     root          4096 Feb  9 08:38
/sys/class/hwmon/hwmon6/pwm1
-rw-r--r--    1 root     root          4096 Feb  9 08:38
/sys/class/hwmon/hwmon7/pwm1
-rw-r--r--    1 root     root          4096 Feb  9 08:38
/sys/class/hwmon/hwmon8/pwm1

2. With above changes, the dbus-sensor for FAN/PWM shall not work
because of the compatibility. So if OpenBMC want to keep above
PWM/TACH driver, does any sides have the plan to support the fan
sensor, if not, we can join and do it.

Thank you and best regards,
Tung




More information about the openbmc mailing list