From nobody Tue Sep 29 05:34:25 2026 Received: from mail-qv1-f42.google.com (mail-qv1-f42.google.com [209.85.219.42]) (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 1A75E4334A0 for ; Tue, 11 Aug 2026 23:39:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786491596; cv=none; b=QcYAMqAV3eqNJjlh9WJAGFeN8Ay4i2mPjvOf39Um4vMIYfIf2u/0US+usq6+m+LA23PthcKLiIE3cHhmd4xsVTLH6VII++YUxv4NMjPYJQjb8ipD3T2r0EMChBSAU0ZdgLnvRci6Yl9aovBS+D92X/uyJapCX6k7JbCxtYNfCmE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786491596; c=relaxed/simple; bh=TQ8cIteOUoh0RN9lFPHnaSOVGs8QySDAURgXCYGyLUs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=h3xo/YejMweJo5jPA5JXFbG0fb/+mRwe4Yg6+6DA8O4zUTMHueWjBUzxGXC/mLL2OD/80UnVvP8DQFw2oGvnUisgSAwEgKQOzUD46nWxR2jBUZGsCh9NGmMhawcFh2+Azngri/I4KGfAqAu499oqXjed9ricfY04YWf+o4AP6Fc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arimil.com; spf=pass smtp.mailfrom=arimil.com; dkim=pass (2048-bit key) header.d=arimil.com header.i=@arimil.com header.b=Y5wbjcwL; arc=none smtp.client-ip=209.85.219.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arimil.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arimil.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=arimil.com header.i=@arimil.com header.b="Y5wbjcwL" Received: by mail-qv1-f42.google.com with SMTP id 6a1803df08f44-8efbafa1bacso2289256d6.1 for ; Tue, 11 Aug 2026 16:39:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arimil.com; s=google; t=1786491594; x=1787096394; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=uxycei7+Mdbc9lEQ9ESQixLANLMD+YSTOeLWke3pkoY=; b=Y5wbjcwLR7n/kmAnAVNpFnb/AWZYjXPmXxAHBOBaHJCTtyTH2JxbLeSc54LZcjRNMo /ZQkFq5arRoKzEZHZ5ffkCltL3VxFhqLq0zL9/OELtVkTcZrlhBmVKsB6E9zI9k3xz8W qVuDNjEQXubMU4AeU4lIat4dImkXzn9th8LQQ7yQr9S6fzM5o8iiRDQ0rcqr7NwpotJH Lc1cuOon3/FyLAV3mA+vBlxmKQNEh/aIzNAMkiR+g/xEqEn2Zy4vh/2tPAIzIjO1t8bE VhRjVmk36910UYYWpAvX2leWk5sQ1Gn2LCDI8LnEZeAf26ZBAAlfxAJzMR2U+o17frgH z4zw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786491594; x=1787096394; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=uxycei7+Mdbc9lEQ9ESQixLANLMD+YSTOeLWke3pkoY=; b=KwAW0jSwOOVxxULKqkxGZeug8JvbAJUoH/2RBMyHk1b9VfJY+lrdWzDxmzvtLRaxWo lkXqVX/vh/bq67rFmmQtj6LiCvB+Dk48S14DXAj4W4swab0KXu2a5PgrqS94Lpa4thyn X7iTUeuzd9Q+2Rtxb2jh64djuqZ3pwmd5JhglxKI3pGuJMP6T9ZAj5DDnVtDPOYeLH0e +I3A93Oe6TqGqajm93JQKCyMuZH40Xbzez4zt5dhr4uXbnkpyadn1y8U2xmxoFxVScUM l9J0ZeQV3VxPMyu5Qr0zUz6GgICEQcMR2r31GMnaBDhCYjU3/EQBQAAUJQJeJWhYogfp PSpQ== X-Forwarded-Encrypted: i=1; AHgh+RoCm1qgkJzIYAWmsxhRS+sHlio4MWAc8L5RV1iZb2LRNsOWm69QDp4fZ9/JWO9z4Oy+d8CACkl8y5RP4pU=@vger.kernel.org X-Gm-Message-State: AOJu0YzFemwUGAgRfX6m5zbC18MwcZY2n5rtmnIm2l/yrkblGNzLujFm JQZ1cnhBlZdu3hF5nXsUNA7Wl1+pNISYNSvOziA2oz62A9nrGjRQS6M9z8LZOnnr7Os= X-Gm-Gg: AR+sD11wvb4JYqz0bIOaAZh/SiQSMOOQzbxagbV3U+d10QCHl/hkmT6lunK0Cvwm1A3 0fO+7nH41DmCxyga2C5wAyGCpYAW+Q5PWSwg7Kg05tGt0E0BaDTTJn64eaaar84Vx2xJ+Jx7ugE TysoJDi5g01Vt/pO7ncz/yIjVC6uWxdcaS6plgCFfU7apeEAZxNMB2PMx9erklJf/6aDHwKfGvk tGWkYcHd1GGgyWqTYi83l6pyKou1e8JkE9ZWJmWEieBSwf2QNfoil6fC7AKxh1kR3kgYjDy6YmV UyjynlMYEKlsjKQh5AdaWWGSUdGigyeCk3K5Ho1ZgF6IvIvZLj4rO5F942pbI+CIlHbNX3tw2hu K0ccTeNMmw/JgPS/cFSGZGKvFDC7xtzGli4j3q9Fv4HQRxQ8R12NDjKwZC8VVHqRIUT7Jpc1/3+ 6rfB8d6yrYCC6KhVnrR8cwAMFXZ6VppbQyrZqmX1FbqX2bZXV1WOu0X2U7pV3ytWSsp2Uq2e8kb 8bCsRzqJR1X+m2LIEWr3Ai8qwcOBcI9qw== X-Received: by 2002:a05:6214:2d45:b0:90a:3291:7ba3 with SMTP id 6a1803df08f44-90a6ff1cea0mr8295346d6.5.1786491594021; Tue, 11 Aug 2026 16:39:54 -0700 (PDT) Received: from camelot.arimil.com (24.229.171.193.res-cmts.sm3.ptd.net. [24.229.171.193]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-90a6c3c1d73sm9607256d6.34.2026.08.11.16.39.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Aug 2026 16:39:52 -0700 (PDT) From: Arie Miller To: Guenter Roeck Cc: Aleksa Savic , Will Smith , Jonathan Corbet , Shuah Khan , linux-hwmon@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, Arie Miller Subject: [PATCH v2 1/4] hwmon: (asus_rog_ryujin) Add per-device configuration Date: Tue, 11 Aug 2026 19:39:40 -0400 Message-ID: <20260811233943.319729-2-renari@arimil.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260811233943.319729-1-renari@arimil.com> References: <20260811233943.319729-1-renari@arimil.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Move model-specific report offsets and capabilities into a device information structure. This prepares the driver for coolers which use a different report layout or do not include the external fan controller, while preserving the existing Ryujin II 360 behavior. Assisted-by: Codex:gpt-5.6-sol sparse Signed-off-by: Arie Miller --- drivers/hwmon/asus_rog_ryujin.c | 72 ++++++++++++++++++++++----------- 1 file changed, 49 insertions(+), 23 deletions(-) diff --git a/drivers/hwmon/asus_rog_ryujin.c b/drivers/hwmon/asus_rog_ryuji= n.c index 10a1f5aca988..b86b87e33615 100644 --- a/drivers/hwmon/asus_rog_ryujin.c +++ b/drivers/hwmon/asus_rog_ryujin.c @@ -18,15 +18,25 @@ #define USB_VENDOR_ID_ASUS_ROG 0x0b05 #define USB_PRODUCT_ID_RYUJIN_AIO 0x1988 /* ASUS ROG RYUJIN II 360 */ =20 +struct rog_ryujin_device_info { + u8 temp_offset; + u8 pump_speed_offset; + u8 fan_speed_offset; + u8 duty_channel; + bool has_controller; +}; + +static const struct rog_ryujin_device_info rog_ryujin_ii_360_info =3D { + .temp_offset =3D 3, + .pump_speed_offset =3D 5, + .fan_speed_offset =3D 7, + .duty_channel =3D 0, + .has_controller =3D true, +}; + #define STATUS_VALIDITY 1500 /* ms */ #define MAX_REPORT_LENGTH 65 =20 -/* Cooler status report offsets */ -#define RYUJIN_TEMP_SENSOR_1 3 -#define RYUJIN_TEMP_SENSOR_2 4 -#define RYUJIN_PUMP_SPEED 5 -#define RYUJIN_INTERNAL_FAN_SPEED 7 - /* Cooler duty report offsets */ #define RYUJIN_PUMP_DUTY 4 #define RYUJIN_INTERNAL_FAN_DUTY 5 @@ -81,6 +91,7 @@ static const char *const rog_ryujin_speed_label[] =3D { struct rog_ryujin_data { struct hid_device *hdev; struct device *hwmon_dev; + const struct rog_ryujin_device_info *info; /* For reinitializing the completions below */ spinlock_t status_report_request_lock; struct completion cooler_status_received; @@ -112,6 +123,8 @@ static int rog_ryujin_pwm_to_percent(long val) static umode_t rog_ryujin_is_visible(const void *data, enum hwmon_sensor_types type, u32 attr, int channel) { + const struct rog_ryujin_data *priv =3D data; + switch (type) { case hwmon_temp: switch (attr) { @@ -123,6 +136,8 @@ static umode_t rog_ryujin_is_visible(const void *data, } break; case hwmon_fan: + if (channel >=3D 2 && !priv->info->has_controller) + return 0; switch (attr) { case hwmon_fan_label: case hwmon_fan_input: @@ -132,6 +147,8 @@ static umode_t rog_ryujin_is_visible(const void *data, } break; case hwmon_pwm: + if (channel >=3D 2 && !priv->info->has_controller) + return 0; switch (attr) { case hwmon_pwm_input: return 0644; @@ -198,12 +215,14 @@ static int rog_ryujin_get_status(struct rog_ryujin_da= ta *priv) if (ret < 0) return ret; =20 - /* Retrieve controller status (speeds) */ - ret =3D - rog_ryujin_execute_cmd(priv, get_controller_speed_cmd, GET_CMD_LENGTH, - &priv->controller_status_received); - if (ret < 0) - return ret; + if (priv->info->has_controller) { + /* Retrieve controller status (speeds) */ + ret =3D rog_ryujin_execute_cmd(priv, get_controller_speed_cmd, + GET_CMD_LENGTH, + &priv->controller_status_received); + if (ret < 0) + return ret; + } =20 /* Retrieve cooler duty */ ret =3D @@ -212,12 +231,14 @@ static int rog_ryujin_get_status(struct rog_ryujin_da= ta *priv) if (ret < 0) return ret; =20 - /* Retrieve controller duty */ - ret =3D - rog_ryujin_execute_cmd(priv, get_controller_duty_cmd, GET_CMD_LENGTH, - &priv->controller_duty_received); - if (ret < 0) - return ret; + if (priv->info->has_controller) { + /* Retrieve controller duty */ + ret =3D rog_ryujin_execute_cmd(priv, get_controller_duty_cmd, + GET_CMD_LENGTH, + &priv->controller_duty_received); + if (ret < 0) + return ret; + } =20 priv->updated =3D jiffies; return 0; @@ -289,6 +310,7 @@ static int rog_ryujin_write_fixed_duty(struct rog_ryuji= n_data *priv, int channel return ret; =20 memcpy(set_cmd, set_cooler_duty_cmd, SET_CMD_LENGTH); + set_cmd[2] =3D priv->info->duty_channel; =20 /* Cooler duties are set as 0-100% */ val =3D rog_ryujin_pwm_to_percent(val); @@ -394,10 +416,12 @@ static int rog_ryujin_raw_event(struct hid_device *hd= ev, struct hid_report *repo =20 if (data[1] =3D=3D RYUJIN_GET_COOLER_STATUS_CMD_RESPONSE) { /* Received coolant temp and speeds of pump and internal fan */ - priv->temp_input[0] =3D - data[RYUJIN_TEMP_SENSOR_1] * 1000 + data[RYUJIN_TEMP_SENSOR_2] * 100; - priv->speed_input[0] =3D get_unaligned_le16(data + RYUJIN_PUMP_SPEED); - priv->speed_input[1] =3D get_unaligned_le16(data + RYUJIN_INTERNAL_FAN_S= PEED); + priv->temp_input[0] =3D data[priv->info->temp_offset] * 1000 + + data[priv->info->temp_offset + 1] * 100; + priv->speed_input[0] =3D + get_unaligned_le16(data + priv->info->pump_speed_offset); + priv->speed_input[1] =3D + get_unaligned_le16(data + priv->info->fan_speed_offset); =20 if (!completion_done(&priv->cooler_status_received)) complete_all(&priv->cooler_status_received); @@ -476,6 +500,7 @@ static int rog_ryujin_probe(struct hid_device *hdev, co= nst struct hid_device_id return -ENOMEM; =20 priv->hdev =3D hdev; + priv->info =3D (const struct rog_ryujin_device_info *)id->driver_data; hid_set_drvdata(hdev, priv); =20 /* @@ -546,7 +571,8 @@ static void rog_ryujin_remove(struct hid_device *hdev) } =20 static const struct hid_device_id rog_ryujin_table[] =3D { - { HID_USB_DEVICE(USB_VENDOR_ID_ASUS_ROG, USB_PRODUCT_ID_RYUJIN_AIO) }, + { HID_USB_DEVICE(USB_VENDOR_ID_ASUS_ROG, USB_PRODUCT_ID_RYUJIN_AIO), + .driver_data =3D (kernel_ulong_t)&rog_ryujin_ii_360_info }, { } }; =20 --=20 2.55.0 From nobody Tue Sep 29 05:34:25 2026 Received: from mail-qv1-f44.google.com (mail-qv1-f44.google.com [209.85.219.44]) (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 7B02F439F87 for ; Tue, 11 Aug 2026 23:39:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786491599; cv=none; b=qeLvwP/6tBD0Tz/O4AL3HMYtXWoPMLgYDy+rtejMxp9jLsbGvyfphcDE3sNjg/R//UHMuSHoiz6QmpWGtxaovnEwEJUsFBSg0RHxpNEZBHbTdarMcOgydcD1kOMj34Mqo1joul/cTlaXAQ4XP8NRp20oFLCoYhVPOKmdnrU4H9w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786491599; c=relaxed/simple; bh=FF9HXWxDTVLhUqX4glSZuOoqPBEcZsxC5l1oGk6Ia1A=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=WvM0JEa43LrtoYyOPBWm7jeQQs2biqpkUr5BuJhzzCCSC9ISxghprbU8Y5gHrMC4o2fN9FqrPSFUiR9fE4ngQp0wj22EyY7nk/6SfN19MFCMdo2/Olf5iWURWlkQYsu1yndbcgwHr6WmNmjLWxPv6T2l+Ry3Ppb/PQlz8MCPv7c= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arimil.com; spf=pass smtp.mailfrom=arimil.com; dkim=pass (2048-bit key) header.d=arimil.com header.i=@arimil.com header.b=qsv68ErG; arc=none smtp.client-ip=209.85.219.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arimil.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arimil.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=arimil.com header.i=@arimil.com header.b="qsv68ErG" Received: by mail-qv1-f44.google.com with SMTP id 6a1803df08f44-9063b380982so4357416d6.0 for ; Tue, 11 Aug 2026 16:39:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arimil.com; s=google; t=1786491596; x=1787096396; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=txGUvPcweaXa+JQI6EskjE7GouVljVyZ+c/82mGniPY=; b=qsv68ErGS1+duev3DMrGvkWujj+Txk5an9hkJGNdUx4D5Bz7gcN5G0/Atq31LG0ARq 499X24JlwsVBuc00TSMrYPsJsNvLjdNftETVVniZ/qIVTK5PxUH0YqWr/hO6mKYMyuek Rik5VjY7CD2TSCMOJuq3Ko8kM+UCGRnFHvfonFu9sLLDJFaEzEO2K9AyAI5tanZBdjgn p60QSh0wxeymqBrDsUUkeKlGthQtzatBaLt1MRK8/ZO7qaFyZHmNGoG8BeOj6YFfF14R V0NVqvTuWQl6gfDatt0OmAtRMS0NONzLEGYCQGy/0rP83xC8Pgj0M+dZR+vhLjcSpcJk 0bJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786491596; x=1787096396; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=txGUvPcweaXa+JQI6EskjE7GouVljVyZ+c/82mGniPY=; b=BWKIsIHBVzsaIfEQaH5aKaoBbWyUyD7nRdPQV8jPdPLoSI9lTWDNQVJUmbMa6NEbMu OkftocxrkQJZGu/B8ef67+QG8wL120A1rjpRiZxcxwxQ1DttIT+VpMlCshWc3rEgKmCf MjMKVAXM0jHUgSe/uzXtd2hVsM1pgNr/kbRB64zs4RfkVJBPPAEd1yIP9NCuNnNoc6J9 fnWitdjitKUXSkaFjEhS7eOF5cZrnJ5+e/yURXzH/ieqCwE1D//XvnLFOUaiHRNlPTxB ZoENxayVTR+QCT3R2gGNnzZ+9cKzrqh/UwOg4W6uxmPuHue3+zUAuYRvU4WFEEuYfNwl y8Dg== X-Forwarded-Encrypted: i=1; AHgh+RqxfuiDz/9CQIMZjiJJgcKlc7E4Iq9bDz8E/p8VfoX4bfSGiRQH/ey5Tg8t0bRolvRT9mPYASX9zsCuvdQ=@vger.kernel.org X-Gm-Message-State: AOJu0YxPKotd+kpsrLLfzsZm8ihlcUF1+aUWfeBtjt4v00HKEKBmBY+c noZMFRn0Vu9wGH5+HhVq688K0EIgP8NhYPJ+M2hhL8KFWgi5E/kVVSJ0+quekAjZ1jg= X-Gm-Gg: AR+sD134An17/JM+F12EqOCU6mkT2dgwky06RXKVAUJ74Qp1Ius9NmrNemx7N+onH7g 77DQy7jCXxJ2fmmfMoFBt23uIVRdEoEEPEtrnV3cUi7prZpLXUZVVlnFVIZjvGK6z+fYwMJ07Qe ZLEsYPK+vVheFvn6MioV/MM3ecQvuQC+qmzG1toJNWmLZ7ptNfQlKzTBCiDZ1t/PbAuAUaQyRFg IXSNJqVDvEcHRWQmU1ooBTeRTMNH4qcPoDlS7WsOlm6EuWhWz2OAz/+9OwTzg/D/QMdI52vIxhm +bHerAFqPZHvSEgNK0fdMnDb3gEUTVhYiSUyoM6+tKNfyfqzEpv8EEmqupdG/r7Tfcv4nM5flL9 GGJKynjT/FJOQ+fs8/vUCdxw9o+b+J+rRsGvzs90/X6KGEla5OoMsy3h5VBRP+6pr17iJ0t/Df7 50O27FAqhICkwXQ8EHm3g26em0/ZXTuEh98Xp9O6sCS0e7xt7Ox2z49cR589vfwb8WmWwQtTNg7 zuXs9K4ByjDS/hXMz1ta9Jg3fcOcuqZ+w== X-Received: by 2002:a05:6214:2e41:b0:8cc:f074:95e with SMTP id 6a1803df08f44-90a701d8216mr8088466d6.30.1786491596359; Tue, 11 Aug 2026 16:39:56 -0700 (PDT) Received: from camelot.arimil.com (24.229.171.193.res-cmts.sm3.ptd.net. [24.229.171.193]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-90a6c3c1d73sm9607256d6.34.2026.08.11.16.39.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Aug 2026 16:39:55 -0700 (PDT) From: Arie Miller To: Guenter Roeck Cc: Aleksa Savic , Will Smith , Jonathan Corbet , Shuah Khan , linux-hwmon@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, Arie Miller Subject: [PATCH v2 2/4] hwmon: (asus_rog_ryujin) Add ROG Ryujin III support Date: Tue, 11 Aug 2026 19:39:41 -0400 Message-ID: <20260811233943.319729-3-renari@arimil.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260811233943.319729-1-renari@arimil.com> References: <20260811233943.319729-1-renari@arimil.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The ROG Ryujin III uses different report offsets and a different cooler-duty channel from the Ryujin II. It also lacks the separate external fan controller supplied with the older model. Add model data and USB IDs for the Extreme and EVA Edition variants. Skip controller commands and hide the unavailable controller hwmon channels for these devices. Update the driver documentation, Kconfig text, and module description accordingly. Link: https://github.com/aleksamagicka/asus_rog_ryujin-hwmon/pull/9 Assisted-by: Codex:gpt-5.6-sol sparse Signed-off-by: Arie Miller --- Documentation/hwmon/asus_rog_ryujin.rst | 24 +++++++++++++----------- drivers/hwmon/Kconfig | 4 ++-- drivers/hwmon/asus_rog_ryujin.c | 18 ++++++++++++++++-- 3 files changed, 31 insertions(+), 15 deletions(-) diff --git a/Documentation/hwmon/asus_rog_ryujin.rst b/Documentation/hwmon/= asus_rog_ryujin.rst index 9f77da070022..cfdfe3712f19 100644 --- a/Documentation/hwmon/asus_rog_ryujin.rst +++ b/Documentation/hwmon/asus_rog_ryujin.rst @@ -6,6 +6,8 @@ Kernel driver asus_rog_ryujin Supported devices: =20 * ASUS ROG RYUJIN II 360 +* ASUS ROG RYUJIN III EXTREME +* ASUS ROG RYUJIN III EVA EDITION =20 Author: Aleksa Savic =20 @@ -16,10 +18,10 @@ This driver enables hardware monitoring support for the= listed ASUS ROG RYUJIN all-in-one CPU liquid coolers. Available sensors are pump, internal and ex= ternal (controller) fan speed in RPM, their duties in PWM, as well as coolant tem= perature. =20 -Attaching external fans to the controller is optional and allows them to be -controlled from the device. If not connected, the fan-related sensors will -report zeroes. The controller is a separate hardware unit that comes bundl= ed -with the AIO and connects to it to allow fan control. +The RYUJIN II includes a separate external fan controller. Attaching fans = to +the controller is optional and allows them to be controlled from the devic= e. +If not connected, the controller-related sensors will report zeroes. The +RYUJIN III does not expose these controller channels. =20 The addressable LCD screen is not supported in this driver and should be controlled through userspace tools. @@ -33,15 +35,15 @@ supports hot swapping. Sysfs entries ------------- =20 -=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D fan1_input Pump speed (in rpm) fan2_input Internal fan speed (in rpm) -fan3_input External (controller) fan 1 speed (in rpm) -fan4_input External (controller) fan 2 speed (in rpm) -fan5_input External (controller) fan 3 speed (in rpm) -fan6_input External (controller) fan 4 speed (in rpm) +fan3_input External (controller) fan 1 speed (in rpm, RYUJIN II only) +fan4_input External (controller) fan 2 speed (in rpm, RYUJIN II only) +fan5_input External (controller) fan 3 speed (in rpm, RYUJIN II only) +fan6_input External (controller) fan 4 speed (in rpm, RYUJIN II only) temp1_input Coolant temperature (in millidegrees Celsius) pwm1 Pump duty pwm2 Internal fan duty -pwm3 External (controller) fan duty -=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D +pwm3 External (controller) fan duty (RYUJIN II only) +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig index 43418633e2e8..81a9a1d40eec 100644 --- a/drivers/hwmon/Kconfig +++ b/drivers/hwmon/Kconfig @@ -293,11 +293,11 @@ config SENSORS_ASC7621 will be called asc7621. =20 config SENSORS_ASUS_ROG_RYUJIN - tristate "ASUS ROG RYUJIN II 360 hardware monitoring driver" + tristate "ASUS ROG RYUJIN hardware monitoring driver" depends on HID help If you say yes here you get support for the fans and sensors of - the ASUS ROG RYUJIN II 360 AIO CPU liquid cooler. + supported ASUS ROG RYUJIN II and III AIO CPU liquid coolers. =20 This driver can also be built as a module. If so, the module will be called asus_rog_ryujin. diff --git a/drivers/hwmon/asus_rog_ryujin.c b/drivers/hwmon/asus_rog_ryuji= n.c index b86b87e33615..5bc60c6036de 100644 --- a/drivers/hwmon/asus_rog_ryujin.c +++ b/drivers/hwmon/asus_rog_ryujin.c @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0+ /* - * hwmon driver for Asus ROG Ryujin II 360 AIO cooler. + * hwmon driver for Asus ROG Ryujin AIO coolers. * * Copyright 2024 Aleksa Savic */ @@ -17,6 +17,8 @@ =20 #define USB_VENDOR_ID_ASUS_ROG 0x0b05 #define USB_PRODUCT_ID_RYUJIN_AIO 0x1988 /* ASUS ROG RYUJIN II 360 */ +#define USB_PRODUCT_ID_RYUJIN_III_EXTREME 0x1bcb +#define USB_PRODUCT_ID_RYUJIN_III_EVA 0x1ade =20 struct rog_ryujin_device_info { u8 temp_offset; @@ -34,6 +36,14 @@ static const struct rog_ryujin_device_info rog_ryujin_ii= _360_info =3D { .has_controller =3D true, }; =20 +static const struct rog_ryujin_device_info rog_ryujin_iii_info =3D { + .temp_offset =3D 5, + .pump_speed_offset =3D 7, + .fan_speed_offset =3D 10, + .duty_channel =3D 1, + .has_controller =3D false, +}; + #define STATUS_VALIDITY 1500 /* ms */ #define MAX_REPORT_LENGTH 65 =20 @@ -573,6 +583,10 @@ static void rog_ryujin_remove(struct hid_device *hdev) static const struct hid_device_id rog_ryujin_table[] =3D { { HID_USB_DEVICE(USB_VENDOR_ID_ASUS_ROG, USB_PRODUCT_ID_RYUJIN_AIO), .driver_data =3D (kernel_ulong_t)&rog_ryujin_ii_360_info }, + { HID_USB_DEVICE(USB_VENDOR_ID_ASUS_ROG, USB_PRODUCT_ID_RYUJIN_III_EXTREM= E), + .driver_data =3D (kernel_ulong_t)&rog_ryujin_iii_info }, + { HID_USB_DEVICE(USB_VENDOR_ID_ASUS_ROG, USB_PRODUCT_ID_RYUJIN_III_EVA), + .driver_data =3D (kernel_ulong_t)&rog_ryujin_iii_info }, { } }; =20 @@ -602,4 +616,4 @@ module_exit(rog_ryujin_exit); =20 MODULE_LICENSE("GPL"); MODULE_AUTHOR("Aleksa Savic "); -MODULE_DESCRIPTION("Hwmon driver for Asus ROG Ryujin II 360 AIO cooler"); +MODULE_DESCRIPTION("Hwmon driver for Asus ROG Ryujin AIO coolers"); --=20 2.55.0 From nobody Tue Sep 29 05:34:25 2026 Received: from mail-qt1-f177.google.com (mail-qt1-f177.google.com [209.85.160.177]) (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 A6131439F96 for ; Tue, 11 Aug 2026 23:39:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786491601; cv=none; b=kDLQvWk6lkSgc9pm3jGCoUHgAsbYiVT7BpXtOuI+P76ks6vDLYoaK8v5QEaP1aaNOkBfyV/TMXXbKoBYili38YD6qEuMD7R+2urVA+pLr/yyoHllkJfQAoYT/AB7jSTxs3ZH+VjNx7oEWBymw6wTkmjzRk/5P54ZdOtCiJCZ3aM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786491601; c=relaxed/simple; bh=k2RXB/lBpEZb0Xvy9dDABovXMTpTDSPEDT43rkEWuCw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=DpIGe/9ShclYDGCtFXY66vROIrHU5lQj1vQ3GJvYeeMnyUNYn/awcg9rPQg28v03Jw63h04yw2EFiS55lnCMPNKyQYjjCihYX5aMdx0i3f7up/lXR673V92KnGpd+ztxYNJQDX497708Fw+jIt1PM+wG8JbIRJYQOiXobbmG64s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arimil.com; spf=pass smtp.mailfrom=arimil.com; dkim=pass (2048-bit key) header.d=arimil.com header.i=@arimil.com header.b=g2RObF+9; arc=none smtp.client-ip=209.85.160.177 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arimil.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arimil.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=arimil.com header.i=@arimil.com header.b="g2RObF+9" Received: by mail-qt1-f177.google.com with SMTP id d75a77b69052e-517dc520840so4091731cf.3 for ; Tue, 11 Aug 2026 16:39:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arimil.com; s=google; t=1786491598; x=1787096398; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=rIhsby11fc8DrjdIUcLHC64tuvgWtC8uYK9JmHgOEVw=; b=g2RObF+9IKZ0uTyzZg6T0hPl3E/ekGz67U0tlcMwmEFHoro0c/CpEFumwDsU+MwqeP RMP+EznZJTDOwqFB+gos4RnM6JkeD7NLwMtmNbrlpH4J6vmG8DV2i+jx/GsTwIVTGnCv EQUWtWahZWt9Fqb5CxkMnRt/VmCFcK63PdJeFr3Lk+FNJsNsDQ0GDnJ00GOfiD4b++rJ sVtC/SLGcgMFvFmTQs/yUs/o/cm7zK7kpvmv9OvFzzKXIPeZQ99uAYi2K2TC2aKdiX4j t749GZF+1HSnI45sAU90PsHcy8wFZK5tfnxPT0VtvwU5C+2twhyGFZJxGTSRD1xNcF0E +1lw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786491598; x=1787096398; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=rIhsby11fc8DrjdIUcLHC64tuvgWtC8uYK9JmHgOEVw=; b=ci++9b21u9Mz2bGKsej5wgkzlslcYTAxPmXeBsu5lTI2CKAmS+boz5frRgB7tZA1BO 1AyRyrmvFFc+Is1lyIwTDZ3d6QuU8+T/8F4+Qfcv+/itX/UyihZHPDhmnHBkJUJvtL4o xfCEtqwjYhfK6zcSw216u/z3gh3Sd+uf0BP3CH1t32ld7sdEFT1uhqvxB34TzTH+q2eF BYP31sHjDL0N93iSDdcB9zygCbHNJfV6T1X52ibDVWo9zX2SdsMDCK9O/g6UNrjGbPkr 295vA/bqvGUbnC0p4/R6Bu3pajq1uL+qnPHkFLh/kfFFU0hyjAWfMG691c22on2qklGU 1iZg== X-Forwarded-Encrypted: i=1; AHgh+Rr33fh6tV6GbOEfDmviZmd/pwkS61L9KSi4JaEtdlasCT4YS3VkrS3Gg6VAOHUfc8cXI395t142vXl5qvM=@vger.kernel.org X-Gm-Message-State: AOJu0Yzk1goALJLxI/3VeUtuOJgRAgikkgOpVDmmOfvAAfIc2jEwxxh+ 3ttdcDO/nqRag0C/9ggSJOMCEppgy9KxrqWHHF2iGkO/zCzSAB61qyvvbDs503/0ch+vQNdv1Fh lq966P2hfjQ== X-Gm-Gg: AR+sD11qGQ+qzVpLskGI9J/8QKJDNr6nQRMwQ1KGAioXYiXnvkd+TUCwJ/hdOJX+jnp WDMibZx0lpRsA+6XH9jd2erdGNUt2Lb5yciaHduomKxfmcerosqFgNyS/ft4Uv3uoEfClAeX9g+ Uez91ovFpGX13lyNrYs81eMQDXkCPoiccVYb+VzV0XyYnu2lt+dqAvVx4HDN2gqZ/bdhwS/hNpz NIE0vpz9u7aWsF9i0xBF3uTwEwPayKIef+f/nInTfUIkPIzfunV8W924n9nT/ib83H8GWbjM7VK mTuYIB/Evd0edB1UM6W5IgFckMqRkQAsrl/BnCxthsKN853ffvcfVL8s/8CnjbGDsMLTcyywk+V pb2PWSvlepOGIfRpd6YFaYZtKGaDIm7oNPANmN9Gb7sq4xL0o0wkr9c3XJBVLwrAJzfolM3uHDn UyXGcEJc/GnHMPDXZFg+9bVJPvvVjWIlZYaLfGyPkzFx13nuUOO2ei3MVBNoZqQYkYJJPT9PIG9 y9VTLJP2kP2WTdNau5ocCHs/qCYjg7UgoB5Hn5QaQxa X-Received: by 2002:a05:622a:229c:b0:51e:aa39:4fca with SMTP id d75a77b69052e-52d6482ea4amr9766111cf.34.1786491598602; Tue, 11 Aug 2026 16:39:58 -0700 (PDT) Received: from camelot.arimil.com (24.229.171.193.res-cmts.sm3.ptd.net. [24.229.171.193]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-90a6c3c1d73sm9607256d6.34.2026.08.11.16.39.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Aug 2026 16:39:57 -0700 (PDT) From: Arie Miller To: Guenter Roeck Cc: Aleksa Savic , Will Smith , Jonathan Corbet , Shuah Khan , linux-hwmon@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, Arie Miller Subject: [PATCH v2 3/4] hwmon: (asus_rog_ryujin) Add ROG Ryujin III White Edition Date: Tue, 11 Aug 2026 19:39:42 -0400 Message-ID: <20260811233943.319729-4-renari@arimil.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260811233943.319729-1-renari@arimil.com> References: <20260811233943.319729-1-renari@arimil.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Will Smith The ROG Ryujin III White Edition uses the same report layout as the other supported Ryujin III variants. Add its USB device ID and list it in the driver documentation. The device was tested with the driver on the author's hardware. Link: https://github.com/aleksamagicka/asus_rog_ryujin-hwmon/pull/10 Signed-off-by: Will Smith Assisted-by: Codex:gpt-5.6-sol sparse Signed-off-by: Arie Miller --- Documentation/hwmon/asus_rog_ryujin.rst | 1 + drivers/hwmon/asus_rog_ryujin.c | 3 +++ 2 files changed, 4 insertions(+) diff --git a/Documentation/hwmon/asus_rog_ryujin.rst b/Documentation/hwmon/= asus_rog_ryujin.rst index cfdfe3712f19..b0d7ce8dd921 100644 --- a/Documentation/hwmon/asus_rog_ryujin.rst +++ b/Documentation/hwmon/asus_rog_ryujin.rst @@ -8,6 +8,7 @@ Supported devices: * ASUS ROG RYUJIN II 360 * ASUS ROG RYUJIN III EXTREME * ASUS ROG RYUJIN III EVA EDITION +* ASUS ROG RYUJIN III WHITE EDITION =20 Author: Aleksa Savic =20 diff --git a/drivers/hwmon/asus_rog_ryujin.c b/drivers/hwmon/asus_rog_ryuji= n.c index 5bc60c6036de..9b34c6e06bf7 100644 --- a/drivers/hwmon/asus_rog_ryujin.c +++ b/drivers/hwmon/asus_rog_ryujin.c @@ -19,6 +19,7 @@ #define USB_PRODUCT_ID_RYUJIN_AIO 0x1988 /* ASUS ROG RYUJIN II 360 */ #define USB_PRODUCT_ID_RYUJIN_III_EXTREME 0x1bcb #define USB_PRODUCT_ID_RYUJIN_III_EVA 0x1ade +#define USB_PRODUCT_ID_RYUJIN_III_WHITE 0x1ada =20 struct rog_ryujin_device_info { u8 temp_offset; @@ -587,6 +588,8 @@ static const struct hid_device_id rog_ryujin_table[] = =3D { .driver_data =3D (kernel_ulong_t)&rog_ryujin_iii_info }, { HID_USB_DEVICE(USB_VENDOR_ID_ASUS_ROG, USB_PRODUCT_ID_RYUJIN_III_EVA), .driver_data =3D (kernel_ulong_t)&rog_ryujin_iii_info }, + { HID_USB_DEVICE(USB_VENDOR_ID_ASUS_ROG, USB_PRODUCT_ID_RYUJIN_III_WHITE), + .driver_data =3D (kernel_ulong_t)&rog_ryujin_iii_info }, { } }; =20 --=20 2.55.0 From nobody Tue Sep 29 05:34:25 2026 Received: from mail-qt1-f182.google.com (mail-qt1-f182.google.com [209.85.160.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 67D7643BDD8 for ; Tue, 11 Aug 2026 23:40:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786491602; cv=none; b=hOs7MAptVtOQno91fj3huUmpFowKNfGUQkglrpH37KaDP370g7mhdoFDzmiKglgdN3HW2z4Pnb0GwKTqCdk91Hrj2tQi/LDDww3dVJAT+KrivmVt6OcWIjeOKMpR8YYpKGPi2GAP7XSh12mxxcKspMubWhwtJfIY4tubvTri+d8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786491602; c=relaxed/simple; bh=Y2tQ2LAFOFELFWmsRwpsf2BupcNmLOLP9gT8fTAeJFE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=o3argyumgwNqVvdy/6weifdbqEm2MndeOTVlEzSQ2/MzIETVxyurXD/5upVxIY/L/JB/RgAZi0fIG1xUqPSJtw9HUFaHamurJC05tfqdK6bFmnwYhU3Opejsathz5WWaNIUs815GDnETMJ/2cjowvxVNODOW6bkRg1m7Tzuy6sQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arimil.com; spf=pass smtp.mailfrom=arimil.com; dkim=pass (2048-bit key) header.d=arimil.com header.i=@arimil.com header.b=IIIWkKU0; arc=none smtp.client-ip=209.85.160.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arimil.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arimil.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=arimil.com header.i=@arimil.com header.b="IIIWkKU0" Received: by mail-qt1-f182.google.com with SMTP id d75a77b69052e-51c16ac21acso2994991cf.0 for ; Tue, 11 Aug 2026 16:40:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arimil.com; s=google; t=1786491600; x=1787096400; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=w1MCsG0t2IBPjIoESimgRCobkxCGoq4GsTF16kiHXqA=; b=IIIWkKU04upV6ORd6gyrv4lqjoqmFEaJznbykpnr6Xoh3MCKtyEq6ei8gkgzVD5ZDM Nn1Y67UeBG/Jjf3Z6kV8tt9uQwqBY0lhc3Y0/XauucZKk4WCYQ0MCvoo/WDwsUbgeAqG HtOcZHgBp54RNC3hpkZ6vckVnEG5kweldarvVtK0p9B8DguMB80E7T3bxVMRBAJ/6qCZ YBwTlOB1IMNoZIlbNhIzMtOQrq1q7G2UuwMfq4hrTb0K5yAnYty0vlqOfa92LVdsQ/rW 7rfQ4nBiiXUlzh/QCiFhzZ9bLNPwF4Da7w4s4aQrlLsgudW1hgAMCsyyrrUf/3c6168A 8kOQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786491600; x=1787096400; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=w1MCsG0t2IBPjIoESimgRCobkxCGoq4GsTF16kiHXqA=; b=EHBCPZcNDQXAh/XsEXCniVl3hcr5hxqlBAVAVUskSsUH9euPjF43VDyE+IgLMV0Zuo l/G5taxlr41m9wMsJxq8ldghwbRJhxSJDTCfA42ARjKhEjxCcWc/lOEx5qR5ystaC6co CNssajVgCQcYbI45PVDZgMEXNg4vN7FzAlGNAMNHHwBmsGiCG1ykm89rKWhmx/fiB7rv SmBg5FtM3spNB9bK4UsooFU6NXAu43pqDJQ2ea/OKLv7dXEvHBQgUFfoV4sv1xjzsGGI k31FcSgpceX3QYeNdutu3/lUrxz18Niamv5FhgKHbImGo0pE4o7oa8MnPHTPIPZ01rLp CXSg== X-Forwarded-Encrypted: i=1; AHgh+RqLi+ewqIV/8CKr/+inrhQXqfuI+eTrkmcez6daOb0HVTkabmbbn8Up8SEp6NY4h3IjFX1PYFCJE5nbybo=@vger.kernel.org X-Gm-Message-State: AOJu0YyB0UEPwhbCWSbzvR1tcx6VLdvRMNKXWdRsjtcMDueTN5xMLtBl FGIfYKM6XmPmKTubBeBBRBhbdIv8CDiUweyEzkTxTi40SQgS7zpgQmsJg4yu/fdY51Y= X-Gm-Gg: AR+sD11tlEufu0Y3YdXIy5+siytSYeXI1jhxqzg7/sWLQhY5bH0yktUJx+Ia93kt3Uy 2/57gt/DIXai1L2nGdNoxvcPaMkA2lFBXcPztg9wkS3fxmHflkh0h+AkxfPfZuvlTLKeD0/O7Ww oryqo8nPaCHkA1o6UPO6op3h3VCQY1zuU4mk9+Zw1j3CK0dUUL1CYqaRwm3uMAFFFf9rz4D6n2A W/CDbboaSqkjoYPwtMgkSrztM0FgWFP17/G5F3ODwmjDhOYa5PPflEfxlsgivGygVcU3uCTmbWv yNeHKqFo+KANUw7EF7RaQ6Qsr7RsGRpCSqJzsytcVWpMWOUsIE/jF0sPaKUVduMMfwFPhcGzNfX hmo06UE8pbBV6/6IYeCZyuJoxzAZvEfauG9BJ3kyB4E08ZoAxxos59CBBQjU0C4CAjuZKt+PnXf pM7GrCJEvPxcH/HPNUrh2UU4UwiJMNWfaCaOd8RO3zq1jrEbMrIdWltCTShQDtk6CATeLk4dYg6 ZExA3SNxYbep4+Utcro9fL4CVr7qnS0Nbg= X-Received: by 2002:a05:622a:2d5:b0:51c:44c:6ad with SMTP id d75a77b69052e-52d647a38f0mr8792311cf.21.1786491600264; Tue, 11 Aug 2026 16:40:00 -0700 (PDT) Received: from camelot.arimil.com (24.229.171.193.res-cmts.sm3.ptd.net. [24.229.171.193]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-90a6c3c1d73sm9607256d6.34.2026.08.11.16.39.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Aug 2026 16:39:59 -0700 (PDT) From: Arie Miller To: Guenter Roeck Cc: Aleksa Savic , Will Smith , Jonathan Corbet , Shuah Khan , linux-hwmon@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, Arie Miller Subject: [PATCH v2 4/4] hwmon: (asus_rog_ryujin) Handle missing driver data Date: Tue, 11 Aug 2026 19:39:43 -0400 Message-ID: <20260811233943.319729-5-renari@arimil.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260811233943.319729-1-renari@arimil.com> References: <20260811233943.319729-1-renari@arimil.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Handles an issue reported by Sashiko where an id could be missing driver_data. Link: https://lore.kernel.org/r/5a817284-a9f4-48b2-9f0f-802c5dc6963c@roeck-= us.net Assisted-by: Codex:gpt-5.6-sol sparse Signed-off-by: Arie Miller --- drivers/hwmon/asus_rog_ryujin.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/hwmon/asus_rog_ryujin.c b/drivers/hwmon/asus_rog_ryuji= n.c index 9b34c6e06bf7..702edb831394 100644 --- a/drivers/hwmon/asus_rog_ryujin.c +++ b/drivers/hwmon/asus_rog_ryujin.c @@ -506,6 +506,9 @@ static int rog_ryujin_probe(struct hid_device *hdev, co= nst struct hid_device_id struct rog_ryujin_data *priv; int ret; =20 + if (!id->driver_data) + return -EINVAL; + priv =3D devm_kzalloc(&hdev->dev, sizeof(*priv), GFP_KERNEL); if (!priv) return -ENOMEM; --=20 2.55.0