Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 47ece964 authored by Guenter Roeck's avatar Guenter Roeck
Browse files

hwmon: (nct6775) Add support for fan debounce module parameter



If set, fan debounce is enabled when loading the driver.

Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
parent 5c25d954
Loading
Loading
Loading
Loading
+28 −0
Original line number Diff line number Diff line
@@ -72,6 +72,10 @@ static unsigned short force_id;
module_param(force_id, ushort, 0);
MODULE_PARM_DESC(force_id, "Override the detected device ID");

static unsigned short fan_debounce;
module_param(fan_debounce, ushort, 0);
MODULE_PARM_DESC(fan_debounce, "Enable debouncing for fan RPM signal");

#define DRVNAME "nct6775"

/*
@@ -183,6 +187,8 @@ static const u16 NCT6775_REG_IN[] = {
#define NCT6775_REG_FANDIV1		0x506
#define NCT6775_REG_FANDIV2		0x507

#define NCT6775_REG_CR_FAN_DEBOUNCE	0xf0

static const u16 NCT6775_REG_ALARM[NUM_REG_ALARM] = { 0x459, 0x45A, 0x45B };

/* 0..15 voltages, 16..23 fans, 24..31 temperatures */
@@ -2110,6 +2116,28 @@ static int nct6775_probe(struct platform_device *pdev)
	 */
	superio_select(sio_data->sioreg, NCT6775_LD_VID);
	data->vid = superio_inb(sio_data->sioreg, 0xe3);

	if (fan_debounce) {
		u8 tmp;

		superio_select(sio_data->sioreg, NCT6775_LD_HWM);
		tmp = superio_inb(sio_data->sioreg,
				  NCT6775_REG_CR_FAN_DEBOUNCE);
		switch (data->kind) {
		case nct6775:
			tmp |= 0x1e;
			break;
		case nct6776:
		case nct6779:
			tmp |= 0x3e;
			break;
		}
		superio_outb(sio_data->sioreg, NCT6775_REG_CR_FAN_DEBOUNCE,
			     tmp);
		dev_info(&pdev->dev, "Enabled fan debounce for chip %s\n",
			 data->name);
	}

	superio_exit(sio_data->sioreg);

	err = device_create_file(dev, &dev_attr_cpu0_vid);