From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-lf1-f53.google.com (mail-lf1-f53.google.com [209.85.167.53]) (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 5B66B22E3F0 for ; Tue, 16 Sep 2025 04:52:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.53 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757998333; cv=none; b=QVwPlOliYRhjOA3ujJGb8CcTUUE2kh5Shv7CML4Peq6rAi+FtgplYWSLnofh7hEm3d9UhZCfr6DTqSnUg+PfxxtgrrIB3C/EHPSgoP7M5+lAXGvJDVmTwaQoAznub5ucMQgpamNCjGvJlcwu4kUZHWcXCV1xkmRWtkxG5CZSBpw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757998333; c=relaxed/simple; bh=Bw+sVaY8CU+7cwV8moDBL+RfHtg4QBDwi2G8Pe/+Mq8=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=gCtMyxerSxCKK2+WLuSTcqm/0KFUilZ/7koZvrYYmbHo3qLrf7i9gYrjGbQRKLyXONrO1FB+r7B5lUesmLEhmKkz7DvS5YGj0PuYikcs4XIG5tmubixHpO5ilUIozM7RA3P0i6oapJltjadCNycG2hUJcxhmx1ftU47XPqcy86Q= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=IzKeQ/k2; arc=none smtp.client-ip=209.85.167.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="IzKeQ/k2" Received: by mail-lf1-f53.google.com with SMTP id 2adb3069b0e04-55f720ffe34so5606445e87.1 for ; Mon, 15 Sep 2025 21:52:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1757998330; x=1758603130; 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=qV2j4il5ZuIOQndYht3+Fbfog1BTCL9gr5IXcnrc4fE=; b=IzKeQ/k2r5BHYZ0OSV41tsDv/xA32nXuK5adQlQWVPDVvIIeCFIKGfXUHRO0psPDQP BRO6zcgjInmtyEv2iICubrx3hHivufsB+Y4ufdVBUeDa6Co13472zElGfI4F9V6Ru73z X+44FRdFsUo5cUKTX5sVOMmaK5XzIGsQbiL3CDd/vFoLOQqbo+oUHeirdfhVTKa6qD+n sqhMLaq008C2tFnUERmB2+qiBSE4vYVQfYsx0kYzaCYK2maRCotqYywG+geRjYXd8kwe fK1Lcl73eZm85T2j+fmQp/d6ZY7M0A4LsYcvxlv0YMCy+ac7MCtvjSkD/zJEL3hS66Ka pasw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757998330; x=1758603130; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=qV2j4il5ZuIOQndYht3+Fbfog1BTCL9gr5IXcnrc4fE=; b=GwfuCbGRwywI4TW/y7U9jAGOGCsiVaPf2QyrHLh2mLibx6FB2svRB1ofx5WUpzsMpG /bBzzgVZK37zxFdESHBJGNIeR4ie8z0Z0rWbQFW5x1Soo16jaVn5hKfwG48NDNE7uT4R EkhJURZP+fZ/hhtinWuoTaozcXflOxWmOGNN97pMQnTwrZuFjNAGxLoJ1PoAGtO5JeHi 2V+ARTSDjWTb/dp8Sf10Z94mj3e30A+NvU8q27HqHErdHqJPT6DHgluq8ZjSHWDip8lm rmwNvh/tuf4JirK7umSy9B2FrpaPwc/WwAwUI+noeDdegV/kxX1M148fq62yYvt5GSGg nOPQ== X-Forwarded-Encrypted: i=1; AJvYcCUioGbMS1fLwIsFMhg4qfKJVbz67OFayNc58/ERnyQsHAU59a7GVTFKu821MYfq5udji3KF5E3ZiwTq@vger.kernel.org X-Gm-Message-State: AOJu0YxRdMgescJhCyVEJSdcv2zUGAFm000cSJ/4m661712xBElKljvE 3WQpY7HKGk9imQ6Pg3xtBtPfGDWbXx/E9MMhjofIlgthYdJSLhc7IFSa X-Gm-Gg: ASbGncvfTDhlihmEo836kANFxk754fHyHFSCaQd++WBbledu+Q1bOiuG7FrHXl04uW7 4LG2JL160MTIL10+V9y1TLpBe5JUuTCrncuGOMFHJbP3wbqdJZbRsMNSSJrPFGgBakHxK6DLENU Rci3j9PREnQf5bk4kQfmCmjC5VFSgzFm1oU/iREu37ID1IjhpcmK67pstTOK5Ir+GDmWhZMDSNU pIOwECFXjVdru/15A4SJbxoHUtlIoMyME1wGpx3mi2654jooSgw4crSq80c4zflFf23OwxEEhnK Onfm/7ulOTb6nZyknbYWXoBDCt2MPnS51etKnigBjbVBV2ue5GeuMPVo/cF63F1JOkT4/6J6zgw VRjEEsZ5eMeV1doYdM43/NZCD+wpZWz1YZCmryaUevLpGimfOfQYjzg/KAN/1rYtXz9oQ16vopI ANu9GU X-Google-Smtp-Source: AGHT+IHDfoXUWHL+1d3NPjZRBAKkpSzJMJ4TN4AtBJ3uD/xkbljqRSjaJ2aPZxMrn4mjvSIHt7VAQw== X-Received: by 2002:a05:6512:acd:b0:55f:400b:1144 with SMTP id 2adb3069b0e04-5763ff929ffmr308937e87.27.1757998329275; Mon, 15 Sep 2025 21:52:09 -0700 (PDT) Received: from ?IPV6:2a10:a5c0:800d:dd00:8fdf:935a:2c85:d703? ([2a10:a5c0:800d:dd00:8fdf:935a:2c85:d703]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-56e5c3b6188sm4168144e87.3.2025.09.15.21.52.08 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 15 Sep 2025 21:52:08 -0700 (PDT) Message-ID: Date: Tue, 16 Sep 2025 07:52:07 +0300 Precedence: bulk X-Mailing-List: devicetree@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v5 2/3] iio: adc: Support ROHM BD79112 ADC/GPIO To: Jonathan Cameron , Andy Shevchenko Cc: David Lechner , =?UTF-8?Q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Linus Walleij , Bartosz Golaszewski , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org References: <20250915-bd79112-v5-0-a74e011a0560@gmail.com> <20250915-bd79112-v5-2-a74e011a0560@gmail.com> <20250915211321.47865d3d@jic23-huawei> Content-Language: en-US, en-AU, en-GB, en-BW From: Matti Vaittinen In-Reply-To: <20250915211321.47865d3d@jic23-huawei> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 15/09/2025 23:13, Jonathan Cameron wrote: > On Mon, 15 Sep 2025 17:12:34 +0300 > Andy Shevchenko wrote: > >> On Mon, Sep 15, 2025 at 10:12:43AM +0300, Matti Vaittinen wrote: >>> The ROHM BD79112 is an ADC/GPIO with 32 channels. The channel inputs can >>> be used as ADC or GPIO. Using the GPIOs as IRQ sources isn't supported. >>> >>> The ADC is 12-bit, supporting input voltages up to 5.7V, and separate I/O >>> voltage supply. Maximum SPI clock rate is 20 MHz (10 MHz with >>> daisy-chain configuration) and maximum sampling rate is 1MSPS. >>> >>> The IC does also support CRC but it is not implemented in the driver. >> >> ... >> >>> +static int bd79112_probe(struct spi_device *spi) >>> +{ >>> + struct bd79112_data *data; >>> + struct iio_dev *iio_dev; >>> + struct iio_chan_spec *cs; >>> + struct device *dev = &spi->dev; >>> + unsigned long gpio_pins, pin; >>> + unsigned int i; >>> + int ret; >>> + >>> + iio_dev = devm_iio_device_alloc(dev, sizeof(*data)); >>> + if (!iio_dev) >>> + return -ENOMEM; >>> + >>> + data = iio_priv(iio_dev); >>> + data->spi = spi; >>> + data->dev = dev; >>> + data->map = devm_regmap_init(dev, NULL, data, &bd79112_regmap); >>> + if (IS_ERR(data->map)) >>> + return dev_err_probe(dev, PTR_ERR(data->map), >>> + "Failed to initialize Regmap\n"); >>> + >>> + ret = devm_regulator_get_enable_read_voltage(dev, "vdd"); >>> + if (ret < 0) >>> + return dev_err_probe(dev, ret, "Failed to get the Vdd\n"); >> >>> + data->vref_mv = ret / 1000; >> >> I still think moving to _mV is the right thing to do. >> There is no 'mv' in the physics for Volts. > > I'm not disagreeing with this review but I'm also not going to hold a > driver back for that given timing is pretty much such that I merge it > today or it sits a cycle and this one is very near... > I'll get fussier on this once we have written up some guidance and may > well send a patch to modify existing recent cases like this one! As I replied to Andy, I am disagreeing with this. I hope we won't start renaming variables with capital letters :( >> >>> + ret = devm_regulator_get_enable(dev, "iovdd"); >>> + if (ret < 0) >>> + return dev_err_probe(dev, ret, "Failed to enable I/O voltage\n"); >>> + >>> + data->read_xfer[0].tx_buf = &data->read_tx[0]; >>> + data->read_xfer[0].len = sizeof(data->read_tx); >>> + data->read_xfer[0].cs_change = 1; >>> + data->read_xfer[1].rx_buf = &data->read_rx; >>> + data->read_xfer[1].len = sizeof(data->read_rx); >>> + spi_message_init_with_transfers(&data->read_msg, data->read_xfer, 2); >> >>> + devm_spi_optimize_message(dev, spi, &data->read_msg); >> >> And if it fails?.. > I've added the following and applied the series. Thanks! > Note I'm cutting this fine so if we get any build issues or similar > it might well get pushed back to next cycle yet! > > diff --git a/drivers/iio/adc/rohm-bd79112.c b/drivers/iio/adc/rohm-bd79112.c > index b406d4ee5411..d15e06c8b94d 100644 > --- a/drivers/iio/adc/rohm-bd79112.c > +++ b/drivers/iio/adc/rohm-bd79112.c > @@ -454,12 +454,18 @@ static int bd79112_probe(struct spi_device *spi) > data->read_xfer[1].rx_buf = &data->read_rx; > data->read_xfer[1].len = sizeof(data->read_rx); > spi_message_init_with_transfers(&data->read_msg, data->read_xfer, 2); > - devm_spi_optimize_message(dev, spi, &data->read_msg); > + ret = devm_spi_optimize_message(dev, spi, &data->read_msg); > + if (ret < 0) > + return dev_err_probe(dev, ret, > + "Failed to optimize SPI read message\n"); > I am not really sure under what conditions the devm_spi_optimize_message() could fail. It might be enough to print a warning and proceed, but I don't think returning is a problem either. Thanks a lot for going an extra mile and taking care of this! Yours, -- Matti