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 B051030EF8F for ; Tue, 23 Jun 2026 09:14:02 +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=1782206044; cv=none; b=E6Aq4O6ZCuRFgelP4bSOJ/3ObsVc0C/aFLMyu3F0nUScBTFe4c6NNoZ6HONXIBdKQw38aqrUD4hTOoeCBJPQIIUQ9NxwBw1rgHPr2zmTGQltRniZjN5aTWv38z/X+kdMoz5Jm34fzKBmf4S6oM3bkIw0HuMgLH74H2frF9Zlo40= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782206044; c=relaxed/simple; bh=cQKjFSMQE+XeYyiWc+t1WYLYYKCy4O9bStOxNKaGyvM=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=J29sJGUSVbnlTpUJCdKvasc52pQwztl8eSG0XwJ3oqQY3b7cUpk0FeZlhibwyNgGr98WIb2nXaUL3zDvCsQ2d4spFUoi76ySrsFdvk+upNOINz3mBeTASTWHhtwB9BYxLdr+11wiQePIzAMTtufxPlcEqdzaaOjYbmiHHrRwkAg= 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=A4mS7UH9; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=FTrE63RZ; 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="A4mS7UH9"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="FTrE63RZ" 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 65N6dNjH3631257 for ; Tue, 23 Jun 2026 09:14:01 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= 24B/vWc0OHfdLJwPCzXWYKyFsXHSMgBg7admOM5KrsU=; b=A4mS7UH9cMUAFje6 A0r8LqRcNxoAq7P0nSPp7j7UH+rGGDrFJ6XHXWLsqzS+YWI3HvZiMZwWJqIkrA4I AoUVIo+2n0Qks0KtLcggUx9+rPxok5ME4EiHCtEk3HdOU+C8Lmt1GEyZNUEVXqSy 5/P5OL7cE/GhGd8rVLAzZcGLTrIMJHqoMFRJze7Ct6AVBGTG+ccWCdIKO3/dnITf ElE4W8bwg7Kjx8ZgIM3IgyM9+8LgzyJljD54Q1/TLJj/VZjuxKGw8ouZpleqURJX RQToHzvomedlloJJZ8sdKpIPQZpqSpH2pw0tm+apD02wy8kNm07e9Bwfe8Frpqd5 4KmKbw== Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4eymnvrpah-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 23 Jun 2026 09:14:01 +0000 (GMT) Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-8453a81b846so7812164b3a.2 for ; Tue, 23 Jun 2026 02:14:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1782206041; x=1782810841; 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=24B/vWc0OHfdLJwPCzXWYKyFsXHSMgBg7admOM5KrsU=; b=FTrE63RZTZXpWOmNB5p4G7awUJHn2DDWLB1S2RIeAGtDG9m06+eVvMCWB5Oug6Way6 jcOEjD8FYkuuvADjHK8nesOsEJTJ8lTLV1S8SFYwSlJeVcqe/bcn/Uzv71AyaP2eVAFK mEXpQ5KaBOD2xSwVp80BFdJUU/RXGsAJaN+cXddqIj7tvNx61Xn81E5m3HEXJNVFxcoI y3Tmw3h9vU7gGdYLdxbqVfizlxOF+UpLrgON2arpGA6fF7nnfLAJFfRTNXiEXAKia3cf yk271TUgK80oWLPZNfId95M4Snr7VagYFpo/Ao2cND78ECxYfMXY36HmVfBtaLJl6fBJ kV/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782206041; x=1782810841; 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=24B/vWc0OHfdLJwPCzXWYKyFsXHSMgBg7admOM5KrsU=; b=UJMMnHeIGEWjgQeU/JxLqcgakA88efQ36skIvUW3HUwnqkaYvfBUX6zeu5eLdFc2Tc +kwLatiKG8rcJtCjFMJiULqZsVFEjrBcbGA1DpkDHnms5yu2B6TZzaEXZPT019scFCik XSmiBHNfjQU2KN4voTHL1xuinUcN1KHTutXIRx5nBsxVb/gixluNuLcgQ5mJ/Ei7zwSi Z4O0+ekjPyx5B/5gWSZtrvu9b1hF608pjeHjsqvTE+Nc6SMjSAnRMXPyEFk7ZovDQKPY Y1ZkVt7KG11JYx8GN0vLwIPyLvgABhaQlV1fllU2Xe5TEOeheEUkjwrS+q27LhSKFpgT m01A== X-Forwarded-Encrypted: i=1; AFNElJ+bch4091NfW2gQSL3YlkrIORiOyf8yOIh7E9zE2kLbEtcKroq/+K2f2jmILIYMkHkeTERTy3WO4V1P/7g=@vger.kernel.org X-Gm-Message-State: AOJu0Yw5/hSbNiXqGpJA+TZMTKe2os8GTncuRtEKDYeUDmPeGhespyzZ si7rz9DOmfnjHWBnY8Lqnbyv6wggqJowSrHZ1r1/Qmy3NQfQNk48gZmpUFY6fHqZX5apwqeFu77 KPeEVJkr0M4zGUEXJ0hwVGogu+PUaLEVb0W/88gLbEhpWIHYF//ferqD3u8hHJOIgX8A= X-Gm-Gg: AfdE7cmHJmNXHHEskgxUBlz/umzqiVOqWRsM16pbY/fyBcfWJYDhGkCM6gW/lGhlPgm +rDu8a7PZy84nFNbHEDWXdbkcQY40sRN3RzgoGR3qrKBeDWSYWAw5c5IyDKP7FpyJ5j4cptMb2c OpU8vDOaUG3XAqJVgGHJdaK34fBlvX8REYnLyIgBsB9dPT92+g/rEG8BiZUIqGLxoo8AEAS5Iu5 TUadJrWMSsKxVgH5iwOftnIE2z0jFJV5gNCZzCNrLEZizQhjvRU2g5T+n/NGdE72Svi74D8ECk3 EECw3fHUZp1XOAeAzA+Befka0fKHr9+DtpTr2LLwZPg3PQQXf5kLSYwwdmQvy4nGCOYyLa+ZYga TwMtDZ8crG7j0xbL37zjCKtd94FYwb/d4XSigE0K8Y0PY X-Received: by 2002:a05:6a00:14c4:b0:82c:b808:4c59 with SMTP id d2e1a72fcca58-845970ff8e1mr1946833b3a.46.1782206040639; Tue, 23 Jun 2026 02:14:00 -0700 (PDT) X-Received: by 2002:a05:6a00:14c4:b0:82c:b808:4c59 with SMTP id d2e1a72fcca58-845970ff8e1mr1946786b3a.46.1782206040140; Tue, 23 Jun 2026 02:14:00 -0700 (PDT) Received: from [172.20.10.7] ([106.192.20.130]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-84564ed3bd8sm9568565b3a.56.2026.06.23.02.13.51 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 23 Jun 2026 02:13:59 -0700 (PDT) Message-ID: <81f10859-b7b9-4a37-a260-b77e36f0267a@oss.qualcomm.com> Date: Tue, 23 Jun 2026 14:43:49 +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 v1 2/2] ASoC: codecs: add Qualcomm WSA885X I2C codec driver To: Krzysztof Kozlowski Cc: Srinivas Kandagatla , Liam Girdwood , Mark Brown , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Jaroslav Kysela , Takashi Iwai , Linus Walleij , Bartosz Golaszewski , Srinivas Kandagatla , linux-arm-msm@vger.kernel.org, linux-sound@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org References: <20260610155708.151067-1-prasad.kumpatla@oss.qualcomm.com> <20260610155708.151067-3-prasad.kumpatla@oss.qualcomm.com> <20260611-straight-refined-beetle-e2c934@quoll> Content-Language: en-US From: Prasad Kumpatla In-Reply-To: <20260611-straight-refined-beetle-e2c934@quoll> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Authority-Analysis: v=2.4 cv=dOWWXuZb c=1 sm=1 tr=0 ts=6a3a4e59 cx=c_pps a=WW5sKcV1LcKqjgzy2JUPuA==:117 a=GtHFPjVsJ1z6j8OeKiQY1g==:17 a=IkcTkHD0fZMA:10 a=FelO9ux0wxsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=YAGGjYiUH1UqZGlMsp0A:9 a=QEXdDO2ut3YA:10 a=OpyuDcXvxspvyRM73sMx:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwNjIzMDA3NCBTYWx0ZWRfX2HrvPHxXGb2k aEavwrxcr5b3M3WloFO4387U6R6gwvoxgnMZP1J1jcOyYo6owrWx5hb995Apla+AVv51bMKFFjP npxQm3P9SYainmsE8u5EzTxJi0hZzao= X-Proofpoint-ORIG-GUID: 5l_gzpoqmUCtnlj9tlyl038NEB7Dbc5h X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjIzMDA3NCBTYWx0ZWRfXyXAUvxrHksaP H5y+yACj+XtQbKzMqyhai2mBC4FXZNk44S3/M1yEQHc0PHzF3DDs3+mu1JwVWbZjE14M5z8ZvjP h7+NriOH3lQzppjgNEhlBj9K37rQLNDaFlBkcU8D9JuZ0oj4a5D4aYVXeTyUFjacrpuLEpneYco XzixHe9pKZ6TlkqFO2aRM4a+vDx1/tnhPkcSx1WbhHHcMmDJTql4G+60UvZeZfQwVpiqXEgX/km LzOV1AXVw1KaXJJtuEiA+lHZ5jE+5abqDt/oOTlTQGef2+V/e+Db502TNEEulYSJagWxa9SCbnh 0k1G/bMg0uwplZDB2cVC38phqmf/XJoeVT+oLMC+fS824q12DLVuAaCSWHYxsJAYdHAbLzLMnzU mrONv9W/6V5OXtbBkXnDxXMBoWwpp/tAwIll1mB0+tVnhDQ/GgjQVSYOHJQrNi4y8shtvOb3xqF pX6O0CB1k4Lu9nwLq5A== X-Proofpoint-GUID: 5l_gzpoqmUCtnlj9tlyl038NEB7Dbc5h X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-23_02,2026-06-22_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 lowpriorityscore=0 priorityscore=1501 impostorscore=0 adultscore=0 bulkscore=0 clxscore=1015 phishscore=0 spamscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2606230074 On 6/11/2026 3:09 PM, Krzysztof Kozlowski wrote: > On Wed, Jun 10, 2026 at 09:27:08PM +0530, Prasad Kumpatla wrote: >> +}; >> + >> +static void wsa885x_gpio_set(struct wsa885x_i2c_priv *wsa885x, bool val) >> +{ >> + if (!wsa885x || !wsa885x->sd_n) > How wsa885x can be NULL? > > This wrapper is pointless. Avoid creating abstraction layers over single > call to standard kernel interfaces. Hi Krzysztof, Thanks for reviewing and comments on patch. Agree. The NULL check is unnecessary, and the helper does not add any meaningful abstraction. I'll remove the wrapper and use the GPIO API directly in the next revision. > >> + return; >> + >> + gpiod_set_value_cansleep(wsa885x->sd_n, val); >> +} >> + > ... > >> + >> +static void wsa885x_gpio_powerdown(void *data) >> +{ >> + struct wsa885x_i2c_priv *wsa885x = data; >> + >> + if (!wsa885x) >> + return; > How is this possible? No, I will remove all the unnecessary checks in the next version of patch. > >> + >> + wsa885x_gpio_set(wsa885x, true); >> +} >> + > ... > >> + if (count > 0) { >> + if (count % 2) { >> + dev_err(dev, "%s: Invalid number of elements in %s (%d)\n", >> + __func__, init_table_prop, count); >> + return -EINVAL; >> + } >> + if (count > WSA885X_INIT_TABLE_MAX_ITEMS) { >> + dev_err(dev, "%s: %s has too many elements (%d > %u)\n", >> + __func__, init_table_prop, count, >> + WSA885X_INIT_TABLE_MAX_ITEMS); >> + return -EINVAL; >> + } >> + wsa885x->init_table_size = count; >> + >> + wsa885x->init_table = devm_kcalloc(dev, wsa885x->init_table_size, >> + sizeof(*wsa885x->init_table), GFP_KERNEL); >> + if (!wsa885x->init_table) >> + return -ENOMEM; >> + >> + if (device_property_read_u32_array(dev, init_table_prop, >> + wsa885x->init_table, >> + wsa885x->init_table_size)) { >> + dev_err(dev, "%s: Failed to read %s\n", >> + __func__, init_table_prop); >> + return -EINVAL; >> + } >> + } >> + >> + ret = device_property_read_u32(dev, "qcom,battery-config", >> + &wsa885x->batt_conf); >> + if (ret) { >> + wsa885x->batt_conf = WSA885X_BATT_1S; >> + } else if (wsa885x->batt_conf != WSA885X_BATT_1S && >> + wsa885x->batt_conf != WSA885X_BATT_2S) { >> + return dev_err_probe(dev, -EINVAL, >> + "Invalid battery config %u (expected 1S or 2S)\n", >> + wsa885x->batt_conf); >> + } >> + >> + for (i = 0; i < WSA885X_SUPPLIES_NUM; i++) >> + wsa885x->supplies[i].supply = wsa885x_supply_name[i]; >> + >> + ret = devm_regulator_bulk_get(dev, WSA885X_SUPPLIES_NUM, wsa885x->supplies); >> + if (ret) >> + return dev_err_probe(dev, ret, "Failed to get regulators\n"); >> + >> + ret = regulator_bulk_enable(WSA885X_SUPPLIES_NUM, wsa885x->supplies); >> + if (ret) >> + return dev_err_probe(dev, ret, "Failed to enable regulators\n"); >> + >> + ret = devm_add_action_or_reset(dev, wsa885x_regulator_disable, wsa885x); > Why you cannot simply use devm_regulator_get_enable? Ack, will use. > >> + if (ret) >> + return dev_err_probe(dev, ret, "devm_add_action_or_reset failed\n"); >> + >> + wsa885x->sd_n = devm_gpiod_get(dev, "powerdown", GPIOD_OUT_HIGH); >> + if (IS_ERR(wsa885x->sd_n)) >> + return dev_err_probe(dev, PTR_ERR(wsa885x->sd_n), >> + "Shutdown Control GPIO not found\n"); > Messed/misaligned indentation. Ack, Will update > >> + >> + wsa885x_gpio_set(wsa885x, false); >> + >> + ret = devm_add_action_or_reset(dev, wsa885x_gpio_powerdown, wsa885x); >> + if (ret) >> + return dev_err_probe(dev, ret, "devm_add_action_or_reset failed\n"); >> + >> + i2c_set_clientdata(client, wsa885x); >> + >> + wsa885x->intr_pin = devm_gpiod_get(dev, "interrupt", GPIOD_IN); >> + if (IS_ERR(wsa885x->intr_pin)) >> + return dev_err_probe(dev, PTR_ERR(wsa885x->intr_pin), >> + "Interrupt GPIO not found\n"); >> + >> + ret = wsa885x_register_irq(wsa885x); >> + if (ret) >> + return dev_err_probe(dev, ret, "wsa885x irq registration failed\n"); >> + >> + ret = devm_snd_soc_register_component(dev, component_driver, >> + wsa885x_i2c_dai, >> + ARRAY_SIZE(wsa885x_i2c_dai)); >> + if (ret) >> + return dev_err_probe(dev, ret, "Codec component registration failed\n"); >> + >> + return 0; >> +} >> + >> +static const struct of_device_id wsa885x_i2c_dt_match[] = { >> + { >> + .compatible = "qcom,wsa885x-i2c", >> + }, >> + {} >> +}; >> + >> +static const struct i2c_device_id wsa885x_id_i2c[] = { >> + {"wsa885x_i2c", 0}, > Used named initializers. Ack, Will update > >> + {} >> +}; >> + >> +MODULE_DEVICE_TABLE(i2c, wsa885x_id_i2c); >> +MODULE_DEVICE_TABLE(of, wsa885x_i2c_dt_match); > Don't come with own coding style. Each above goes IMMEDIATELY after the table. Agreed. I'll place each MODULE_DEVICE_TABLE() immediately after its associated table to match the existing kernel style. Thanks, Prasad > > Best regards, > Krzysztof >