summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormartin yan <martin.yan@microchip.corp-partner.google.com>2021-08-17 14:52:47 -0400
committerCommit Bot <commit-bot@chromium.org>2021-08-20 01:10:44 +0000
commitf50a100dc917dcfd6674774d071493f1587500c2 (patch)
tree0c09e8361ffa94770059476bf33e81ad3195632e
parenta269059c192811be0ec56120398ad31917c7a18a (diff)
downloadchrome-ec-f50a100dc917dcfd6674774d071493f1587500c2.tar.gz
mchp: Support RPM-PWM Fan control
Support RPM based Fan Control Algorithm via RPM-PWM hardware block BUG=none BRANCH=none TEST=Tested on ADL RVP and MCHP1727 MECC system via UART console faninfo, fanduty and fanset 1: Verify fan RPM from 3000 to 9000; 2: Verify 2-pole fan expected tach output (100Hz~300Hz) per RPM setting; 3: Verify expected PWM duty (3%~100%) per PWM duty setting; 4: Limit: can not reach 10000 RPM since RPM reaches 9000 in max as PWM duty is set as 100%; Signed-off-by: martin yan <martin.yan@microchip.corp-partner.google.com> Change-Id: Ib41a06a734821c9f70a45e25e2020c6492c61563 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3100926 Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
-rw-r--r--baseboard/intelrvp/mchp_ec.c6
-rw-r--r--board/adlrvpp_mchp1727/gpio.inc13
2 files changed, 15 insertions, 4 deletions
diff --git a/baseboard/intelrvp/mchp_ec.c b/baseboard/intelrvp/mchp_ec.c
index 2d6c203ef2..f1eb4678c1 100644
--- a/baseboard/intelrvp/mchp_ec.c
+++ b/baseboard/intelrvp/mchp_ec.c
@@ -77,7 +77,11 @@ BUILD_ASSERT(ARRAY_SIZE(adc_channels) == ADC_CH_COUNT);
/* PWM channels */
const struct pwm_t pwm_channels[] = {
[PWM_CH_FAN] = {
- .channel = 4,
+#ifdef CHIP_FAMILY_MEC172X
+ .channel = PWM_HW_CH_0,
+#else
+ .channel = PWM_HW_CH_4,
+#endif
.flags = PWM_CONFIG_HAS_RPM_MODE,
},
};
diff --git a/board/adlrvpp_mchp1727/gpio.inc b/board/adlrvpp_mchp1727/gpio.inc
index 47231e0a4d..1eea86462c 100644
--- a/board/adlrvpp_mchp1727/gpio.inc
+++ b/board/adlrvpp_mchp1727/gpio.inc
@@ -185,9 +185,16 @@ ALTERNATE(PIN_MASK(3, 0x00003001), 1, MODULE_I2C, GPIO_ODR_HIGH)
*/
ALTERNATE(PIN_MASK(4, 0x0039), 1, MODULE_ADC, GPIO_ANALOG)
-/* Alternate pins for FAN */
-/* mchp_todo: GPIO053/GPWM0 for RPM-FAN */
-/* mchp_todo: GPIO050/GTACH0 for RPM-FAN */
+/*
+ * Alternate pins for RPM-FAN control
+ *
+ * GPIO050/GTACH0 = CPU_TACHO_FAN
+ * GPIO053/GPWM0 = CPU_PWM_FAN
+ * GTACH0 = GPIO_050(Bank=1, bit=8) Func2
+ * GPWM0 = GPIO_053(Bank=1, bit=11) Func3
+ */
+ALTERNATE(PIN_MASK(1, 0x0100), 2, MODULE_PWM, GPIO_FLAG_NONE)
+ALTERNATE(PIN_MASK(1, 0x0800), 3, MODULE_PWM, GPIO_FLAG_NONE)
/* Keyboard pins */
#define GPIO_KB_INPUT (GPIO_INPUT | GPIO_PULL_UP)