From patchwork Wed Apr 5 14:01:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Frattaroli X-Patchwork-Id: 79612 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp332727vqo; Wed, 5 Apr 2023 07:06:14 -0700 (PDT) X-Google-Smtp-Source: AKy350a31i0m48Dg2z9uu3jgutgVFYiUH7FeDXnLUIVjwYEKdm2eeE4q9Z1ugJS+ylBVT2WGaVsb X-Received: by 2002:a17:906:4a89:b0:92f:2c64:9d43 with SMTP id x9-20020a1709064a8900b0092f2c649d43mr3048062eju.68.1680703574305; Wed, 05 Apr 2023 07:06:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680703574; cv=none; d=google.com; s=arc-20160816; b=keTDA+WirScJaMReztRr9jTX4SRb0jNxOy+F475yLY/3D410zUbI1b74d1ddup1BtH W+ewLLYE5lK56XTCh/w7f+dqPQDOXgAIG3/Ymqdax09vLkdZbrDYB0FzkIrKKcqqBbDb jiOMSM72r/R6+8JUY4CduRvxeJAoEljNoEvgcUb9RSHT6jDN/Vif0k/hrnVPAN1ndXIB j6GXki10E4mFMPaHa+DWQyZFVLUzXTRV8wfNXF64yV386FUbxxwQoYQgIvSTvGb9ueZJ lqDD8edSYi5trKcpC1p0WlVdggQ2ivO6cDqqYnIAZFeVG1LTid/MPsRTmxupWNGUEuXr p3Jg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=2kEpFJSLQ8LuijRNCE1GflXz6A3tNgKwJ9XWnGsb954=; b=rGVxm4W90jiK/2IYI/xJfRKJKLt/nQtOZfx1IYpOMtn3urfgJQuR6tfEU+ut0BXZPX 2B9Bz3wdLDtEybFFHwmD3Sz2Y/9Urm1SWhoeWubpoyRy9IuTx1nQoVXS5079ucA56grn 9X6dYg0T/Or4mfdmeZOALKhAbIeWD5x/AQD5QQROVGvMuGSsbygu4omIc3FhQTcAfQY7 zVnw4Do6jZqkciAD4sxoxW2i3ioZ0h8cPhZGfSlTB1qwdNaL2LvZqJBYRNcd8+Se0rF5 hYblqzOzO7+8MbMZ0j9czW42yc6Ojo6YLp9Uvxxlw5qwcET3Yq2+wDnrOAq4yW7rXzbX x5Mw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=HywO5JxM; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id m22-20020a170906721600b008e6bdf85401si361516ejk.869.2023.04.05.07.05.42; Wed, 05 Apr 2023 07:06:14 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=HywO5JxM; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238443AbjDEOE0 (ORCPT + 99 others); Wed, 5 Apr 2023 10:04:26 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43726 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238287AbjDEODO (ORCPT ); Wed, 5 Apr 2023 10:03:14 -0400 Received: from mail-lj1-x230.google.com (mail-lj1-x230.google.com [IPv6:2a00:1450:4864:20::230]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AB1A7729A; Wed, 5 Apr 2023 07:01:37 -0700 (PDT) Received: by mail-lj1-x230.google.com with SMTP id a44so18758722ljr.10; Wed, 05 Apr 2023 07:01:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1680703292; 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; bh=2kEpFJSLQ8LuijRNCE1GflXz6A3tNgKwJ9XWnGsb954=; b=HywO5JxM90BaXLZoJ5SdW/n8CKGwqjoFou8tbU3RPTvez7ntTaBhDGKin2tO1VL5Fz qk65aJHkMaY5g8xssLhCLpiD7t+VS3sXi9ai1OLU5jjU8HtfVLiaSR42UPTXRTB2sATt 9LAEevwZH0eDCCcUFKWN8ctibZjpLgaOPvqT8AwYIpq6ULgeviZ02ebGEKG0IX+k7DuB OqUOibuHBMQahXW0uwtyqJIhv/9EWiI/fEAr7Y5I912WLCflL2ICNjeMV7IYI0upi9S8 fDx7Hj9Iy/udXiUaGdZzYbeAEidcfrtdnUUmfv0ju8i8XM+tjYGP/d54TMqvc9t6tKnx VorQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680703292; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=2kEpFJSLQ8LuijRNCE1GflXz6A3tNgKwJ9XWnGsb954=; b=vjvsu5drKFXsUOrYAySBNwRLASAJC/WK1XUpzLQqZV2wvH6301eBtxw4HejcmJ3AIl Yzg9YPqOBXzmX3vafo02nLmCY84WF6kfv/Ev/mp8gLYZhbqmx7mr9uRrynfFwTXVPhKX FWr4Wz77bftQPr2KSy7FsalDgCe1TXU7jxFnSC+2SYOZVkeMmdbNFT0+0MBDW32x19qj 3WiSZYhblpViSvjoNXI0my1Dk9pX/nzKnWEvNY2giOVBawzN7GFdXJZgJLXen2qfeRUc ItSNEF/M6RZlI22it3TVOFmDio8HZmaOCvbaU89FXOlHfgSfXGzyFvodRVwKJQWdnGVF 9Itg== X-Gm-Message-State: AAQBX9e5SuIuzRRGrNkC0E5KA7Crg4RX5yCxhcStFhIAXczwtSby4wPN g2fSixBeZ+xFTioi94ExfeQ= X-Received: by 2002:a05:651c:22f:b0:299:ac49:46da with SMTP id z15-20020a05651c022f00b00299ac4946damr1787725ljn.42.1680703292092; Wed, 05 Apr 2023 07:01:32 -0700 (PDT) Received: from archbox.v.cablecom.net (84-72-105-84.dclient.hispeed.ch. [84.72.105.84]) by smtp.gmail.com with ESMTPSA id g6-20020a05600c4ec600b003edc4788fa0sm2412383wmq.2.2023.04.05.07.01.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Apr 2023 07:01:31 -0700 (PDT) From: Nicolas Frattaroli To: Jonathan Cameron , Lars-Peter Clausen , Rob Herring , Krzysztof Kozlowski , Michael Welling Cc: Nicolas Frattaroli , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 1/4] dt-bindings: iio: dac: mcp4922: add vdd-supply property Date: Wed, 5 Apr 2023 16:01:11 +0200 Message-Id: <20230405140114.99011-2-frattaroli.nicolas@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230405140114.99011-1-frattaroli.nicolas@gmail.com> References: <20230405140114.99011-1-frattaroli.nicolas@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-0.2 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1762345430915938262?= X-GMAIL-MSGID: =?utf-8?q?1762345430915938262?= These chips have a vdd supply input, which should be modelled in the bindings as well. Vref is only the voltage reference supply for the string DAC. Signed-off-by: Nicolas Frattaroli Acked-by: Michael Welling --- .../devicetree/bindings/iio/dac/microchip,mcp4922.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Documentation/devicetree/bindings/iio/dac/microchip,mcp4922.yaml b/Documentation/devicetree/bindings/iio/dac/microchip,mcp4922.yaml index 19374401e509..a3e80e90eeca 100644 --- a/Documentation/devicetree/bindings/iio/dac/microchip,mcp4922.yaml +++ b/Documentation/devicetree/bindings/iio/dac/microchip,mcp4922.yaml @@ -21,11 +21,14 @@ properties: reg: maxItems: 1 + vdd-supply: true + vref-supply: true required: - compatible - reg + - vdd-supply - vref-supply allOf: @@ -42,6 +45,7 @@ examples: dac@0 { compatible = "microchip,mcp4912"; reg = <0>; + vdd-supply = <&dac_reg>; vref-supply = <&dac_vref>; }; }; From patchwork Wed Apr 5 14:01:12 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Frattaroli X-Patchwork-Id: 79644 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp344005vqo; Wed, 5 Apr 2023 07:19:46 -0700 (PDT) X-Google-Smtp-Source: AKy350bTJxbPRyUGL4wvHaaAXnRjGKAUPc8Qqf+FNOWseHPxYOPnVTIIPgs2CsUIDiXspf4u7Czc X-Received: by 2002:a05:6a00:1a49:b0:627:f40a:fd35 with SMTP id h9-20020a056a001a4900b00627f40afd35mr2842855pfv.10.1680704386215; Wed, 05 Apr 2023 07:19:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680704386; cv=none; d=google.com; s=arc-20160816; b=EedPjdAJSfrjtw2Tt+qVNFZWz+qI+zjhQfQagZbIor3DYIeUCtgF98U4FRxhEaFtfa E9FtwJoHchUJI5kPVGRg40PplrCmrNkfzCoRnDGDnD7UvJnqHg+s7QQ3wWi/HmlBSI6U /oTH7J20UmhwgaAC0nmxPY9qDTZdWQW+TkVtOIyx80lj4CbA13YMoN9nEC1cGygZ3H8G RHYWBgUjyoj08trCz0Si6X6RrSvaiEHLb7DmqUdfN++Plut1hfM0uLsxlC+9AjXjCO9a yKy6KezIbrl3lkb4UUsxAcJm/uAkf463dgbtNLqqxYzJ6u0HU7ijLlYeCaetJqejBLdV hDeA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=mPAHsCB+vewAndH85J11KGlhia9f1zZVc29B15eZm9c=; b=quiSwzOzGVdbKa0tTMCbqocg9VKKmJ+PdNERHG4vXGRTu2KgTqPzY4223VutCoJdvV Oga7pWKlHcNX+kenZzO4bZ92aRGwQQFDBEnBhMn1JLJfdowOpHCiErrX+oaHupjhZtTR vK6kH4YutImXGYBUMO0PdQM8eFwzNXChiKpqFCtgKbU1FcLna4RULA64cFrqBQ5L7cBw 9YqZzr+3SOOdjm2HC0Ho48CNdFPGM6N/nP8NzQ9tLQ0JFYR3hdCMWiTf93Ow0NB5/pxS iO/WbjOLG5eb2VGVKedLRSpBOYLhUHxL2E4hrqLwLcNM5+2eumBFw7M1Pq2ND7bXyq6K S3/Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=Hl1YkxX4; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id h21-20020aa796d5000000b005907636f4bfsi12699225pfq.48.2023.04.05.07.19.33; Wed, 05 Apr 2023 07:19:46 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=Hl1YkxX4; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238457AbjDEOEd (ORCPT + 99 others); Wed, 5 Apr 2023 10:04:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42536 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238335AbjDEODP (ORCPT ); Wed, 5 Apr 2023 10:03:15 -0400 Received: from mail-lf1-x135.google.com (mail-lf1-x135.google.com [IPv6:2a00:1450:4864:20::135]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id ABAC972A9; Wed, 5 Apr 2023 07:01:37 -0700 (PDT) Received: by mail-lf1-x135.google.com with SMTP id k37so46824424lfv.0; Wed, 05 Apr 2023 07:01:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1680703294; 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; bh=mPAHsCB+vewAndH85J11KGlhia9f1zZVc29B15eZm9c=; b=Hl1YkxX408ksxtgpJsoPqFtNm8AGaBNRHeN3oipVgw1Y8pQyQCXwT6fu07JcpbI++1 cqjO4MmRf8onmi7mrY1Ei/P4Js1zNR/7rh//Wo/fz3qi3nxquBQB1lbMmZvhZtDk7ay3 S8tXkZGsA8kvLTTTUlEEsedxTYLQDqPHDGT6s57lHRT25faJi02Uzih/jiwAsdBqGBI1 Be5hesX8uJGs6dHIuem7NT+9d2E+IooOG6S2+cSNP6dcioaLcQ1LTgkRSUAifTBGfn8d rxIplIalZduK0l4EU42SCtOo5uWlGED8mkCusPtzWbUsWHrklfen8F+1/iX0ZoTfhtKv yarQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680703294; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=mPAHsCB+vewAndH85J11KGlhia9f1zZVc29B15eZm9c=; b=RdffTwzXaB17ToywZnThCUmz6ggzV8TXjliSAaitz43ligGnD9zz0QaWdeRvsiJVIL 9xcuVF93pgfOjRetlN2tfSGEOWr+1BwjJVt7SpuptO18lU7rIRb0am3ryhiM3NALn8ae xav8F0XfWEuTy74LG86KLvvcK1MfedRdwbM3zR3qj9meWqNAwFgHT9eN8TXfdKuTTGRF CJc3J+df1HGgJqVhNptt718zWWlVhvThKRIfzHX5Ilt93qAeoS64ggl8j3jdYKgP54Xs XwtduDSa08JAdlKF1dla7iMzsSjXKT6rK3tYeuY7/HI3XHaCyMeA19mLFh28NIki4GGu XrxA== X-Gm-Message-State: AAQBX9cyyQjctNeWzresa5488NLJ0yP6ybp6DypFhqzYr2jH10wRsEcq T5nxtschSYITMkK0FNVvkjM= X-Received: by 2002:ac2:50c2:0:b0:4a9:39f4:579a with SMTP id h2-20020ac250c2000000b004a939f4579amr1594470lfm.66.1680703293093; Wed, 05 Apr 2023 07:01:33 -0700 (PDT) Received: from archbox.v.cablecom.net (84-72-105-84.dclient.hispeed.ch. [84.72.105.84]) by smtp.gmail.com with ESMTPSA id g6-20020a05600c4ec600b003edc4788fa0sm2412383wmq.2.2023.04.05.07.01.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Apr 2023 07:01:32 -0700 (PDT) From: Nicolas Frattaroli To: Jonathan Cameron , Lars-Peter Clausen Cc: Nicolas Frattaroli , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/4] iio: dac: mcp4922: get and enable vdd regulator Date: Wed, 5 Apr 2023 16:01:12 +0200 Message-Id: <20230405140114.99011-3-frattaroli.nicolas@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230405140114.99011-1-frattaroli.nicolas@gmail.com> References: <20230405140114.99011-1-frattaroli.nicolas@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-0.2 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1762346282620778660?= X-GMAIL-MSGID: =?utf-8?q?1762346282620778660?= The MCP4922 family of chips has a vdd power input, which we model in our device tree binding for it. The driver should get and enable the vdd regulator as is appropriate. Signed-off-by: Nicolas Frattaroli --- drivers/iio/dac/mcp4922.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/drivers/iio/dac/mcp4922.c b/drivers/iio/dac/mcp4922.c index da4327624d45..0b9458cbbcff 100644 --- a/drivers/iio/dac/mcp4922.c +++ b/drivers/iio/dac/mcp4922.c @@ -31,6 +31,7 @@ struct mcp4922_state { unsigned int value[MCP4922_NUM_CHANNELS]; unsigned int vref_mv; struct regulator *vref_reg; + struct regulator *vdd_reg; u8 mosi[2] __aligned(IIO_DMA_MINALIGN); }; @@ -148,10 +149,23 @@ static int mcp4922_probe(struct spi_device *spi) if (ret < 0) { dev_err(&spi->dev, "Failed to read vref regulator: %d\n", ret); - goto error_disable_reg; + goto error_disable_vref_reg; } state->vref_mv = ret / 1000; + state->vdd_reg = devm_regulator_get(&spi->dev, "vdd"); + if (IS_ERR(state->vdd_reg)) { + ret = dev_err_probe(&spi->dev, PTR_ERR(state->vdd_reg), + "vdd regulator not specified\n"); + goto error_disable_vref_reg; + } + ret = regulator_enable(state->vdd_reg); + if (ret) { + dev_err(&spi->dev, "Failed to enable vdd regulator: %d\n", + ret); + goto error_disable_vref_reg; + } + spi_set_drvdata(spi, indio_dev); id = spi_get_device_id(spi); indio_dev->info = &mcp4922_info; @@ -167,12 +181,13 @@ static int mcp4922_probe(struct spi_device *spi) if (ret) { dev_err(&spi->dev, "Failed to register iio device: %d\n", ret); - goto error_disable_reg; + goto error_disable_vdd_reg; } return 0; - -error_disable_reg: +error_disable_vdd_reg: + regulator_disable(state->vdd_reg); +error_disable_vref_reg: regulator_disable(state->vref_reg); return ret; @@ -185,6 +200,7 @@ static void mcp4922_remove(struct spi_device *spi) iio_device_unregister(indio_dev); state = iio_priv(indio_dev); + regulator_disable(state->vdd_reg); regulator_disable(state->vref_reg); } From patchwork Wed Apr 5 14:01:13 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Frattaroli X-Patchwork-Id: 79659 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp345534vqo; Wed, 5 Apr 2023 07:21:48 -0700 (PDT) X-Google-Smtp-Source: AKy350aDdtSW1oPJA3SiMl/FoReQhwRECS60NPZapFBoHU7r2+6VfMymL33kfuAaaDQD2ywOfsuC X-Received: by 2002:a05:6a20:92a0:b0:db:d1d5:1e00 with SMTP id q32-20020a056a2092a000b000dbd1d51e00mr5176195pzg.60.1680704508481; Wed, 05 Apr 2023 07:21:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680704508; cv=none; d=google.com; s=arc-20160816; b=WqNK/sFuIxtTkpZ91vh7XO94C4WbmNsf9+Vc9t9MyvMFWyaMPvX6hkWHToR4CNMP5g Kpz8ev3/IfayjsrBlJbD6BC2thNZ27yqoqo8FoEuWmMo2B3K0T1tznhKvLNvAOFXQ8oS Hy5pvFbCD4eQ3Mmy+XgHR6GQQpBcFNk8fmOXPT3FJbc9Amc6ZPyKW7bIr7pniEoKr9F4 ZPTS5y4xYxU7+1vNyddGR5qrN9S/UgLmyniU7q9ooZVlSMqGuG4pHMzVe3Xub9QS16gp MRlKMbt77n4XT7X6YXYJ0bHc2TcoGXEmD217UD5JKhmaoq6YV0t9XOSVuufvdb9ZcND2 eh1Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=yJO4cU5jxcnurUOX6f4KDHqm+rWcV3FRe8BNYyMZhTs=; b=aTAawGiJzN+3DSBJT2w6VW1FXZ7LH9KXhJeBQU/65Gu7x5OnoSN9Pg4iNcutx90nfi ewbIXliWbCswNNQWnhsu2roCC0tSpYyKIdbNgwSmvEOYl9Sa7R/SBfiRiml28rxE+s6z yzLZqn2uah3HInj46ZEqunB0kcyu2QLE103sOIY49qT9UJ5CNb1/YW9V+oZiskNNqg52 +rsQkVBf4AgebjCiRhDbnjlhU50aSdNBCXRTGjxD7+OVt5fxpNaBl2cAhh6tFbeAvSB8 geDC8jeSwTMU7I8N8hPtF7fdYqO4Wpbub03tOvr367os+ycDu5rH8zfxVLqfe27JAa2K 6GFQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=GZIpSKio; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id u11-20020a6540cb000000b0050fa7d26537si12396872pgp.601.2023.04.05.07.21.35; Wed, 05 Apr 2023 07:21:48 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=GZIpSKio; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238453AbjDEOEa (ORCPT + 99 others); Wed, 5 Apr 2023 10:04:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42534 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238330AbjDEODO (ORCPT ); Wed, 5 Apr 2023 10:03:14 -0400 Received: from mail-wm1-x32c.google.com (mail-wm1-x32c.google.com [IPv6:2a00:1450:4864:20::32c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 80BC372AB; Wed, 5 Apr 2023 07:01:38 -0700 (PDT) Received: by mail-wm1-x32c.google.com with SMTP id n10-20020a05600c4f8a00b003ee93d2c914so23473376wmq.2; Wed, 05 Apr 2023 07:01:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1680703294; 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; bh=yJO4cU5jxcnurUOX6f4KDHqm+rWcV3FRe8BNYyMZhTs=; b=GZIpSKio8POp9yFYqcy4tTIeg6G75uXC1rI4ORepXnVW7XpXjwXzkb57sYVxYVXpMq Jbt9w4pHidyxTVQAo2V6U3cG5lU2mQCqoQ9H8yQ0oLfHLpU8o8DV3KIgREQZYyt8JNxY f957Sy1t8LJcEW4ZOI/y+UEu9dTVSmIuSl/kR2U5q0IdfxSFQRMYuCOxmKurAd2+IVWB 10i/3KGSrNcA2V2UP3PNTp0kp3atWyo5mfPee9+RSBQ4ZftdBAj0cvUY+flnPifhYiqF RcYiLCQifela1BYE5qH0EeY+ycaxYtay+YabFiUSeVOG/fsizaRHsG7pYiwfgEgexqgJ SOaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680703294; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=yJO4cU5jxcnurUOX6f4KDHqm+rWcV3FRe8BNYyMZhTs=; b=TIgtqibIUf7y+3rtaOnrfSk+c/kVhmGeqKczAyoRCQ9k/mXlGK45K9mzLW/vgZ+iZG tOI+v6CtKEQNrKZwQOjNsc3QAFfwGxew7VtZx22WPZGRG+IY0vaLbofSRHmsrlWUafUU Ic3QvejoDYgDs30NNKXzxaN48UEICtsiLZ7BC2zVZEPVuGK449R95scQmaaWLKCp7Bhc wjDCRXSG1gUf9THoQpgLF2m+g/0T8kb4skSrBXT9nv6Hwgu5cGWYvc5TXF2o/1L4Upb/ NS6M1WKSSnb/736oDLOvLOX3LBNqs2A/Vr5wBYmKC7vusj/vcs6M4H/8hAxxNtXXEriU lNLw== X-Gm-Message-State: AAQBX9ckE644z6LioMC0IB5/No8ItjG1V2jazPfQKX+TLU4D5MT2wqAJ l1RykzokqnceaQn09gZhDeA= X-Received: by 2002:a7b:c416:0:b0:3ee:6d55:8b73 with SMTP id k22-20020a7bc416000000b003ee6d558b73mr4918297wmi.29.1680703294286; Wed, 05 Apr 2023 07:01:34 -0700 (PDT) Received: from archbox.v.cablecom.net (84-72-105-84.dclient.hispeed.ch. [84.72.105.84]) by smtp.gmail.com with ESMTPSA id g6-20020a05600c4ec600b003edc4788fa0sm2412383wmq.2.2023.04.05.07.01.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Apr 2023 07:01:33 -0700 (PDT) From: Nicolas Frattaroli To: Jonathan Cameron , Lars-Peter Clausen , Rob Herring , Krzysztof Kozlowski , Nicolas Frattaroli Cc: linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 3/4] dt-bindings: iio: dac: add mcp4822 Date: Wed, 5 Apr 2023 16:01:13 +0200 Message-Id: <20230405140114.99011-4-frattaroli.nicolas@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230405140114.99011-1-frattaroli.nicolas@gmail.com> References: <20230405140114.99011-1-frattaroli.nicolas@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-0.2 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1762346334552056518?= X-GMAIL-MSGID: =?utf-8?q?1762346410964898399?= The MCP4801, MCP4802, MCP4811, MCP4812, MCP4821, and MCP4822 are SPI digital-to-analog converters by Microchip, which have an internal voltage reference, in contrast to the MCP49xx series of DACs which use an external voltage reference. Thus, these need a separate binding, as to not overcomplicate the mcp4922 binding. Signed-off-by: Nicolas Frattaroli --- .../bindings/iio/dac/microchip,mcp4822.yaml | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 Documentation/devicetree/bindings/iio/dac/microchip,mcp4822.yaml diff --git a/Documentation/devicetree/bindings/iio/dac/microchip,mcp4822.yaml b/Documentation/devicetree/bindings/iio/dac/microchip,mcp4822.yaml new file mode 100644 index 000000000000..c6eaf0079add --- /dev/null +++ b/Documentation/devicetree/bindings/iio/dac/microchip,mcp4822.yaml @@ -0,0 +1,49 @@ +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/iio/dac/microchip,mcp4822.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Microchip MCP4801, MCP4802, MCP4811, MCP4812, MCP4821 and MCP4822 SPI DACs + +maintainers: + - Nicolas Frattaroli + +properties: + compatible: + enum: + - microchip,mcp4801 + - microchip,mcp4802 + - microchip,mcp4811 + - microchip,mcp4812 + - microchip,mcp4821 + - microchip,mcp4822 + + reg: + maxItems: 1 + + vdd-supply: true + +required: + - compatible + - reg + - vdd-supply + +allOf: + - $ref: /schemas/spi/spi-peripheral-props.yaml# + +unevaluatedProperties: false + +examples: + - | + spi { + #address-cells = <1>; + #size-cells = <0>; + + dac@0 { + compatible = "microchip,mcp4821"; + reg = <0>; + vdd-supply = <&dac_reg>; + }; + }; +... From patchwork Wed Apr 5 14:01:14 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Frattaroli X-Patchwork-Id: 79613 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp332997vqo; Wed, 5 Apr 2023 07:06:31 -0700 (PDT) X-Google-Smtp-Source: AKy350ZOjEsfwhpNEW7IEXgbP2Fq3iKPEdZqFu9PHAfF6VZvCDtbujKHM9q9bi2/Tt/hm9htJv1t X-Received: by 2002:aa7:c0d1:0:b0:501:cf67:97fc with SMTP id j17-20020aa7c0d1000000b00501cf6797fcmr1941918edp.10.1680703590562; Wed, 05 Apr 2023 07:06:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680703590; cv=none; d=google.com; s=arc-20160816; b=T0QbKr5LaITApx8vEAua/vWUcce0YPmkvMt7wP7UXlB8YDTEIxjEpcZuZSZl01i5AZ Sp+T0H4mfiTf+sQnsdJDKZsotoh8YhhvZdIjJZOs9JDAK2trL2wLwzmqvKbHIfmYk8LT 7LEnOCrAmF0bxKZ2YTm059Ixz3U/cQXgzLTszbCld960JNIn9BHOWIGXlnIpFnkb0uBd aAWI1tniGJAZyExtwjIaQVyTdiukaj3fozvCUYlaSiyGkDO4al1zVrLlSIIAVMeaATsq +cMPINplyiera1elWvdCC/Le1QKLCNS8iI6Qn06Ht/jQ59EGLp8Zw45YAG92evW4yvyi Dklg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=7CFv3XBpVecjFAWjZh9EMMv7oN85dxMWirjY5MCFhvU=; b=fCtjE00LeBTf1Rb1FJkLlr3iae8+xNdd4/fgvJWWpnTrEosUw7RvAxszimB3OWmX1g 6W+5h5SmWyEcAV4jiVertXK6okCXQzQEU1vCxfNUwDbr3dErOiTMHPdbMm/dENZ6IDBQ zAuFqjlb0ZiXp+w9TPtydLjajoOo09npouMdS8NjOGRv5hvrCQKt/aTcZiOGnc3LLdLa 6lgAlpkiFMZ636vkgABbfBiY6+QrCH8C+9Egdbdix7V/twU2omKSPhvWXjZcXy54ufQa 5CXE1eakB+WGAZdba1J80HYmQ3nBiKY5QfSkhoGRTDeJRxgvz2yokVgEMhpLLsN0rNhr hHcQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=WVIqZzsx; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id e3-20020a50ec83000000b00502259b5834si986663edr.564.2023.04.05.07.06.04; Wed, 05 Apr 2023 07:06:30 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=WVIqZzsx; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238467AbjDEOEi (ORCPT + 99 others); Wed, 5 Apr 2023 10:04:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42568 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238042AbjDEODU (ORCPT ); Wed, 5 Apr 2023 10:03:20 -0400 Received: from mail-wm1-x329.google.com (mail-wm1-x329.google.com [IPv6:2a00:1450:4864:20::329]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8E27272AE; Wed, 5 Apr 2023 07:01:38 -0700 (PDT) Received: by mail-wm1-x329.google.com with SMTP id hg25-20020a05600c539900b003f05a99a841so4118981wmb.3; Wed, 05 Apr 2023 07:01:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1680703295; 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; bh=7CFv3XBpVecjFAWjZh9EMMv7oN85dxMWirjY5MCFhvU=; b=WVIqZzsxIOJEdoj0PJDwxV1df1OqJEQyAhxFdT6lPYDCYxgpW+2PpQqKiAnco4k4OS TWisiU6ATOa+TSuCXloWUBKgWPgQdEsDHIoFVaZ7DQn/dqywAMAKvkf3l5OvqldEC0Q4 FH9sst45KoVUNbnj4MFpySdgCurtB/AkNRg4yzvsXRFfQMOMasdZV+kxEyhXbKgY7wHd IdjbTzqfDCIvOgOvdEX4HOPZdu6BYONt7TV+sRzxvYJMXzJqBRfx2Tcqepz4MeVsMKIS OIjMsDkPmY8z+Shvmy2FOZmUE+EQiTy+Kg0DvWLsjZYIoa6O10eeJBEdMjoM+F6jP017 LLNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680703295; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=7CFv3XBpVecjFAWjZh9EMMv7oN85dxMWirjY5MCFhvU=; b=lqSwgS9ZhTviV2puEAz748vTN7jhodzWyI//PT8uQHKOEHkMgzG0Xc1DZPt6NNIkhD FPJ0PTX9BwmFl2XbYDBEP0ETeYe2iPAeF+1DmirJmnY2SL4l0lc7MJF1C0ysqos9HGyK didlX9xbRPNar957EcFnIqnLjFI7HiO7e+lxgwFnYpjPQI0OjHpZt5dLCNxlB9q3slOO jnsHTAWukkOdwL5DukrMWNxqzVjIxVaApFcKy2erXxz/bvvbxBV2tfHobaI2roIbSs59 VXg2lTLfYpoZQLIfDT0oi2Z3RuF+mJQVL5DJA2gmyL0h5VM7HmKOhhF6oGzBqLt45i0u XsnQ== X-Gm-Message-State: AAQBX9etHo2Mvp0X9Sa51/W880yhMMLyI5QaiAMjHNuKI0ABoonQG/MK RN7+KWCD8IwVwgaAohSAdYnlP1ctLyc= X-Received: by 2002:a1c:4c16:0:b0:3ee:1084:aa79 with SMTP id z22-20020a1c4c16000000b003ee1084aa79mr1724440wmf.20.1680703295301; Wed, 05 Apr 2023 07:01:35 -0700 (PDT) Received: from archbox.v.cablecom.net (84-72-105-84.dclient.hispeed.ch. [84.72.105.84]) by smtp.gmail.com with ESMTPSA id g6-20020a05600c4ec600b003edc4788fa0sm2412383wmq.2.2023.04.05.07.01.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Apr 2023 07:01:34 -0700 (PDT) From: Nicolas Frattaroli To: Jonathan Cameron , Lars-Peter Clausen Cc: Nicolas Frattaroli , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 4/4] iio: dac: mcp4922: add support for mcp48xx series chips Date: Wed, 5 Apr 2023 16:01:14 +0200 Message-Id: <20230405140114.99011-5-frattaroli.nicolas@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230405140114.99011-1-frattaroli.nicolas@gmail.com> References: <20230405140114.99011-1-frattaroli.nicolas@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-0.2 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1762345448365148248?= X-GMAIL-MSGID: =?utf-8?q?1762345448365148248?= The MCP4801, MCP4802, MCP4811, MCP4812, MCP4821 and MCP4822 DACs are analogous to their MCP49XX counterparts, but contain an internal 2.048V voltage reference. Add support for them by refactoring the driver to allow for chips without a vref supply, and add the necessary device IDs. Signed-off-by: Nicolas Frattaroli --- drivers/iio/dac/mcp4922.c | 112 ++++++++++++++++++++++++++++---------- 1 file changed, 84 insertions(+), 28 deletions(-) diff --git a/drivers/iio/dac/mcp4922.c b/drivers/iio/dac/mcp4922.c index 0b9458cbbcff..56dcb90c8464 100644 --- a/drivers/iio/dac/mcp4922.c +++ b/drivers/iio/dac/mcp4922.c @@ -3,7 +3,8 @@ * mcp4922.c * * Driver for Microchip Digital to Analog Converters. - * Supports MCP4902, MCP4912, and MCP4922. + * Supports MCP4902, MCP4912, MCP4921, MCP4922, MCP4801, MCP4802, MCP4811, + * MCP4812, MCP4821, and MCP4822. * * Copyright (c) 2014 EMAC Inc. */ @@ -16,14 +17,21 @@ #include #include -#define MCP4922_NUM_CHANNELS 2 -#define MCP4921_NUM_CHANNELS 1 +#define MCP4922_NUM_CHANNELS 2 +#define MCP4921_NUM_CHANNELS 1 +#define MCP48XX_INTERNAL_VREF_MV 2048 enum mcp4922_supported_device_ids { ID_MCP4902, ID_MCP4912, ID_MCP4921, ID_MCP4922, + ID_MCP4801, + ID_MCP4802, + ID_MCP4811, + ID_MCP4812, + ID_MCP4821, + ID_MCP4822, }; struct mcp4922_state { @@ -50,6 +58,35 @@ struct mcp4922_state { }, \ } +static bool mcp4922_needs_vref(int device_id) +{ + switch (device_id) { + case ID_MCP4902: + case ID_MCP4912: + case ID_MCP4921: + case ID_MCP4922: + return true; + default: + return false; + } +} + +static int mcp4922_num_channels(int device_id) +{ + switch (device_id) { + case ID_MCP4902: + case ID_MCP4912: + case ID_MCP4922: + case ID_MCP4802: + case ID_MCP4812: + case ID_MCP4822: + return MCP4922_NUM_CHANNELS; + default: + return MCP4921_NUM_CHANNELS; + } + +} + static int mcp4922_spi_write(struct mcp4922_state *state, u8 addr, u32 val) { state->mosi[1] = val & 0xff; @@ -108,11 +145,17 @@ static int mcp4922_write_raw(struct iio_dev *indio_dev, } } -static const struct iio_chan_spec mcp4922_channels[4][MCP4922_NUM_CHANNELS] = { +static const struct iio_chan_spec mcp4922_channels[10][MCP4922_NUM_CHANNELS] = { [ID_MCP4902] = { MCP4922_CHAN(0, 8), MCP4922_CHAN(1, 8) }, [ID_MCP4912] = { MCP4922_CHAN(0, 10), MCP4922_CHAN(1, 10) }, [ID_MCP4921] = { MCP4922_CHAN(0, 12), {} }, [ID_MCP4922] = { MCP4922_CHAN(0, 12), MCP4922_CHAN(1, 12) }, + [ID_MCP4801] = { MCP4922_CHAN(0, 8), {} }, + [ID_MCP4802] = { MCP4922_CHAN(0, 8), MCP4922_CHAN(1, 8) }, + [ID_MCP4811] = { MCP4922_CHAN(0, 10), {} }, + [ID_MCP4812] = { MCP4922_CHAN(0, 10), MCP4922_CHAN(1, 10) }, + [ID_MCP4821] = { MCP4922_CHAN(0, 12), {} }, + [ID_MCP4822] = { MCP4922_CHAN(0, 12), MCP4922_CHAN(1, 12) }, }; static const struct iio_info mcp4922_info = { @@ -133,25 +176,31 @@ static int mcp4922_probe(struct spi_device *spi) state = iio_priv(indio_dev); state->spi = spi; - state->vref_reg = devm_regulator_get(&spi->dev, "vref"); - if (IS_ERR(state->vref_reg)) - return dev_err_probe(&spi->dev, PTR_ERR(state->vref_reg), - "Vref regulator not specified\n"); + id = spi_get_device_id(spi); + if (mcp4922_needs_vref(id->driver_data)) { + state->vref_reg = devm_regulator_get(&spi->dev, "vref"); + if (IS_ERR(state->vref_reg)) + return dev_err_probe(&spi->dev, PTR_ERR(state->vref_reg), + "Vref regulator not specified\n"); - ret = regulator_enable(state->vref_reg); - if (ret) { - dev_err(&spi->dev, "Failed to enable vref regulator: %d\n", - ret); - return ret; - } + ret = regulator_enable(state->vref_reg); + if (ret) { + dev_err(&spi->dev, "Failed to enable vref regulator: %d\n", + ret); + return ret; + } - ret = regulator_get_voltage(state->vref_reg); - if (ret < 0) { - dev_err(&spi->dev, "Failed to read vref regulator: %d\n", - ret); - goto error_disable_vref_reg; + ret = regulator_get_voltage(state->vref_reg); + if (ret < 0) { + dev_err(&spi->dev, "Failed to read vref regulator: %d\n", + ret); + goto error_disable_vref_reg; + } + state->vref_mv = ret / 1000; + } else { + state->vref_mv = MCP48XX_INTERNAL_VREF_MV; } - state->vref_mv = ret / 1000; + state->vdd_reg = devm_regulator_get(&spi->dev, "vdd"); if (IS_ERR(state->vdd_reg)) { @@ -167,14 +216,10 @@ static int mcp4922_probe(struct spi_device *spi) } spi_set_drvdata(spi, indio_dev); - id = spi_get_device_id(spi); indio_dev->info = &mcp4922_info; indio_dev->modes = INDIO_DIRECT_MODE; indio_dev->channels = mcp4922_channels[id->driver_data]; - if (id->driver_data == ID_MCP4921) - indio_dev->num_channels = MCP4921_NUM_CHANNELS; - else - indio_dev->num_channels = MCP4922_NUM_CHANNELS; + indio_dev->num_channels = mcp4922_num_channels(id->driver_data); indio_dev->name = id->name; ret = iio_device_register(indio_dev); @@ -188,7 +233,9 @@ static int mcp4922_probe(struct spi_device *spi) error_disable_vdd_reg: regulator_disable(state->vdd_reg); error_disable_vref_reg: - regulator_disable(state->vref_reg); + if (mcp4922_needs_vref(id->driver_data)) + regulator_disable(state->vref_reg); + return ret; } @@ -197,11 +244,14 @@ static void mcp4922_remove(struct spi_device *spi) { struct iio_dev *indio_dev = spi_get_drvdata(spi); struct mcp4922_state *state; + const struct spi_device_id *id = spi_get_device_id(spi); iio_device_unregister(indio_dev); state = iio_priv(indio_dev); regulator_disable(state->vdd_reg); - regulator_disable(state->vref_reg); + if (mcp4922_needs_vref(id->driver_data)) { + regulator_disable(state->vref_reg); + } } static const struct spi_device_id mcp4922_id[] = { @@ -209,6 +259,12 @@ static const struct spi_device_id mcp4922_id[] = { {"mcp4912", ID_MCP4912}, {"mcp4921", ID_MCP4921}, {"mcp4922", ID_MCP4922}, + {"mcp4801", ID_MCP4801}, + {"mcp4802", ID_MCP4802}, + {"mcp4811", ID_MCP4811}, + {"mcp4812", ID_MCP4812}, + {"mcp4821", ID_MCP4821}, + {"mcp4822", ID_MCP4822}, {} }; MODULE_DEVICE_TABLE(spi, mcp4922_id); @@ -224,5 +280,5 @@ static struct spi_driver mcp4922_driver = { module_spi_driver(mcp4922_driver); MODULE_AUTHOR("Michael Welling "); -MODULE_DESCRIPTION("Microchip MCP4902, MCP4912, MCP4922 DAC"); +MODULE_DESCRIPTION("Microchip MCP49XX and MCP48XX DAC"); MODULE_LICENSE("GPL v2");