From nobody Thu Dec 18 18:06:32 2025 Received: from mail-pj1-f43.google.com (mail-pj1-f43.google.com [209.85.216.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 524E41F4170 for ; Thu, 13 Mar 2025 04:48:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741841288; cv=none; b=gC6hVtqPm4E4CN/7Tk5W6XHqS0rTwBFnor+JAOA7C0VBYbJ/KPbGB+HmCysVepGThxRfB9agomBNzqfi5cPiBdm9zJjklaIfu2TymFC5XgR7oJSQJd9oF7EU9XrCHtswSQNloNJmBl/QaF9r/RM7RoTIVyUs9xPN4n3ozkslQoA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741841288; c=relaxed/simple; bh=WgOaRD1/gBWqutG9Z8BbW44fhl6Jh8r0vqcFCFsRRH4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=jLM/3dyxnWNZ3tqgHBP1PXW/M2Q21x2wwlXpeJsRMF25PrDLETpDOgJALTzelRhbsmVvG7V+DXDqjLOXupM+C4KMoX6R59PGS+yfun1WFJMDIE0bVsF4n8vjoDtZhwqPbiKGRoc2I5iSah0q2RVHhSdB+I1xZwfByyWZUB5N7ik= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=l8XLIkHa; arc=none smtp.client-ip=209.85.216.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="l8XLIkHa" Received: by mail-pj1-f43.google.com with SMTP id 98e67ed59e1d1-3011737dda0so1054002a91.1 for ; Wed, 12 Mar 2025 21:48:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1741841286; x=1742446086; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=gkgK5jX+FCEI8nouFKdll/aGvpUK/LQlAxZ+HobmESs=; b=l8XLIkHaRr+3rrGTL3T8k5pDti77vEL1zhTp590boh/NrsMqKTJRNAfygvgkLSAjXE oi9Q8+mPIGUCBIKJgZHq+f13mrRf6jGKW/z/OGyPm60IW2xWeGCvO+mi3GG0YLh0BD7b CcSLzbAnGe6mDQL6A0Jq0tabKimMsovEDFfJU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741841286; x=1742446086; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=gkgK5jX+FCEI8nouFKdll/aGvpUK/LQlAxZ+HobmESs=; b=tOUB21oV3af8y6RmbeN93Pk73hHQHFI9TagD52xHhkwWc64RFQXsSta+W6rCcRyq53 RVnVDUhcL5rWXEHLcNsDZRPMoetwd5nOuNfZqAaGdG4Mqi33tOy97s7rO1AGyKsHBWaV 4/LXqGLJrPs4YU/VMqMRMdSC4vZYFPUWljM0qBnG8RuIyPQLB0zIVb6Mi6KlbzxaZYuh fWeyz94lwTp9Kpngqb/RXaKsmDOPLFP/RnG8STItE5k2LhQb8yQvD9Z3Ch0gZNrDwpyj X16+6C9E9PK2C28SiUbum6ivOJteB/A+GnVf08b4c8j82ebN2IcrHReADdGX73OBI7Pi vcPQ== X-Forwarded-Encrypted: i=1; AJvYcCVD+6ESimChQZq7I+GDa8oo7mpPRdWTBeRTvNNpou/DeJWBRyvB6m7hAH6Y2K22FtvO4kbtfrWf8+bxvvo=@vger.kernel.org X-Gm-Message-State: AOJu0Yw4rPOP8G+8dU4MRfyb2R4th/p3/JFihD2Flt6ab9vMEksIy/f9 +7VeAeiYcuumjrn337f9wzj+JOhMkFrMljhu5Odmj1E4CvcpjgzfhS3jSSZhzQ== X-Gm-Gg: ASbGncugomwBZInitGMmZGO9jVYg35et4TpP53a3RbeN4DOtKRGpiH7UeqK5kO99NIu 4ghNSnU4f8/QlxknqS55/KNRkyMV2xG4aYLXj/fAzSbav/f1XKYl/eoO1Tx9rwRjqcYob82iILu csluBuQTY4f5lOOLLBrFEi5xvrNaw/aUvHlEq4fNre4uK4eaXg+tTffmczlOpLyEC2scWAECnx8 ubGWJWtKEkwhKZlXpWRbsdWsxkdehedIsZNdtVMyelw1KRr/j+DqzgwQyqP4RbLOZWtFhtUaI5P QMaB0OX52Tap63/8MNWOdvE8Y0tHClJlLSnihpwzw8b7HUcE9zAzoRm63WSenzr+R8s= X-Google-Smtp-Source: AGHT+IEPWtvXkbZGs7O7/HumRDnQlpIfoYAFZcrr04/lKSaRzbzOgD2nzpzxAWXqpA6A8LJHsLZDTA== X-Received: by 2002:a17:90b:3884:b0:2ea:37b4:5373 with SMTP id 98e67ed59e1d1-2ff7ce6d7ffmr35825012a91.10.1741841286433; Wed, 12 Mar 2025 21:48:06 -0700 (PDT) Received: from lschyi-p920.tpe.corp.google.com ([2401:fa00:1:10:1872:6051:5c24:509e]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-225c6bd5c03sm4188025ad.249.2025.03.12.21.48.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Mar 2025 21:48:06 -0700 (PDT) From: Sung-Chi Li Date: Thu, 13 Mar 2025 12:47:42 +0800 Subject: [PATCH 1/3] hwmon: (cros_ec) Add setting target fan RPM function Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250313-extend_ec_hwmon_fan-v1-1-5c566776f2c4@chromium.org> References: <20250313-extend_ec_hwmon_fan-v1-0-5c566776f2c4@chromium.org> In-Reply-To: <20250313-extend_ec_hwmon_fan-v1-0-5c566776f2c4@chromium.org> To: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= , Jean Delvare , Guenter Roeck , Benson Leung Cc: Guenter Roeck , chrome-platform@lists.linux.dev, linux-hwmon@vger.kernel.org, linux-kernel@vger.kernel.org, Sung-Chi Li X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1741841282; l=2304; i=lschyi@chromium.org; s=20241113; h=from:subject:message-id; bh=WgOaRD1/gBWqutG9Z8BbW44fhl6Jh8r0vqcFCFsRRH4=; b=YYMOG4nN0QlC1W81qjF0ONgWNPNT9Xzvf6BHYEGPaJQUnSOwDM6fb6gAJ00Myf30pvq2ikkCa ackrFedOqFOAay02Dxg0OYzR57cAdXfXkpD6f40bhyf9h11LpOeevBO X-Developer-Key: i=lschyi@chromium.org; a=ed25519; pk=nE3PJlqSK35GdWfB4oVLOwi4njfaUZRhM66HGos9P6o= Implement the functionality of setting the target fan RPM to ChromeOS embedded controller under hwmon framework. Signed-off-by: Sung-Chi Li --- drivers/hwmon/cros_ec_hwmon.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/drivers/hwmon/cros_ec_hwmon.c b/drivers/hwmon/cros_ec_hwmon.c index 9991c3fa020ac859cbbff29dfb669e53248df885..b2fec0768301f116f49c57b8dbf= b042b98a573e1 100644 --- a/drivers/hwmon/cros_ec_hwmon.c +++ b/drivers/hwmon/cros_ec_hwmon.c @@ -52,6 +52,26 @@ static int cros_ec_hwmon_read_temp(struct cros_ec_device= *cros_ec, u8 index, u8 return 0; } =20 +static int cros_ec_hwmon_set_fan_rpm(struct cros_ec_device *cros_ec, u8 in= dex, u16 val) +{ + struct ec_params_pwm_set_fan_target_rpm_v1 p_v1 =3D { + .rpm =3D val, + .fan_idx =3D index, + }; + + return cros_ec_cmd(cros_ec, 1, EC_CMD_PWM_SET_FAN_TARGET_RPM, &p_v1, size= of(p_v1), NULL, 0); +} + +static int cros_ec_hwmon_write_fan(struct cros_ec_device *cros_ec, u32 att= r, int channel, long rpm) +{ + switch (attr) { + case hwmon_fan_target: + return cros_ec_hwmon_set_fan_rpm(cros_ec, channel, rpm); + default: + return -EOPNOTSUPP; + } +} + static bool cros_ec_hwmon_is_error_fan(u16 speed) { return speed =3D=3D EC_FAN_SPEED_NOT_PRESENT || speed =3D=3D EC_FAN_SPEED= _STALLED; @@ -140,6 +160,19 @@ static umode_t cros_ec_hwmon_is_visible(const void *da= ta, enum hwmon_sensor_type return 0; } =20 +static int cros_ec_hwmon_write(struct device *dev, enum hwmon_sensor_types= type, + u32 attr, int channel, long val) +{ + struct cros_ec_hwmon_priv *priv =3D dev_get_drvdata(dev); + + switch (type) { + case hwmon_fan: + return cros_ec_hwmon_write_fan(priv->cros_ec, attr, channel, val); + default: + return -EOPNOTSUPP; + } +} + static const struct hwmon_channel_info * const cros_ec_hwmon_info[] =3D { HWMON_CHANNEL_INFO(chip, HWMON_C_REGISTER_TZ), HWMON_CHANNEL_INFO(fan, @@ -179,6 +212,7 @@ static const struct hwmon_ops cros_ec_hwmon_ops =3D { .read =3D cros_ec_hwmon_read, .read_string =3D cros_ec_hwmon_read_string, .is_visible =3D cros_ec_hwmon_is_visible, + .write =3D cros_ec_hwmon_write, }; =20 static const struct hwmon_chip_info cros_ec_hwmon_chip_info =3D { --=20 2.49.0.rc0.332.g42c0ae87b1-goog From nobody Thu Dec 18 18:06:32 2025 Received: from mail-pl1-f172.google.com (mail-pl1-f172.google.com [209.85.214.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3E9001F4195 for ; Thu, 13 Mar 2025 04:48:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741841290; cv=none; b=egrrqeV9eBHq9VYj6ZhI1mPb86MEobRcuaA84p1Ij72u5S+i3PUwAewe7nHho9t1vaCN2hl21S6gijF3XRX+11rk4Bvf+Nd8EgCPdhDfStKnZX9b3mQ1nMUiuZVGES+XnbuZAIC/Gd/j/quFPmSfnRpzCE8QrFRizayIKON9yeA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741841290; c=relaxed/simple; bh=dDVtZ1x2j0ImBV1/fGLenYXfzl2AU5H3a103lpK7oR4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=svMHg/QNQpDO1bc0H56oZLKJE1nA+SKSgkkV0mdWmShHyyszywECxEZ9ZSrVcMAmzbifbUUwJCN0n0BHGhFpz/6c4PO6sBRNSXIE+CQT+aXbFOZ5DCw5lXEwNTrsa2eCxxROZDFS9gH/yIZ7aoAkm9hcMEXRDu0aSbIzuHf/9l8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=cQqifo8s; arc=none smtp.client-ip=209.85.214.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="cQqifo8s" Received: by mail-pl1-f172.google.com with SMTP id d9443c01a7336-22403cbb47fso10506285ad.0 for ; Wed, 12 Mar 2025 21:48:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1741841288; x=1742446088; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=lBcgfIiObIi/3SSKsTLER8rj7ajdp492rQC6TZ4MQVE=; b=cQqifo8siVhGuhtCUGukM3WQaRwYAdjC01X4PFAMSNQMY0OSLylNc3UwgHFZ0hfn0o RLwG3Z7bH8sSQWbi68ULBivJcvowj3BzRWDSFK0MIZvTqkxRk0nm36QbCeLZWVT3aNYL 6Sd0WzfOXv6vHKoZOMiuHNC3hTv0YzUTGSy7I= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741841288; x=1742446088; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=lBcgfIiObIi/3SSKsTLER8rj7ajdp492rQC6TZ4MQVE=; b=vNwXSJ55AgvFfh/0DafIU3JqNSY3+kfh7aBkxGCFt9a3v7156L6pnUdBP31R4O5mwg Xx5x1xR+9LIRnlcDbRFedM+CRdQqe4SBA7+HSqdgcwPD2+fwrMpTbjZeAyCtXEhL6Urr EmgZlqAcS46xdWWLw/7AVIJd7F1/7+4S/QqG3ALVB8pNU+Z5H2p8N7p7UkLpfH/l0gGD //W1lkbyW8EPhP3cIBw/5J4WjKQD1oClXTS09iVvBTRtuToVqtEDtsj1yg4YPgL1dRur hxN+Zo6rdsEArLi280s3NqPkPkQ+/xZGeeeDFvr5AeBY2HCpbxeMtc5zLNpqqX+O6XY2 HzQw== X-Forwarded-Encrypted: i=1; AJvYcCUHLFDeRH6Vs9As7oI/Rz0SLDtS5Jf9ES9icCTM/apFuBtvMFXpWvGMtM6+acRKvb0+RRJqeC4XI+7RJGw=@vger.kernel.org X-Gm-Message-State: AOJu0YxH24C9w18yavWJXPVkCC9euFOhlZGDaNOoT5kvb54tXqokgCv0 b21LBC44xS0vx4GPBWdQ1mMX82KIUyy6Prr2e6SfRUAlUENJFGis7Fi3d95ptw== X-Gm-Gg: ASbGncv66jJAkffdirXf3GAQCrN4k2eZPMuXdRuu4LDIinVlysIucjp6eYL5R0H5dnF PHlEGyfJvSoW5NwCPCCdaeF0JNN81jAxeIS+oxZBhXtaX/TOAqeIOnk8pwA6kuTxM9DSBChrex1 Lmyr3eduyVCpihKzkJ/GsETKdpILoWji7T0yn8nbQnacQpedGpzzU+eXYPu/5FzuF6RrDntFLzf pRqrdIyIY6BMdxP4l8ETnkUg7kWhIAs6swE3oEV94UfWMx+Q9iAXgm28conFmBk8ShDHDcrME0M 6AJtqgAoVXss4w4tb482TyNB+dN0enpKnBnol7TFCCYzDdc+JLkXnw6Mma0TsQy7BwU= X-Google-Smtp-Source: AGHT+IHjNI0QVNBBTnp6ns0zk5oW8aMW/Zec9BzzctcovsX2+GdTh5Zv6MRnDFtEeDkwVkOOEuAzEw== X-Received: by 2002:a17:902:f68a:b0:216:7926:8d69 with SMTP id d9443c01a7336-22428bf1731mr279459745ad.47.1741841288493; Wed, 12 Mar 2025 21:48:08 -0700 (PDT) Received: from lschyi-p920.tpe.corp.google.com ([2401:fa00:1:10:1872:6051:5c24:509e]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-225c6bd5c03sm4188025ad.249.2025.03.12.21.48.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Mar 2025 21:48:08 -0700 (PDT) From: Sung-Chi Li Date: Thu, 13 Mar 2025 12:47:43 +0800 Subject: [PATCH 2/3] hwmon: (cros_ec) Add reading target fan RPM function Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250313-extend_ec_hwmon_fan-v1-2-5c566776f2c4@chromium.org> References: <20250313-extend_ec_hwmon_fan-v1-0-5c566776f2c4@chromium.org> In-Reply-To: <20250313-extend_ec_hwmon_fan-v1-0-5c566776f2c4@chromium.org> To: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= , Jean Delvare , Guenter Roeck , Benson Leung Cc: Guenter Roeck , chrome-platform@lists.linux.dev, linux-hwmon@vger.kernel.org, linux-kernel@vger.kernel.org, Sung-Chi Li X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1741841282; l=1858; i=lschyi@chromium.org; s=20241113; h=from:subject:message-id; bh=dDVtZ1x2j0ImBV1/fGLenYXfzl2AU5H3a103lpK7oR4=; b=vI0vc/8QKwg48A1HNs3bjMn2lu1UuDOPqIwy47brYYT8UZZvUvyMYKy2fE4WmHPGyLitH8sYg nZ6T11fWnlHAxDo2E+ad70qQioiSOcDPfDayDlAvyq2sgniNxypPwEr X-Developer-Key: i=lschyi@chromium.org; a=ed25519; pk=nE3PJlqSK35GdWfB4oVLOwi4njfaUZRhM66HGos9P6o= Implement the functionality of reading the target fan RPM setting from ChromeOS embedded controller under framework. Signed-off-by: Sung-Chi Li --- drivers/hwmon/cros_ec_hwmon.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/drivers/hwmon/cros_ec_hwmon.c b/drivers/hwmon/cros_ec_hwmon.c index b2fec0768301f116f49c57b8dbfb042b98a573e1..73bfcbbaf9531be6b753cfef804= 5fd5dab5b2ab3 100644 --- a/drivers/hwmon/cros_ec_hwmon.c +++ b/drivers/hwmon/cros_ec_hwmon.c @@ -36,6 +36,19 @@ static int cros_ec_hwmon_read_fan_speed(struct cros_ec_d= evice *cros_ec, u8 index return 0; } =20 +static int cros_ec_hwmon_read_fan_target(struct cros_ec_device *cros_ec, u= 8 index, int32_t *speed) +{ + int ret; + struct ec_response_pwm_get_fan_rpm r; + + ret =3D cros_ec_cmd(cros_ec, 0, EC_CMD_PWM_GET_FAN_TARGET_RPM, NULL, 0, &= r, sizeof(r)); + if (ret < 0) + return ret; + + *speed =3D le32_to_cpu(r.rpm); + return 0; +} + static int cros_ec_hwmon_read_temp(struct cros_ec_device *cros_ec, u8 inde= x, u8 *temp) { unsigned int offset; @@ -95,6 +108,7 @@ static int cros_ec_hwmon_read(struct device *dev, enum h= wmon_sensor_types type, { struct cros_ec_hwmon_priv *priv =3D dev_get_drvdata(dev); int ret =3D -EOPNOTSUPP; + int32_t target_rpm; u16 speed; u8 temp; =20 @@ -111,6 +125,10 @@ static int cros_ec_hwmon_read(struct device *dev, enum= hwmon_sensor_types type, ret =3D cros_ec_hwmon_read_fan_speed(priv->cros_ec, channel, &speed); if (ret =3D=3D 0) *val =3D cros_ec_hwmon_is_error_fan(speed); + } else if (attr =3D=3D hwmon_fan_target) { + ret =3D cros_ec_hwmon_read_fan_target(priv->cros_ec, channel, &target_r= pm); + if (ret =3D=3D 0) + *val =3D target_rpm; } } else if (type =3D=3D hwmon_temp) { if (attr =3D=3D hwmon_temp_input) { --=20 2.49.0.rc0.332.g42c0ae87b1-goog From nobody Thu Dec 18 18:06:32 2025 Received: from mail-pl1-f178.google.com (mail-pl1-f178.google.com [209.85.214.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 640261F4285 for ; Thu, 13 Mar 2025 04:48:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741841292; cv=none; b=atS4wcUZe1787agIcP9DfGiL9IY+LReNxR9Qm/Ed0Fr3ft3pn9sFuGVSLk6EBDhpLMrF79OaGLoEqoMwiEGCHdWUsnpjrCtjhapWJxMK3ZxjoGHLlf3Yia8CCd90z6ppkL234olVZYrUlKCyv6TuQBvvLz5LYj+ysKqwzOov9n0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741841292; c=relaxed/simple; bh=6YZPbCIstrkFIBq12YFEFEcPE+av42I+9yZpNMwYV10=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=rEzSB3baPsHE1wbGA1A7vQEusxi4Qq1HFKhK0oTyU0JIqmoFDXJGak8i3ulHdB2sOtPkfYrNx8J076ZbYX12HwUXMRTyChvjUfl1BcHhkX+5bPpbgIhP3eosNc4LDYLcAa9lsLsamoIAycfsX4PGlMiSirIK5Pwt1sqiunLYO0w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=d1j28/+P; arc=none smtp.client-ip=209.85.214.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="d1j28/+P" Received: by mail-pl1-f178.google.com with SMTP id d9443c01a7336-223fd89d036so10080515ad.1 for ; Wed, 12 Mar 2025 21:48:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1741841290; x=1742446090; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=I+gtVH5q1IVL2N3KNRKRTyNZRjmajO4WtYbaLiekdyM=; b=d1j28/+PWwXggRJEerxJ8uv9XGJXiifIENRLWIg5mh1IWwveyxq35dm59UlTcOWkTq 1jqOm1jdiiJM7yrEYK02vVGFvc4lrG2i7FZZjpjBwvcJCpf3hMQ3XJB6xYtpkERyAVoh TiGMipo+q7toJgaJ+wwxLQo/PS56nz4zXQXqg= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741841290; x=1742446090; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=I+gtVH5q1IVL2N3KNRKRTyNZRjmajO4WtYbaLiekdyM=; b=TWkQ2Tec75sKLmYmwgy/Nkg6f7h8GDlvQSpuKqRIoJtk9PtTktVx+2ssB5aok2SH13 U3uP6RRFYfGznKKHoMDd8G8V8Ff3Uixxx1CsGmqPolcAvH0xIU64799kxpfwGVcRLIyf V5Mf6mgZHEd2rb4xuPCADNQabgrRmr5cCcnJg/HZT7wERCqbJqCTt3GI8fwZu9X1NfIM 6TCLFlX6jzEnkcxQRbrcuBVyWBrBma4Izx3N6Y/1VM5oAlVDrM3dkmvNgsVbZTunj395 V0becbM9DzworWq1Ozl96WyGEApqjDO49C16QiUkZdYi7Vthfk4bB94nQV1Jx7ZK2TCO xOHA== X-Forwarded-Encrypted: i=1; AJvYcCWlmyP7hPz22FAboiPwW0NR8NRQCRpgRy4hHAWgnGYVdfuFU7FtXKmn1HjT+2oPLjRA1uEkkoN/Ygs1c6Y=@vger.kernel.org X-Gm-Message-State: AOJu0YzQGHYgQblJzaUQ9Tqhj1GlU+O8iclKyMtmr54TXvDsIuoLSxne Fgmoxas79cOn557DT129QhNUpAWXinReeIdU8szmtLgMCbYm5luj+DCwFqXexg== X-Gm-Gg: ASbGnct/oCOdYvf47rumZBqh6er2hSIP8fbi/xZjFVmIanwVh9Woi+1CQlRr5aqNQ5T pF7a93uqrwrVlgZrZb73pMuQrKBxW7uHxXcgbT7vgY+qxPDQmkhpkOO73cyKzviPUL8FsWSa7E/ BT9gxf3psaZjbWQ9V2MiUpnFYsI/s/5W6Dm5Y0SqFWao3j20AOZFKcxVkd1VxOBUsZypoem8wJc DahlKQHQV8kDpnjmSkcl1c4kZ+As3R4OK4SkrDDf89F6h1xoivOUL0NO0i1BPjTQjXOeq0UEAFC Q8aZYdfdHDO9BFlcCMIMTiUPn5EYjEu3+7fG7wym+OQWz3Rp3MQ5naHCsHZ2KXsCuRg= X-Google-Smtp-Source: AGHT+IEaZ5AffNlbpnnWajl9IqcugOB73K+75CMHqeDiaMOSmLOQz2lLmmj4CJcymfMhLCNoiy1i9w== X-Received: by 2002:a17:903:2281:b0:215:8d49:e2a7 with SMTP id d9443c01a7336-22428c1908amr341875375ad.50.1741841290572; Wed, 12 Mar 2025 21:48:10 -0700 (PDT) Received: from lschyi-p920.tpe.corp.google.com ([2401:fa00:1:10:1872:6051:5c24:509e]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-225c6bd5c03sm4188025ad.249.2025.03.12.21.48.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Mar 2025 21:48:10 -0700 (PDT) From: Sung-Chi Li Date: Thu, 13 Mar 2025 12:47:44 +0800 Subject: [PATCH 3/3] hwmon: (cros_ec) Register fan target attribute Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250313-extend_ec_hwmon_fan-v1-3-5c566776f2c4@chromium.org> References: <20250313-extend_ec_hwmon_fan-v1-0-5c566776f2c4@chromium.org> In-Reply-To: <20250313-extend_ec_hwmon_fan-v1-0-5c566776f2c4@chromium.org> To: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= , Jean Delvare , Guenter Roeck , Benson Leung Cc: Guenter Roeck , chrome-platform@lists.linux.dev, linux-hwmon@vger.kernel.org, linux-kernel@vger.kernel.org, Sung-Chi Li X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1741841282; l=1917; i=lschyi@chromium.org; s=20241113; h=from:subject:message-id; bh=6YZPbCIstrkFIBq12YFEFEcPE+av42I+9yZpNMwYV10=; b=JhUhhxTRkvnPU2ov79FmQS4td92jVH4sj9+r0KoSiXE2Sg7nvJ8UWqERzYXiXc47oPttOjo78 tc+qyXZb9F1AjCgrfx1CFLpQ/fMpFl1pTwbrfgNiaVXvLnhUkahlThK X-Developer-Key: i=lschyi@chromium.org; a=ed25519; pk=nE3PJlqSK35GdWfB4oVLOwi4njfaUZRhM66HGos9P6o= The ChromeOS embedded controller (EC) supports closed loop fan speed control, so add this attribute under hwmon framework such that kernel can specify the desired fan RPM for fans connected to the EC. Signed-off-by: Sung-Chi Li --- drivers/hwmon/cros_ec_hwmon.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/drivers/hwmon/cros_ec_hwmon.c b/drivers/hwmon/cros_ec_hwmon.c index 73bfcbbaf9531be6b753cfef8045fd5dab5b2ab3..56a8ee13ec2a9f8e7127815a530= d2a254a45bf55 100644 --- a/drivers/hwmon/cros_ec_hwmon.c +++ b/drivers/hwmon/cros_ec_hwmon.c @@ -168,8 +168,15 @@ static umode_t cros_ec_hwmon_is_visible(const void *da= ta, enum hwmon_sensor_type const struct cros_ec_hwmon_priv *priv =3D data; =20 if (type =3D=3D hwmon_fan) { - if (priv->usable_fans & BIT(channel)) + if (!(priv->usable_fans & BIT(channel))) + return 0; + + switch (attr) { + case hwmon_fan_target: + return 0644; + default: return 0444; + } } else if (type =3D=3D hwmon_temp) { if (priv->temp_sensor_names[channel]) return 0444; @@ -194,10 +201,10 @@ static int cros_ec_hwmon_write(struct device *dev, en= um hwmon_sensor_types type, static const struct hwmon_channel_info * const cros_ec_hwmon_info[] =3D { HWMON_CHANNEL_INFO(chip, HWMON_C_REGISTER_TZ), HWMON_CHANNEL_INFO(fan, - HWMON_F_INPUT | HWMON_F_FAULT, - HWMON_F_INPUT | HWMON_F_FAULT, - HWMON_F_INPUT | HWMON_F_FAULT, - HWMON_F_INPUT | HWMON_F_FAULT), + HWMON_F_INPUT | HWMON_F_FAULT | HWMON_F_TARGET, + HWMON_F_INPUT | HWMON_F_FAULT | HWMON_F_TARGET, + HWMON_F_INPUT | HWMON_F_FAULT | HWMON_F_TARGET, + HWMON_F_INPUT | HWMON_F_FAULT | HWMON_F_TARGET), HWMON_CHANNEL_INFO(temp, HWMON_T_INPUT | HWMON_T_FAULT | HWMON_T_LABEL, HWMON_T_INPUT | HWMON_T_FAULT | HWMON_T_LABEL, --=20 2.49.0.rc0.332.g42c0ae87b1-goog