Commit daf4fedd authored by David Bartley's avatar David Bartley Committed by Guenter Roeck
Browse files

hwmon: (nct6683) Support NCT6687D.



This is found on many MSI motherboards.

Signed-off-by: default avatarDavid Bartley <andareed@gmail.com>
Link: https://lore.kernel.org/r/20201202025057.5492-1-andareed@gmail.com


Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
parent 6cbf7964
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -3,7 +3,7 @@ Kernel driver nct6683

Supported chips:

  * Nuvoton NCT6683D
  * Nuvoton NCT6683D/NCT6687D

    Prefix: 'nct6683'

@@ -61,4 +61,5 @@ Board Firmware version
Intel DH87RL	NCT6683D EC firmware version 1.0 build 04/03/13
Intel DH87MC	NCT6683D EC firmware version 1.0 build 04/03/13
Intel DB85FL	NCT6683D EC firmware version 1.0 build 04/03/13
MSI B550	NCT6687D EC firmware version 1.0 build 05/07/20
=============== ===============================================
+12 −2
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * nct6683 - Driver for the hardware monitoring functionality of
 *	     Nuvoton NCT6683D eSIO
 *	     Nuvoton NCT6683D/NCT6687D eSIO
 *
 * Copyright (C) 2013  Guenter Roeck <linux@roeck-us.net>
 *
@@ -12,6 +12,7 @@
 *
 * Chip        #vin    #fan    #pwm    #temp  chip ID
 * nct6683d     21(1)   16      8       32(1) 0xc730
 * nct6687d     21(1)   16      8       32(1) 0xd590
 *
 * Notes:
 *	(1) Total number of vin and temp inputs is 32.
@@ -32,7 +33,7 @@
#include <linux/platform_device.h>
#include <linux/slab.h>

enum kinds { nct6683 };
enum kinds { nct6683, nct6687 };

static bool force;
module_param(force, bool, 0);
@@ -40,10 +41,12 @@ MODULE_PARM_DESC(force, "Set to one to enable support for unknown vendors");

static const char * const nct6683_device_names[] = {
	"nct6683",
	"nct6687",
};

static const char * const nct6683_chip_names[] = {
	"NCT6683D",
	"NCT6687D",
};

#define DRVNAME "nct6683"
@@ -63,6 +66,7 @@ static const char * const nct6683_chip_names[] = {

#define SIO_NCT6681_ID		0xb270	/* for later */
#define SIO_NCT6683_ID		0xc730
#define SIO_NCT6687_ID		0xd590
#define SIO_ID_MASK		0xFFF0

static inline void
@@ -164,6 +168,7 @@ superio_exit(int ioreg)
#define NCT6683_REG_CUSTOMER_ID		0x602
#define NCT6683_CUSTOMER_ID_INTEL	0x805
#define NCT6683_CUSTOMER_ID_MITAC	0xa0e
#define NCT6683_CUSTOMER_ID_MSI		0x201

#define NCT6683_REG_BUILD_YEAR		0x604
#define NCT6683_REG_BUILD_MONTH		0x605
@@ -1218,6 +1223,8 @@ static int nct6683_probe(struct platform_device *pdev)
		break;
	case NCT6683_CUSTOMER_ID_MITAC:
		break;
	case NCT6683_CUSTOMER_ID_MSI:
		break;
	default:
		if (!force)
			return -ENODEV;
@@ -1352,6 +1359,9 @@ static int __init nct6683_find(int sioaddr, struct nct6683_sio_data *sio_data)
	case SIO_NCT6683_ID:
		sio_data->kind = nct6683;
		break;
	case SIO_NCT6687_ID:
		sio_data->kind = nct6687;
		break;
	default:
		if (val != 0xffff)
			pr_debug("unsupported chip ID: 0x%04x\n", val);