From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2D8FF3CF68D for ; Mon, 16 Mar 2026 17:07:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773680843; cv=none; b=MahUWB1apNyTiWgrVFM9swe5WOxCqT+wsJg0yye6ze0YJa1EPeIGqOYewcTECID+7/9TrkmvE4mmvFK7HMHGej36cW4pMxP5LjKrDxEkbJnLTfy57b8MIhV+T+nQ/Y72A3aRy25PW6v1dBhQ19lkySZseJiqkbZ7+OP8G7OD84Q= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773680843; c=relaxed/simple; bh=3Mogh2U0/iA6Ose2HBYTR0xZeYXsqplF/lZI95BMgXI=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=tkmRGp482gwAlzzZWSBp1RWSydwtHY0mkvWU4xQW+u0bVL00hxFbdGuQg0QiFKZMZKKrpKkc7yZGGqufebEU8+sLCg2gdnvVR4kV4f/fw09pR04hGmoG3Fl2hLBRkSlDcLZNbf3oHx7UL+CGn5HjWi13lbwOjbK54C6URFOEjs4= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=PpJVhDc0; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=NlAsuBo0; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="PpJVhDc0"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="NlAsuBo0" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62GEgC9O3295692 for ; Mon, 16 Mar 2026 17:07:21 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= HDEvxOZLlq6f31hKlp51kGtXwhLqo+UTN8SDiRaUXi0=; b=PpJVhDc0gQs3b6i6 ZR1lE0tgnjfugzPTJ+feZb5ty2PZloJrIoHci6DLhH9O1ytzb3XF5J/9mB2AhDpg Hcpbt2b6FnnhrtelKCrOP2zmch2iiPGJtVLZf2mAi2sEFEB8S/rGeKkrbiVwhWPx ZSLSbFb4LQ37Dk72Ij2ny7lAObCL9ZyvZILGFUOFXQl8NXNqAmFXRVex2z14FaPs t8oGnLaBTZV3QqqtyH65kHD7gy8biGDVgkxXSYCaRpeenYUT+CvHipd2cesplN26 wbHYmhb+Zs/GzGaRpLSd4R6aCD3dKlvg+XsG7BOO1z7erDx9HAQoPr/1/OlOeZVE e/63FQ== Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cxkuy0hgy-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 16 Mar 2026 17:07:20 +0000 (GMT) Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-2b0554888cfso22277055ad.3 for ; Mon, 16 Mar 2026 10:07:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1773680840; x=1774285640; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=HDEvxOZLlq6f31hKlp51kGtXwhLqo+UTN8SDiRaUXi0=; b=NlAsuBo0Uy5e7y3tipr0G7Jb5e68MsHomkfShkEnNvn/Qnq1nBw5QihgB0vnJDaqdZ +LcseYi10F9tn7pDM531swj5oJWFTtM/E0L9gXp2HWc6UToUu7RjikqjtpulsL+xS+oD 2ivg+ymWsqmPW1xRpN9zIjJkFmRzww7Cw0f2yqZq8z+GHwx/m8LdSO0kkd0KECjYmDSP 2hNDcDmTLqQinTBwL6DVxiCMZ6ZQhNuhsd2Uy7dkGGqUWE2HQf3E2vW1oO3QLgI+tiiL U+h2VOboQS/tz+kOmPm4YSEOVrUAuxj7NI0lZmxZzT0NI+S1msH/f8qV5T43YOVPWb7W HmRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773680840; x=1774285640; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=HDEvxOZLlq6f31hKlp51kGtXwhLqo+UTN8SDiRaUXi0=; b=gAD6IM8cRJcDQebKA/zi7JyT0JshfLWO6y5Bwf4lsXX4W0jthTRAOvqs4FYtXA3jCK bX2sIU9qaZxNu85PodnW+zATVFizRYLHLPBmfsTSQptRZj5Rx5ODDShRpND3Eoe8efwI S1/924ijr1tKjMcCetoWVdqHRI3sIE8geZkJXoyVWXAjlPKy6d7jSUyxh+7BMmUc83QT 1cjzq3VxxIVebb8RM/qW2SMP1SoRYyjYcYJ8Iesndvrh2wtxTeKmAR+rmOu71kmpbh4k Qs5VevWBTlbCrw+S3P56eOw43UO4RUlhAtzX87uGzDpPK+VHUsApHSZ5vATGA9zr+eWv FN8A== X-Forwarded-Encrypted: i=1; AJvYcCVEm9iJGjmorwZkXNnFudWh0/2bZCHnmcroioMHqCqge5InlmimkMNBfah+XymUvUnm9VASCEZsaUYJ7PA=@vger.kernel.org X-Gm-Message-State: AOJu0Yw4XT5SVWCy/IDzqQfT8bjs9VqxKm079piQl26UVO0t+8Kw377B e28+2rk/E4GFgqzGCsw0Ryununla3c0mE8KKCeI9xQe8vWxYDq+IEBDDUu5XP9Qsx/qrjmgZ7oM 6hrL8Tvh7dpkJh1akS7nZsI8xHGplxeiHkFT3L87qhQ3oywoK2rtQwIg5+nYDKDa7/dc= X-Gm-Gg: ATEYQzxc2XXTphVZfbJMRs+AlaXyq0v2FJ/trd4WBDL0kSzhuLzSCIXTEvGulHmjODA U5uVjrD7lOqP8qMBK5qcXzQN/SDEz39+F6iPdAJz7oKyrgi81eRYcgqGOFokwYRBIrZsDGyRoQ8 3xGKHXgn3DpEOWspt2zUHFFoV6hKg/sEjc35dfzyypLyU0Mkf0lvuHSiNoc9MAm9MRMe0Bha6qU wGw4IQCy0T+2cnma9sgcpqLrL2x58p4iQzHnK2IC4lA6v9A2jrNwM8s7CMdXQ7TYF3uxyqMLv27 3Lda1eboPHxbvAkf5AkjM+Mcc+fJhipv/xQXVyMl8PbPAJdc4jg8Fl49I39BeKU+RJ6A1Tvxhjm v3KpaXilVL6fBxsiVe6GfJg7vNMvqgaLTeJUjfNPchQ== X-Received: by 2002:a17:902:d54b:b0:2ae:8288:9122 with SMTP id d9443c01a7336-2aeca94050dmr155868435ad.5.1773680839811; Mon, 16 Mar 2026 10:07:19 -0700 (PDT) X-Received: by 2002:a17:902:d54b:b0:2ae:8288:9122 with SMTP id d9443c01a7336-2aeca94050dmr155867825ad.5.1773680839040; Mon, 16 Mar 2026 10:07:19 -0700 (PDT) Received: from [192.168.1.8] ([101.0.62.48]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2aece8233e1sm112823905ad.71.2026.03.16.10.07.14 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 16 Mar 2026 10:07:18 -0700 (PDT) Message-ID: <417e71b5-1956-4841-bfb7-4116d20f3dc5@oss.qualcomm.com> Date: Mon, 16 Mar 2026 22:37:12 +0530 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v4 2/5] platform: arm64: Add driver for EC found on Qualcomm reference devices To: Konrad Dybcio , Sibi Sankar , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Hans de Goede , =?UTF-8?Q?Ilpo_J=C3=A4rvinen?= , Bryan O'Donoghue , Bjorn Andersson , Konrad Dybcio Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, platform-driver-x86@vger.kernel.org, Maya Matuszczyk References: <20260313-v04-add-driver-for-ec-v4-0-ca9d0efd62aa@oss.qualcomm.com> <20260313-v04-add-driver-for-ec-v4-2-ca9d0efd62aa@oss.qualcomm.com> <6eb3a173-c364-431f-93e4-7bbb7a32431e@oss.qualcomm.com> Content-Language: en-US From: Anvesh Jain P In-Reply-To: <6eb3a173-c364-431f-93e4-7bbb7a32431e@oss.qualcomm.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Authority-Analysis: v=2.4 cv=br1BxUai c=1 sm=1 tr=0 ts=69b838c8 cx=c_pps a=IZJwPbhc+fLeJZngyXXI0A==:117 a=+2ldRcY3HLWus9HqRSG52w==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=EUspDBNiAAAA:8 a=pGLkceISAAAA:8 a=tYnmyoo4TD5ZbBYe2wsA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=uG9DUKGECoFWVXl0Dc02:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzE2MDEzMyBTYWx0ZWRfX9qUMtj125dFR ue0hLbsd1UioFApd68Qkv3B9a7snaWtSo97+6QQn6MMUoMgMmTD/X6EWlCXwDM3HvD16ApBYStY 2nBFKfS9YNVkfggLrEZCoHNfFVn6tSQg/1paMCPA22/HoYGVriVUHFaKldv4swv5k0FvoI8VG48 6YSVliDd4TkL5fYQF7G3J1MuVIW8fOl9J/jozLxrH2PVbbu1ojMahX9ef5g+QFq7+A8MtbkMUuU qaOxsvBkuKQ0L/ry4sJy8dTdpCmYD4jyoZKtSpsOvKE6alNcI3KH6yxw3ZgW2nt0aQ1nlRQZNjq QVVqj+fWSRQLlNBkuAkixqHM7tfLcNsuVyieJYVlQ8SDA+jpJyazy9F0H4wm3QD9tESx3hdKQ6p 9VhUCKhNL5BE4OFHcT6dn9RI0sklXZcEh4jYTX+wUSLrxR6hxoN1UswvvVMcviD6sJuxYJ8PuYy oIEimptcYxNe5oErkLg== X-Proofpoint-ORIG-GUID: noUDPE6bLUzhPL3N_OKrEdLDBxIhmuLC X-Proofpoint-GUID: noUDPE6bLUzhPL3N_OKrEdLDBxIhmuLC X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-16_04,2026-03-16_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 priorityscore=1501 phishscore=0 clxscore=1015 impostorscore=0 suspectscore=0 lowpriorityscore=0 adultscore=0 spamscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603160133 On 3/16/2026 3:57 PM, Konrad Dybcio wrote: > On 3/13/26 11:29 AM, Anvesh Jain P wrote: >> From: Sibi Sankar >> >> Add Embedded controller driver support for Hamoa/Purwa/Glymur qualcomm >> reference boards. It handles fan control, temperature sensors, access >> to EC state changes and supports reporting suspend entry/exit to the >> EC. >> >> Co-developed-by: Maya Matuszczyk >> Signed-off-by: Maya Matuszczyk >> Signed-off-by: Sibi Sankar >> Co-developed-by: Anvesh Jain P >> Signed-off-by: Anvesh Jain P >> --- > > [...] > >> + * ------------------------------------------------------------------------------ >> + * | Offset | Name | Description | >> + * ------------------------------------------------------------------------------ >> + * | 0x00 | Byte count | Number of bytes in response | >> + * | | | (exluding byte count) | >> + * ------------------------------------------------------------------------------ >> + * | 0x02 (LSB) | EC Thermal | Bit 0-1: Number of fans | >> + * | 0x3 | Capabilities | Bit 2-4: Type of fan | >> + * | | | Bit 5-6: Reserved | >> + * | | | Bit 7: Data Valid/Invalid | >> + * | | | (Valid - 1, Invalid - 0) | >> + * | | | Bit 8-15: Thermistor 0 - 7 presence | >> + * | | | (0 present, 1 absent) | > ^ huh?? > > I see that it's not currently used, but I think flipping these > bits would make it easier to comprehend down the line > > [...] > Thanks for taking time to review the series The 0=present encoding was taken directly from the EC firmware spec, but on closer inspection this appears to be a typo in the spec — the correct behavior is 1=present, 0=absent. Will update the comment in v5. >> + default: >> + dev_dbg(dev, "Unknown EC event: %d\n", val); > > Maybe dev_notice(), this would be good to log > Agreed, will switch to dev_notice for unknown EC events in v5. >> + break; >> + } >> + >> + return IRQ_HANDLED; >> +} >> + >> +static int qcom_ec_sci_evt_control(struct device *dev, bool enable) >> +{ >> + struct i2c_client *client = to_i2c_client(dev); >> + u8 control = enable ? 1 : 0; >> + int ret; >> + >> + ret = i2c_smbus_write_byte_data(client, EC_SCI_EVT_CONTROL_CMD, control); >> + >> + return ret; > > return i2c_smbus_write_byte_data(client, EC_SCI_EVT_CONTROL_CMD, !!enable); > > [...] > Agreed, will simplify in v5 >> +static int qcom_ec_resume(struct device *dev) >> +{ >> + struct i2c_client *client = to_i2c_client(dev); >> + int ret; >> + >> + ret = i2c_smbus_write_byte_data(client, EC_MODERN_STANDBY_CMD, EC_MODERN_STANDBY_ENTER); >> + >> + return ret; > > In a pattern like this, unless you have some error checking/logging to > do, you can just return directly > > [...] > Agreed, will simplify in v5. >> + ret = qcom_ec_read_fw_version(dev); >> + if (ret < 0) >> + return dev_err_probe(dev, ret, "Failed to read ec firmware version\n"); > > "EC" > > [...] > Agreed, will fix in v5 >> + for (i = 0; i < ec->thermal_cap.fan_cnt; i++) { >> + struct qcom_ec_cooling_dev *ec_cdev = &ec->ec_cdev[i]; >> + char name[EC_FAN_NAME_SIZE]; >> + >> + snprintf(name, EC_FAN_NAME_SIZE, "qcom_ec_fan_%d", i); >> + ec_cdev->fan_id = i + 1; >> + ec_cdev->parent_dev = dev; >> + >> + ec_cdev->cdev = thermal_cooling_device_register(name, ec_cdev, >> + &qcom_ec_thermal_ops); >> + if (IS_ERR(ec_cdev->cdev)) { >> + dev_err_probe(dev, PTR_ERR(cdev), >> + "Thermal cooling device registration failed\n"); >> + ret = -EINVAL; >> + goto unroll_cooling_dev; >> + } >> + } >> + >> + return 0; >> + >> +unroll_cooling_dev: > > For those cases, one would usually add add a devres-managed version of > the helper (devm_foo_bar()), removing the need to repeat this in the > driver remove callback as well > > Konrad Agreed, will switch to devm_thermal_of_cooling_device_register in v5 -- Best Regards, Anvesh