[PATCH v9 2/4] drivers: hwmon: sophgo: Add SG2042 external hardware monitor support
Inochi Amaoto
inochiama at outlook.com
Sat Aug 10 00:22:42 PDT 2024
On Mon, Aug 05, 2024 at 09:38:03AM GMT, Chen Wang wrote:
>
> On 2024/8/2 20:38, Inochi Amaoto wrote:
> > SG2042 use an external MCU to provide basic hardware information
> > and thermal sensors.
> >
> > Add driver support for the onboard MCU of SG2042.
> >
> > Signed-off-by: Inochi Amaoto <inochiama at outlook.com>
> > Tested-by: Chen Wang <unicorn_wang at outlook.com>
> > Reviewed-by: Chen Wang <unicorn_wang at outlook.com>
> > ---
> > Documentation/hwmon/index.rst | 1 +
> > Documentation/hwmon/sg2042-mcu.rst | 39 +++
> > drivers/hwmon/Kconfig | 11 +
> > drivers/hwmon/Makefile | 1 +
> > drivers/hwmon/sg2042-mcu.c | 394 +++++++++++++++++++++++++++++
> > 5 files changed, 446 insertions(+)
> > create mode 100644 Documentation/hwmon/sg2042-mcu.rst
> > create mode 100644 drivers/hwmon/sg2042-mcu.c
> >
> > diff --git a/Documentation/hwmon/index.rst b/Documentation/hwmon/index.rst
> > index 913c11390a45..ea3b5be8fe4f 100644
> > --- a/Documentation/hwmon/index.rst
> > +++ b/Documentation/hwmon/index.rst
> > @@ -206,6 +206,7 @@ Hardware Monitoring Kernel Drivers
> > sch5636
> > scpi-hwmon
> > sfctemp
> > + sg2042-mcu
> > sht15
> > sht21
> > sht3x
> > diff --git a/Documentation/hwmon/sg2042-mcu.rst b/Documentation/hwmon/sg2042-mcu.rst
> > new file mode 100644
> > index 000000000000..250016b47dd1
> > --- /dev/null
> > +++ b/Documentation/hwmon/sg2042-mcu.rst
> > @@ -0,0 +1,39 @@
> > +.. SPDX-License-Identifier: GPL-2.0
> > +
> > +Kernel driver sg2042-mcu
> > +=====================
> > +
> > +Supported chips:
> > +
> > + * Onboard MCU for sg2042
> > +
> > + Addresses scanned: -
> > +
> > + Prefix: 'sg2042-mcu'
> > +
> > +Authors:
> > +
> > + - Inochi Amaoto <inochiama at outlook.com>
> > +
> > +Description
> > +-----------
> > +
> > +This driver supprts hardware monitoring for onboard MCU with
> > +i2c interface.
> > +
> > +Usage Notes
> > +-----------
> > +
> > +This driver does not auto-detect devices. You will have to instantiate
> > +the devices explicitly.
> > +Please see Documentation/i2c/instantiating-devices.rst for details.
> > +
> > +Sysfs Attributes
> > +----------------
> > +
> > +================= =============================================
> > +temp1_input Measured temperature of SoC
> > +temp1_crit Critical high temperature
> > +temp1_crit_hyst hysteresis temperature restore from Critical
> > +temp2_input Measured temperature of the base board
> > +================= =============================================
> > diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
> > index b60fe2e58ad6..7aa6c3f322e5 100644
> > --- a/drivers/hwmon/Kconfig
> > +++ b/drivers/hwmon/Kconfig
> > @@ -2066,6 +2066,17 @@ config SENSORS_SFCTEMP
> > This driver can also be built as a module. If so, the module
> > will be called sfctemp.
> > +config SENSORS_SG2042_MCU
> > + tristate "Sophgo onboard MCU support"
> > + depends on I2C
> > + depends on ARCH_SOPHGO || COMPILE_TEST
> > + help
> > + Support for onboard MCU of Sophgo SG2042 SoCs. This mcu provides
> > + power control and some basic information.
> > +
> > + This driver can be built as a module. If so, the module
> > + will be called sg2042-mcu.
> > +
> > config SENSORS_SURFACE_FAN
> > tristate "Surface Fan Driver"
> > depends on SURFACE_AGGREGATOR
> > diff --git a/drivers/hwmon/Makefile b/drivers/hwmon/Makefile
> > index b1c7056c37db..0bbe812a67ae 100644
> > --- a/drivers/hwmon/Makefile
> > +++ b/drivers/hwmon/Makefile
> > @@ -194,6 +194,7 @@ obj-$(CONFIG_SENSORS_SCH56XX_COMMON)+= sch56xx-common.o
> > obj-$(CONFIG_SENSORS_SCH5627) += sch5627.o
> > obj-$(CONFIG_SENSORS_SCH5636) += sch5636.o
> > obj-$(CONFIG_SENSORS_SFCTEMP) += sfctemp.o
> > +obj-$(CONFIG_SENSORS_SG2042_MCU) += sg2042-mcu.o
> > obj-$(CONFIG_SENSORS_SL28CPLD) += sl28cpld-hwmon.o
> > obj-$(CONFIG_SENSORS_SHT15) += sht15.o
> > obj-$(CONFIG_SENSORS_SHT21) += sht21.o
> > diff --git a/drivers/hwmon/sg2042-mcu.c b/drivers/hwmon/sg2042-mcu.c
> > new file mode 100644
> > index 000000000000..6d8d677f86f3
> > --- /dev/null
> > +++ b/drivers/hwmon/sg2042-mcu.c
> > @@ -0,0 +1,394 @@
> > +// SPDX-License-Identifier: GPL-2.0-only
> > +/*
> > + * Copyright (c) 2024 Inochi Amaoto <inochiama at outlook.com>
> > + *
> > + * Sophgo power control mcu for SG2042
> > + */
> > +
> > +#include <linux/cleanup.h>
> > +#include <linux/debugfs.h>
> > +#include <linux/err.h>
> > +#include <linux/hwmon.h>
> > +#include <linux/i2c.h>
> > +#include <linux/kernel.h>
> > +#include <linux/module.h>
> > +#include <linux/mutex.h>
> > +
> > +/* fixed MCU registers */
> > +#define REG_BOARD_TYPE 0x00
> > +#define REG_MCU_FIRMWARE_VERSION 0x01
> > +#define REG_PCB_VERSION 0x02
> > +#define REG_PWR_CTRL 0x03
> > +#define REG_SOC_TEMP 0x04
> > +#define REG_BOARD_TEMP 0x05
> > +#define REG_RST_COUNT 0x0a
> > +#define REG_UPTIME 0x0b
> > +#define REG_RESET_REASON 0x0d
> > +#define REG_MCU_TYPE 0x18
> > +#define REG_REPOWER_ACTION 0x65
> > +#define REG_CRITICAL_TEMP 0x66
> > +#define REG_REPOWER_TEMP 0x67
> As I mentioend in last review, suggest to add some clarification for
> CRITICAL and REPOWER. Due to no document from sophgo, I hope some comments
> in code for memo.
After some struggle, I find it is hard to add some comments here.
It is useless and the code should be self-explained. Instead, I
add the comment in the document and rename this reg to "repower
policy" to make it clear. See it in the next version.
Regards,
Inochi
More information about the linux-riscv
mailing list