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@xxxxxxxxxxx> > > Tested-by: Chen Wang <unicorn_wang@xxxxxxxxxxx> > > Reviewed-by: Chen Wang <unicorn_wang@xxxxxxxxxxx> > > --- > > 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@xxxxxxxxxxx> > > + > > +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@xxxxxxxxxxx> > > + * > > + * 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