From patchwork Thu Mar 13 04:47:42 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sung-Chi Li X-Patchwork-Id: 14014310 Received: from mail-pj1-f41.google.com (mail-pj1-f41.google.com [209.85.216.41]) (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 51A4B1F416B for ; Thu, 13 Mar 2025 04:48:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741841288; cv=none; b=mKKGNumVM8b8uRxhMHsJ9Dm5x6u3r/WzadS5644pmtp2v3REOefu6ipKjalcCACmhAK0gqle7va+FE51Wm9PfqJc0M3FpkELEJXKgRKL3/d4ksG6E2tB7naE5J7adh+QsL6tw4p9LdvQfc2L/9w/r9xD+vC66/a6FS/mW/n6oX0= 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.41 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-f41.google.com with SMTP id 98e67ed59e1d1-2fee4d9c2efso1023346a91.3 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=a48vmJzxhByP310y7Mr0nAaMCtKVDnW2ht93Iarr1HXgEdwtPMrlc2oYqwTkgmdrxG P/zXJVca3lrrlfVw1IwKzKTPYCb7zJw4rOTv8ONP0RZ4BfCfOK4634b5LqPS0n55ggKf M0vt05Sy0Yji/otl3C8XatxBF3x1SQvnbBZVHdiCSIJRVuAE+yXf8yaWJtdAxqEZMFwz PBsjOxoMq7LRZGRpaPiasIt5GDex35SnufBPjiAyLPZuOoaqai/DxcqqluPYnhD0JYJw +y/WtIUctPPu6b5g2UaHQcDa1CldJ7N7IPmoqbDmRyK5I7x2ZfVYKrxm3yuM/MjOShT6 vqzw== X-Forwarded-Encrypted: i=1; AJvYcCVKMWXMifSk+llPlj9Afjr2SxcSXJGInZu8SfX+0wIwJO+1yjnBKSPLqRQdrMv0MW1v0MJ1O1zI1d/IkQ==@vger.kernel.org X-Gm-Message-State: AOJu0YxM7d1ur76ZwVb0EuvCHJIgelSmumRk3AsXYO1He3djDzhdDDLw yW1EDx6aq8gqFWj4Al0dYVY/kIKA6wy1b2hCuFQdX0h1MqcTyusxWudcvD/IZA== X-Gm-Gg: ASbGncsPfJev7bRoGbbV+cOBpNc8MD6Dbl1sloaxDwu72ij/LXNIhm33gEyQQQmhDom wGRUJUqDrv8FDh9OTvjATmuTWqD+4GOabh6wCSjOpPPsW2z1LyVh/JhF7DC1COvQPMvtLx7We/7 bci29BmLQ2aWiycJ7HTiqrPUXxohYzyCecrrON73gkxTwtCuy32gGcDpQ8ApobRNTvQz2NC96k6 w6kRPTsko2EPFcZN7cK2QaPHJ00P1kgoCCmL0iPmXqF0KBGGONKo3YmKBwXTKt02Wvao/DScYKO xVm9LNhRg+PkTuEoHj6S3KRxwQ96XWhKemYqs+gQvOb5/OG1qfX/0Cv5DCiWL6NspVo= 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-hwmon@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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..b2fec0768301f116f49c57b8dbfb042b98a573e1 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; } +static int cros_ec_hwmon_set_fan_rpm(struct cros_ec_device *cros_ec, u8 index, u16 val) +{ + struct ec_params_pwm_set_fan_target_rpm_v1 p_v1 = { + .rpm = val, + .fan_idx = index, + }; + + return cros_ec_cmd(cros_ec, 1, EC_CMD_PWM_SET_FAN_TARGET_RPM, &p_v1, sizeof(p_v1), NULL, 0); +} + +static int cros_ec_hwmon_write_fan(struct cros_ec_device *cros_ec, u32 attr, 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 == EC_FAN_SPEED_NOT_PRESENT || speed == EC_FAN_SPEED_STALLED; @@ -140,6 +160,19 @@ static umode_t cros_ec_hwmon_is_visible(const void *data, enum hwmon_sensor_type return 0; } +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 = 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[] = { 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 = { .read = cros_ec_hwmon_read, .read_string = cros_ec_hwmon_read_string, .is_visible = cros_ec_hwmon_is_visible, + .write = cros_ec_hwmon_write, }; static const struct hwmon_chip_info cros_ec_hwmon_chip_info = { From patchwork Thu Mar 13 04:47:43 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sung-Chi Li X-Patchwork-Id: 14014311 Received: from mail-pl1-f182.google.com (mail-pl1-f182.google.com [209.85.214.182]) (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 43CD41F4197 for ; Thu, 13 Mar 2025 04:48:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741841290; cv=none; b=h/LS+h6fFTZgjzxb4GYTzUn1L5TJqK0eVhZdvD1eYYOUNfLnVB5wqwE4NJKuffndns5Nb4dtTIqE6/SQKLyS3b1BHizxjyPfLsvusVVidrELrnyI0vxsSMJOfvC28vLlSLtvn8c0jMGwYQOduWdNeY9WJfrxqCbOpYleXFndl7k= 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.182 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-f182.google.com with SMTP id d9443c01a7336-22438c356c8so9796005ad.1 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=LZx+FPLbcAJ2EfD4bE0goTBAcOjoua3Tr0F+tRzLSvRjuv/Kk9OyrM6ERULKQS0GzC cr+eJPV2cJpvS4KpA5K6GZPKPi3xzxgk5ogqJUimcvAdZ++JdmAGHVO5IqW1JLk8XS3c 6TtiIJMjlEK0YkErBfwU5xt5uuqAba2DOBk6DdOmpCXrhJF66FAthf6r/GPatB+5DwTY 9/Dk7Dn5Hnl2PXojdsHFx1DoUB7ChsIZ4d1cg3y8qbpCHwxG5aOpty4IzH449EfW/wZq JDimEcoVAtBBDPNdy4jFqsECYbveGmavnO9Bsu2/JnnBg4wPueRtZBmkPgEM0vJLJcTo QuOQ== X-Forwarded-Encrypted: i=1; AJvYcCU0rEYcNXGhtVSpEeg18OEOQ4ZhpmQgBXZ3d7IUbI9K3EXkkpAqgvRWLsjxoFcI2yTmL7zzA06tHRg06g==@vger.kernel.org X-Gm-Message-State: AOJu0Yz+nTBOfa01Qios1pUREHvrvyIRCd5ONZoRrFuZzKOGmGHWO4gm QXplI4R5VqtpeUgqzBoAA8SESgI1oUSV0piAXSgP2pCBaR5pfvP3CAmyrQ1LOA== X-Gm-Gg: ASbGncuKwYBjjftKXvUzh2Lzyn/NNZxLHOgY6e7BgPhApvzwJfKQ/G4iuLWwDHcJsNI jqQ8hBWidaJQVJcZ63WJr62tPIh8KAASozgAYNnHki+LElrMVJPDhSvCf48gDvdSvYCBEdpUDyc gPZOuG1BymofItCJ0cnpK/P4cUzb4zvlHwDiqshxP+bj60z7WB7KivBaJowbAZTHNHj+ChNAaoG hJ1TP0ajNK03NRIVUXLdxdvpoP9yJHvisvzP9cmUTZ8jQlGcls688RuSIaIfLRB8PofQxI+2p7z MvVlNCGE9/oeqD4MIMeK+sVjhTbzDKZGXCcHSOBpl1MC9dVGkLU/l6+ylqzI2eIkXD0= 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-hwmon@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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..73bfcbbaf9531be6b753cfef8045fd5dab5b2ab3 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_device *cros_ec, u8 index return 0; } +static int cros_ec_hwmon_read_fan_target(struct cros_ec_device *cros_ec, u8 index, int32_t *speed) +{ + int ret; + struct ec_response_pwm_get_fan_rpm r; + + ret = cros_ec_cmd(cros_ec, 0, EC_CMD_PWM_GET_FAN_TARGET_RPM, NULL, 0, &r, sizeof(r)); + if (ret < 0) + return ret; + + *speed = le32_to_cpu(r.rpm); + return 0; +} + static int cros_ec_hwmon_read_temp(struct cros_ec_device *cros_ec, u8 index, u8 *temp) { unsigned int offset; @@ -95,6 +108,7 @@ static int cros_ec_hwmon_read(struct device *dev, enum hwmon_sensor_types type, { struct cros_ec_hwmon_priv *priv = dev_get_drvdata(dev); int ret = -EOPNOTSUPP; + int32_t target_rpm; u16 speed; u8 temp; @@ -111,6 +125,10 @@ static int cros_ec_hwmon_read(struct device *dev, enum hwmon_sensor_types type, ret = cros_ec_hwmon_read_fan_speed(priv->cros_ec, channel, &speed); if (ret == 0) *val = cros_ec_hwmon_is_error_fan(speed); + } else if (attr == hwmon_fan_target) { + ret = cros_ec_hwmon_read_fan_target(priv->cros_ec, channel, &target_rpm); + if (ret == 0) + *val = target_rpm; } } else if (type == hwmon_temp) { if (attr == hwmon_temp_input) { From patchwork Thu Mar 13 04:47:44 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sung-Chi Li X-Patchwork-Id: 14014312 Received: from mail-pl1-f180.google.com (mail-pl1-f180.google.com [209.85.214.180]) (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 4412F1F4606 for ; Thu, 13 Mar 2025 04:48:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.180 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741841292; cv=none; b=GKUXhJDCLShsJWj9qq9HDbkGHEOoX+nWLBwFEQS75uNOA90p4RPh/AnX7Cffk9ToMOKisP88UK4MmhQReFGL/BBmW3ltWWDnL4bFlnnQmK3n+rlDxoQBSF9l2RxyL4IotDwo4IpmPhHwyiEAo7Qzhg6mbgnIZ/0MI9/sXxfnb4E= 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.180 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-f180.google.com with SMTP id d9443c01a7336-22349bb8605so10921065ad.0 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=uMXpogu3L2NZjl1hwLmixJPpYWNPmzPIrwUnmWtdk1+H3AjijthMGdYyzcmpq42BhL fIeUxpLVN1uHaoRyOk1HlSUYPc+cY/mJ3gEdrop/GWvUamIaK0jEEXo/19ShOyYEVXWC twBZ0iqWp14dVtwJr/3ky0W1T7OO5Z1rjQP1PIpzb/9dlSHORO3JZvc5m7QGCVYlY8At LrYKgfbKr8V0cc8G2hZLc3AsAbAuEKD3XQu6T1t7CjWi0LPayQ2A3ZA0qupvlNf3gECq c2CfTnxGRNWULm+neb37nXykQgRfYuT1eWzfx3Jryu30Lil8NZS4ya5vrYa6HlVqqyIL U3Lg== X-Forwarded-Encrypted: i=1; AJvYcCX2BMsuE6p+j7Ng+mLDUQVpX2yXOsN2Z46J+zjKcX5SDSdRqelbp+CMnKj7t7sUmDDeczTndXPqG6JViQ==@vger.kernel.org X-Gm-Message-State: AOJu0YwDrHVnrsI8G2swcOS9m43b80z6bbLAaQcfgunNQGqv5WmE/OP+ 60uwUFoFX0e+kmxtTnUMVQCGm88pZtOHwWscLUPGKMwyf4/ZGTOI8T86pSe+S/XJ39SgvmTGPSA = X-Gm-Gg: ASbGnctRzLcJtGEQsK/wRu2pdb7lnnmvUbu4C09jyL97WrIx8gKkzMkTMt8iPmOxLX7 ousiaybbsYO8mhP9ekyt3fx4Dlhd6EdvaPz7a841viyq9LNQRnPEgcUnto36RevWKT2U4P8GEyY fqHbaNP8bSkS2jaXenlCN0zXDj+4Z4kz4mahIex4vNPY8J2ylshyAhJ1zE0Y3a28/a0dOY0tP8Q iGVpG60IIOq3c+37SQSr42vebt6DJZA0m7oRSlRe9pln2NMhlVpc0CHnWT9rn4zJrozlx9mf+A0 OwPJ8EfYYPoSmLtEl6O4XPemHq4zTnPfLgJLP3swrpfdLZ0jMe0y3X79a2xItr4+FSQ= 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-hwmon@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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..56a8ee13ec2a9f8e7127815a530d2a254a45bf55 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 *data, enum hwmon_sensor_type const struct cros_ec_hwmon_priv *priv = data; if (type == 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 == hwmon_temp) { if (priv->temp_sensor_names[channel]) return 0444; @@ -194,10 +201,10 @@ static int cros_ec_hwmon_write(struct device *dev, enum hwmon_sensor_types type, static const struct hwmon_channel_info * const cros_ec_hwmon_info[] = { 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,