From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-ej1-f48.google.com (mail-ej1-f48.google.com [209.85.218.48]) (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 01C4339B97E for ; Fri, 22 May 2026 13:03:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.48 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779455001; cv=none; b=dbhuwo7BdmShdlKNsvd14GoeNJd/SoeaGBMTJBRryJkMtjGGX4nDVeBgpc0iRH7kid/6qNolIAwnL0KgwRleyJA9CCLuCVj6Idrkop+WbnmUdGmfDy7lHKr+ACpVYGZzhVO2ESIQ5l6xaueIoMY2pPvhB/AzYq5vtfLN6vtWyaI= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779455001; c=relaxed/simple; bh=zeYQ87jFXpzV5+loM2B41zUFQUdxwealBtN/HeoFfv8=; h=Message-ID:Date:MIME-Version:From:Subject:To:Cc:References: In-Reply-To:Content-Type; b=qlV0O2dw22dJlzpY9F9+m89AGjmamXj6Cp4kq9CEy3QxCvCdBWNi3ZR+PL5JmXPLVqJrQMTyOWgxmYTIQEhuZ3QhxqYDTGp6OkZ/IktOAWd1qGhDJAyL8rrhGu0glmvfXlYxm4/GiJrQu8sSviDl24s8FB2WMYZnStcPEnJJcVs= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=zByl3O1i; arc=none smtp.client-ip=209.85.218.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="zByl3O1i" Received: by mail-ej1-f48.google.com with SMTP id a640c23a62f3a-bd22b2abaa4so1239789266b.0 for ; Fri, 22 May 2026 06:03:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779454996; x=1780059796; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:organization:autocrypt :content-language:references:cc:to:subject:reply-to:from:user-agent :mime-version:date:message-id:from:to:cc:subject:date:message-id :reply-to; bh=Pp+uy4fosL83r7Yff3IuwU9QpcRrQlNoLdm5truS+aA=; b=zByl3O1i5BpuWNCeSGGZulp+fZz1ZxWWN4rqZBHsyxd2Mhh5Sd+Ys/wlJiNRRq+43T DzC46dtI8m80KoFGNcTf0NPZagXY7WQcWZwvBA1lX+C9Ek6XA5RF+gFMJTqlOKhR2s/Y 1wLrP7UkoRdPoB8H2XJcfKhBd8Ji4Hkssg4Vv/OF0/85qDiEUyaueeVeC0qW6y6BVuju RW1LFZgglIBoTRX21jDFIDIuACoyRjb0jQ03qTcfX39TzXMKPwy8wTgOWvXtxETCYKNd 1viMnM9Y26QTi94cmZMbgNDtEWb7T3bRXOBDSQ9VbQo/Y030GeXarbk2ZsRupeUMIHLm PEHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779454996; x=1780059796; h=content-transfer-encoding:in-reply-to:organization:autocrypt :content-language:references:cc:to:subject:reply-to:from:user-agent :mime-version:date:message-id:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Pp+uy4fosL83r7Yff3IuwU9QpcRrQlNoLdm5truS+aA=; b=iaEwRLK/DZv38aeO6CUdMDjwqKMyUgnyaqdXVOyf2AkhBAJI0ysSjPfpSqh4w/zifK isvCuKbJLwFV7WRdSMx2ySOWnzcRdx/leVQ50BKd8VrkLjdA0GCLWOfyOL4fuAYBmjKW 6ZiK9hdlAewxxAHUyWii5QS1wzT9QvGAvF72+8dAdh5bytyxHGmIszcctqEwQ6R8jI1V /nbQMj74nyZjAjnAsZ7s0aEaaZRApa1pmdGbwtBurJ8k4C0LHS8BMdaPPPXXDvPJ9f8C cebcgFdhadOo6Hxt/rVDQp2QJfFCy7PfyK5pDQ7aLQAnbEkArr7ahGmHTabUfDXMR3/n WJiw== X-Forwarded-Encrypted: i=1; AFNElJ+e1nnCEFS4SD+wraSuvOV6CCAUuATWUZNch7a9I7O6CvUqSR+ho7WighHLqX6jf4KRdBeIOcRjwMV+32k=@vger.kernel.org X-Gm-Message-State: AOJu0YxuAujS6Uq5GGN3amepna1qKDYgnZw0DvWL3D+L6VdGHQtQ6D5t IpkJeRVtso2iDC/5f5Zx1+yomC5ZSCSXvt90Q3HruXLnIqkEHpyQXS5Byf7IYaZh/PE= X-Gm-Gg: Acq92OGTv0WQImQS2bqBGw1MHeIiXTHizEK0k6yoSlhZUNjKo8fiyrvHCSMfb8WrJDP WAz089MNpMYSKzSS28pjWXEYqK7okvdrv0uI2v8nS6faywXyEjI2PdFjvdilGoROny624ggbfOk CalzAafGAtT/eSdh9BCnQ5z3u/fbH58jjrycC3ii55DHYYdHFzjtk6mwsXjWK7Qwj3BXbyvLgNJ gsreCjUtqn4kuSSYbxOjddYBNAmJuoQLY2Km52Qb+H5ZB7Ex8Pa0AMeVesnioZDwTGbyHcAmbmd i3ZIGj9CZBSkFbwMAa99pApa6haKDDEOyRZXamu7lA7u4szeRnsfrDH0UAhVmgxbP8qCNTNp6m4 QUk2V4Rj/2kVLSJNHNiPiDAIJdjTv4KMhjMOviypn0kAipPr4m6YqBaH0WXWng+FoaxXD3nsz3U 4VydEm0eN5wRnbs6UsdUSNekpNFLu6r/JbH4I7ejHivZ6Xdbn9UNw4FAh2Y7//72f2mz2bVLNrF xsU X-Received: by 2002:a17:907:7383:b0:bdb:95d7:9816 with SMTP id a640c23a62f3a-bdd283a655amr141781566b.47.1779454995806; Fri, 22 May 2026 06:03:15 -0700 (PDT) Received: from ?IPV6:2a01:e0a:106d:1080:e40:8f70:d414:3f93? ([2a01:e0a:106d:1080:e40:8f70:d414:3f93]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45eb6c9dd03sm4631545f8f.7.2026.05.22.06.03.14 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 22 May 2026 06:03:15 -0700 (PDT) Message-ID: Date: Fri, 22 May 2026 15:03:14 +0200 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: Neil Armstrong Reply-To: Neil Armstrong Subject: Re: [PATCH v4 2/2] regulator: add SGM3804 Dual Output driver To: Mark Brown Cc: Liam Girdwood , Rob Herring , Krzysztof Kozlowski , Conor Dooley , linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, KancyJoe References: <20260506-topic-sm8650-ayaneo-pocket-s2-sgm3804-v4-0-7495e7905693@linaro.org> <20260506-topic-sm8650-ayaneo-pocket-s2-sgm3804-v4-2-7495e7905693@linaro.org> <8916f45b-3a97-4a5e-b608-5feaea40f2b2@sirena.org.uk> Content-Language: en-US, fr Autocrypt: addr=neil.armstrong@linaro.org; keydata= xsBNBE1ZBs8BCAD78xVLsXPwV/2qQx2FaO/7mhWL0Qodw8UcQJnkrWmgTFRobtTWxuRx8WWP GTjuhvbleoQ5Cxjr+v+1ARGCH46MxFP5DwauzPekwJUD5QKZlaw/bURTLmS2id5wWi3lqVH4 BVF2WzvGyyeV1o4RTCYDnZ9VLLylJ9bneEaIs/7cjCEbipGGFlfIML3sfqnIvMAxIMZrvcl9 qPV2k+KQ7q+aXavU5W+yLNn7QtXUB530Zlk/d2ETgzQ5FLYYnUDAaRl+8JUTjc0CNOTpCeik 80TZcE6f8M76Xa6yU8VcNko94Ck7iB4vj70q76P/J7kt98hklrr85/3NU3oti3nrIHmHABEB AAHNKk5laWwgQXJtc3Ryb25nIDxuZWlsLmFybXN0cm9uZ0BsaW5hcm8ub3JnPsLAkQQTAQoA OwIbIwULCQgHAwUVCgkICwUWAgMBAAIeAQIXgBYhBInsPQWERiF0UPIoSBaat7Gkz/iuBQJk Q5wSAhkBAAoJEBaat7Gkz/iuyhMIANiD94qDtUTJRfEW6GwXmtKWwl/mvqQtaTtZID2dos04 YqBbshiJbejgVJjy+HODcNUIKBB3PSLaln4ltdsV73SBcwUNdzebfKspAQunCM22Mn6FBIxQ GizsMLcP/0FX4en9NaKGfK6ZdKK6kN1GR9YffMJd2P08EO8mHowmSRe/ExAODhAs9W7XXExw UNCY4pVJyRPpEhv373vvff60bHxc1k/FF9WaPscMt7hlkbFLUs85kHtQAmr8pV5Hy9ezsSRa GzJmiVclkPc2BY592IGBXRDQ38urXeM4nfhhvqA50b/nAEXc6FzqgXqDkEIwR66/Gbp0t3+r yQzpKRyQif3OwE0ETVkGzwEIALyKDN/OGURaHBVzwjgYq+ZtifvekdrSNl8TIDH8g1xicBYp QTbPn6bbSZbdvfeQPNCcD4/EhXZuhQXMcoJsQQQnO4vwVULmPGgtGf8PVc7dxKOeta+qUh6+ SRh3vIcAUFHDT3f/Zdspz+e2E0hPV2hiSvICLk11qO6cyJE13zeNFoeY3ggrKY+IzbFomIZY 4yG6xI99NIPEVE9lNBXBKIlewIyVlkOaYvJWSV+p5gdJXOvScNN1epm5YHmf9aE2ZjnqZGoM Mtsyw18YoX9BqMFInxqYQQ3j/HpVgTSvmo5ea5qQDDUaCsaTf8UeDcwYOtgI8iL4oHcsGtUX oUk33HEAEQEAAcLAXwQYAQIACQUCTVkGzwIbDAAKCRAWmrexpM/4rrXiB/sGbkQ6itMrAIfn M7IbRuiSZS1unlySUVYu3SD6YBYnNi3G5EpbwfBNuT3H8//rVvtOFK4OD8cRYkxXRQmTvqa3 3eDIHu/zr1HMKErm+2SD6PO9umRef8V82o2oaCLvf4WeIssFjwB0b6a12opuRP7yo3E3gTCS KmbUuLv1CtxKQF+fUV1cVaTPMyT25Od+RC1K+iOR0F54oUJvJeq7fUzbn/KdlhA8XPGzwGRy 4zcsPWvwnXgfe5tk680fEKZVwOZKIEuJC3v+/yZpQzDvGYJvbyix0lHnrCzq43WefRHI5XTT QbM0WUIBIcGmq38+OgUsMYu4NzLu7uZFAcmp6h8g Organization: Linaro In-Reply-To: <8916f45b-3a97-4a5e-b608-5feaea40f2b2@sirena.org.uk> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 5/22/26 14:01, Mark Brown wrote: > On Wed, May 06, 2026 at 09:34:07AM +0200, Neil Armstrong wrote: > >> +config REGULATOR_SGM3804 >> + tristate "SGMicro SGM3804 voltage regulator" >> + depends on I2C && OF >> + select REGMAP_I2C >> + help >> + This driver supports SGMicro SGM3804 dual-output voltage regulator. >> + > > The GPIO usage in the driver looks non-optional so we should have a > GPIOLIB dependency shouldn't we? Indeed > >> +static int sgm3804_sync_regcache_state(struct sgm3804_data *ctx) >> +{ >> + guard(mutex)(&ctx->lock); >> + >> + /* If both GPIOs are down, IC is powered down and I2C writes will fail */ >> + if (!gpiod_get_value_cansleep(ctx->gpios[SGM3804_POS_RAIL]) && >> + !gpiod_get_value_cansleep(ctx->gpios[SGM3804_NEG_RAIL])) { >> + regcache_cache_only(ctx->regmap, true); >> + regcache_mark_dirty(ctx->regmap); >> + } else { >> + /* At least a GPIO is up, we can write registers */ >> + regcache_cache_only(ctx->regmap, false); >> + return regcache_sync(ctx->regmap); > > This should really put the regmap back into cache only mode if the sync > fails. Right > >> +static const struct regulator_desc sgm3804_regulator_desc[] = { >> + /* Positive Output */ >> + { >> + .name = "pos", >> + .of_match = "pos", >> + .supply_name = "vin", >> + .id = SGM3804_POS_RAIL, >> + .ops = &sgm3804_ops, >> + .type = REGULATOR_VOLTAGE, >> + .linear_ranges = sgm3804_voltages, >> + .n_linear_ranges = ARRAY_SIZE(sgm3804_voltages), >> + .n_voltages = SGM3804_VOLTAGES_COUNT, > > n_voltages is misnamed and should really be maximum selector, for a > device like this with sparse selectors it doesn't do what you'd expect > unfortunately. OK indeed thanks, I overlooked this part Neil