diff options
author | Mulin Chao <mlchao@nuvoton.com> | 2017-04-10 13:31:29 +0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2017-04-18 23:33:20 -0700 |
commit | 2a6d939e10b2449a16d627821ce6568ce05c1573 (patch) | |
tree | fadb0ec53d3a0ab165d1d68deeba96cadb4f7d1d /board/npcx_evb | |
parent | 9b710e13cd2ef714ef656eb94383666f337f211e (diff) | |
download | chrome-ec-2a6d939e10b2449a16d627821ce6568ce05c1573.tar.gz |
npcx: gpio: Change second tachometer source from TB2 to TA2.
In npcx's fan driver, ec selected mode 5 and capturer A as tachometer's
input. Choosing TB2 as the second tachometer source is not correct since
we didn't initialize the registers for TB2. This patch modified the
second tachometer's input from TB2 to TA2 and passed the verification by
following changes.
1. Add the second fan settings in pwm_channels, fans, and mft_channels
arraies.
2. Modified ALTERNATE marco for pwm-type fans.
3. Set CONFIG_FAN from 1 to 2.
4. Set NPCX_TACH_SEL2 to 1 to test tachometer input 2. (ie.GPIO73/A6)
BRANCH=none
BUG=none
TEST=test dual fans with fanset command on npcx_evb and use faninfo for
verifying. Measure the actual rpm by scope.
Change-Id: Ia1af2732d9a64e24285d12371223eb0e77e53357
Signed-off-by: Mulin Chao <mlchao@nuvoton.com>
Reviewed-on: https://chromium-review.googlesource.com/472310
Reviewed-by: Randall Spangler <rspangler@chromium.org>
Diffstat (limited to 'board/npcx_evb')
-rw-r--r-- | board/npcx_evb/board.c | 17 | ||||
-rw-r--r-- | board/npcx_evb/board.h | 11 | ||||
-rw-r--r-- | board/npcx_evb/gpio.inc | 18 |
3 files changed, 40 insertions, 6 deletions
diff --git a/board/npcx_evb/board.c b/board/npcx_evb/board.c index 570d615d01..cca0692a85 100644 --- a/board/npcx_evb/board.c +++ b/board/npcx_evb/board.c @@ -46,6 +46,9 @@ BUILD_ASSERT(ARRAY_SIZE(adc_channels) == ADC_CH_COUNT); /* PWM channels. Must be in the exactly same order as in enum pwm_channel. */ const struct pwm_t pwm_channels[] = { [PWM_CH_FAN] = { 0, PWM_CONFIG_OPEN_DRAIN, 25000}, +#if (CONFIG_FANS == 2) + [PWM_CH_FAN2] = { 2, 0, 25000 }, +#endif [PWM_CH_KBLIGHT] = { 1, 0, 10000 }, }; BUILD_ASSERT(ARRAY_SIZE(pwm_channels) == PWM_CH_COUNT); @@ -62,6 +65,17 @@ const struct fan_t fans[] = { .pgood_gpio = GPIO_PGOOD_FAN, .enable_gpio = -1, }, +#if (CONFIG_FANS == 2) + [FAN_CH_1] = { + .flags = FAN_USE_RPM_MODE, + .rpm_min = 1000, + .rpm_start = 1000, + .rpm_max = 4300, + .ch = 1,/* Use MFT id to control fan */ + .pgood_gpio = -1, + .enable_gpio = -1, + }, +#endif }; BUILD_ASSERT(ARRAY_SIZE(fans) == FAN_CH_COUNT); @@ -69,6 +83,9 @@ BUILD_ASSERT(ARRAY_SIZE(fans) == FAN_CH_COUNT); /* MFT channels. These are logically separate from mft_channels. */ const struct mft_t mft_channels[] = { [MFT_CH_0] = { NPCX_MFT_MODULE_1, TCKC_LFCLK, PWM_CH_FAN}, +#if (CONFIG_FANS == 2) + [MFT_CH_1] = { NPCX_MFT_MODULE_2, TCKC_LFCLK, PWM_CH_FAN2}, +#endif }; BUILD_ASSERT(ARRAY_SIZE(mft_channels) == MFT_CH_COUNT); diff --git a/board/npcx_evb/board.h b/board/npcx_evb/board.h index 265a5544e3..4ca106bf8c 100644 --- a/board/npcx_evb/board.h +++ b/board/npcx_evb/board.h @@ -45,7 +45,7 @@ /* Optional feature - used by nuvoton */ #define NPCX_UART_MODULE2 0 /* 0:GPIO10/11 1:GPIO64/65 as UART */ #define NPCX_JTAG_MODULE2 0 /* 0:GPIO21/17/16/20 1:GPIOD5/E2/D4/E5 as JTAG*/ -#define NPCX_TACH_SEL2 0 /* 0:GPIO40/A4 1:GPIO93/D3 as TACH */ +#define NPCX_TACH_SEL2 0 /* 0:GPIO40/73 1:GPIO93/A6 as TACH */ /* Optional for testing */ #undef CONFIG_PSTORE @@ -66,6 +66,9 @@ enum adc_channel { enum pwm_channel { PWM_CH_FAN, +#if (CONFIG_FANS == 2) + PWM_CH_FAN2, +#endif PWM_CH_KBLIGHT, /* Number of PWM channels */ PWM_CH_COUNT @@ -73,12 +76,18 @@ enum pwm_channel { enum fan_channel { FAN_CH_0, +#if (CONFIG_FANS == 2) + FAN_CH_1, +#endif /* Number of FAN channels */ FAN_CH_COUNT }; enum mft_channel { MFT_CH_0, +#if (CONFIG_FANS == 2) + MFT_CH_1, +#endif /* Number of MFT channels */ MFT_CH_COUNT }; diff --git a/board/npcx_evb/gpio.inc b/board/npcx_evb/gpio.inc index 25454bd7fb..9259b7bb5f 100644 --- a/board/npcx_evb/gpio.inc +++ b/board/npcx_evb/gpio.inc @@ -73,13 +73,21 @@ ALTERNATE(PIN_MASK(9, 0x20), 1, MODULE_SPI, 0) /* SPIP_MISO ALTERNATE(PIN_MASK(C, 0x04), 1, MODULE_PWM, 0) /* PWM1 for PWM/KBLIGHT Test GPIOC2 */ /* Alternative functionality for FANS */ #ifdef CONFIG_FANS -ALTERNATE(PIN_MASK(C, 0x08), 1, MODULE_PWM, 0) /* PWM0 for PWM/FAN Test GPIOC3 */ +ALTERNATE(PIN_MASK(C, 0x08), 1, MODULE_PWM, 0) /* PWM0 for PWM/FAN Test GPIOC3 */ #if NPCX_TACH_SEL2 -ALTERNATE(PIN_MASK(9, 0x08), 1, MODULE_PWM, 0) /* MFT-1/TA1_TACH1 for FAN GPIO93 */ +ALTERNATE(PIN_MASK(9, 0x08), 1, MODULE_PWM, 0) /* TA1_SL2 GPIO93 for tachometer input */ #else -ALTERNATE(PIN_MASK(4, 0x01), 1, MODULE_PWM, 0) /* MFT-1/TA1_TACH1 for FAN Test GPIO40 */ -#endif -#endif +ALTERNATE(PIN_MASK(4, 0x01), 1, MODULE_PWM, 0) /* TA1_SL1 GPIO40 for tachometer input */ +#endif /* NPCX_TACH_SEL2 */ +#if (CONFIG_FANS == 2) +ALTERNATE(PIN_MASK(C, 0x10), 1, MODULE_PWM, 0) /* PWM2 for PWM/FAN Test GPIOC4 */ +#if NPCX_TACH_SEL2 +ALTERNATE(PIN_MASK(A, 0x40), 1, MODULE_PWM, 0) /* TA2_SL2 GPIOA6 for tachometer input */ +#else +ALTERNATE(PIN_MASK(7, 0x08), 1, MODULE_PWM, 0) /* TA2_SL1 GPIO73 for tachometer input */ +#endif /* NPCX_TACH_SEL2 */ +#endif /* (CONFIG_FANS == 2) */ +#endif /* CONFIG_FANS */ /* Keyboard Columns */ ALTERNATE(PIN_MASK(0, 0xE0), 0, MODULE_KEYBOARD_SCAN, 0) |