[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 3/4] hw/arm: Connect PWM fans in NPCM7XX boards
From: |
Peter Maydell |
Subject: |
Re: [PATCH 3/4] hw/arm: Connect PWM fans in NPCM7XX boards |
Date: |
Thu, 11 Mar 2021 12:08:43 +0000 |
On Fri, 5 Mar 2021 at 18:40, Hao Wu <wuhaotsh@google.com> wrote:
>
> This patch adds fan_splitters (split IRQs) in NPCM7XX boards. Each fan
> splitter corresponds to 1 PWM output and can connect to multiple fan
> inputs (MFT devices).
> In NPCM7XX boards(NPCM750 EVB and Quanta GSJ boards), we initializes
> these splitters and connect them to their corresponding modules
> according their specific device trees.
>
> Reviewed-by: Doug Evans <dje@google.com>
> Reviewed-by: Tyrone Ting <kfting@nuvoton.com>
> Signed-off-by: Hao Wu <wuhaotsh@google.com>
> ---
> hw/arm/npcm7xx_boards.c | 99 ++++++++++++++++++++++++++++++++++++++++
> include/hw/arm/npcm7xx.h | 11 ++++-
> 2 files changed, 109 insertions(+), 1 deletion(-)
>
> diff --git a/hw/arm/npcm7xx_boards.c b/hw/arm/npcm7xx_boards.c
> index fbf6ce8e02..e22fe4bf8f 100644
> --- a/hw/arm/npcm7xx_boards.c
> +++ b/hw/arm/npcm7xx_boards.c
> @@ -21,6 +21,7 @@
> #include "hw/core/cpu.h"
> #include "hw/i2c/smbus_eeprom.h"
> #include "hw/loader.h"
> +#include "hw/qdev-core.h"
> #include "hw/qdev-properties.h"
> #include "qapi/error.h"
> #include "qemu-common.h"
> @@ -116,6 +117,64 @@ static void at24c_eeprom_init(NPCM7xxState *soc, int
> bus, uint8_t addr,
> i2c_slave_realize_and_unref(i2c_dev, i2c_bus, &error_abort);
> }
>
> +static void npcm7xx_init_pwm_splitter(NPCM7xxMachine *machine,
> + NPCM7xxState *soc, const int
> *fan_counts)
> +{
> + SplitIRQ *splitters = machine->fan_splitter;
> +
> + /*
> + * PWM 0~3 belong to module 0 output 0~3.
> + * PWM 4~7 belong to module 1 output 0~3.
> + */
> + for (int i = 0; i < NPCM7XX_NR_PWM_MODULES; ++i) {
> + for (int j = 0; j < NPCM7XX_PWM_PER_MODULE; ++j) {
> + int splitter_no = i * NPCM7XX_PWM_PER_MODULE + j;
> + DeviceState *splitter;
> +
> + if (fan_counts[splitter_no] < 1) {
> + continue;
> + }
> + object_initialize_child(OBJECT(machine), "fan-splitter[*]",
> + &splitters[splitter_no], TYPE_SPLIT_IRQ);
> + splitter = DEVICE(&splitters[splitter_no]);
> + qdev_prop_set_uint16(splitter, "num-lines",
> + fan_counts[splitter_no]);
> + qdev_realize(splitter, NULL, &error_abort);
> + qdev_connect_gpio_out_named(DEVICE(&soc->pwm[i]),
> "duty-gpio-out",
> + j, qdev_get_gpio_in(splitter, 0));
This will rather pointlessly create a splitter with a single input
if fan_counts[n] is 1, but conveniently you never actually do
that, so it's not a big deal.
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
thanks
-- PMM
- [PATCH 0/4] hw/misc: Add NPCM7XX Tachometer Device, Hao Wu, 2021/03/05
- [PATCH 1/4] hw/misc: Add GPIOs for duty in NPCM7xx PWM, Hao Wu, 2021/03/05
- [PATCH 3/4] hw/arm: Connect PWM fans in NPCM7XX boards, Hao Wu, 2021/03/05
- Re: [PATCH 3/4] hw/arm: Connect PWM fans in NPCM7XX boards,
Peter Maydell <=
- [PATCH 2/4] hw/misc: Add NPCM7XX MFT Module, Hao Wu, 2021/03/05
- [PATCH 4/4] tests/qtest: Test PWM fan RPM using MFT in PWM test, Hao Wu, 2021/03/05
- Re: [PATCH 0/4] hw/misc: Add NPCM7XX Tachometer Device, no-reply, 2021/03/05