From patchwork Thu Jul 27 11:01:20 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Antoniu Miclaus X-Patchwork-Id: 126914 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:a985:0:b0:3e4:2afc:c1 with SMTP id t5csp1022082vqo; Thu, 27 Jul 2023 04:16:24 -0700 (PDT) X-Google-Smtp-Source: APBJJlG+zC8g1CrVcrOKqRJWpGI3tsXnL4Vlu7FsHXJEyZ3Yt87z/M8wOBvKyLXwZmbyrLq2gZxa X-Received: by 2002:a05:6a00:1798:b0:686:a10b:e8b with SMTP id s24-20020a056a00179800b00686a10b0e8bmr5842553pfg.8.1690456584075; Thu, 27 Jul 2023 04:16:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690456584; cv=none; d=google.com; s=arc-20160816; b=rlbrB4q15y/qvK//nAbInTNQlBkKVZaS6DXLnbSyhheqBtdnbwbpcohAQ6C0yFv55z 0JbzdSwujlgliSJcL6xDTSPc21n5QxtgzoXZm4P/IYA1pCu0Ba/p/zZpLPMM2kwRT9v+ fJLkeLMouOL5mWlHzUN9OS490I67Pul7XcfXyaj3pRKidyO0IjcEhIh8RkVasXZSTjwC jKdNKTiBSNFt4E1hdBgBYVydIfibEuGfROUV8vxO732pHZDeyqlrbP2RWeG91T7RBjej /0+SNHhmVUPiBJiyqL8ZrKUXChVJJSBLuql/nBl8V3CEIknEHZSi7KZFThZlZwIxaO4x DBxA== 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 :message-id:date:subject:cc:to:from; bh=17xskvpfzxGHPgePXbSAKBPS0ebn5oiSG72g8/9/gGI=; fh=UzJefE9RYbLi18kqdyRDF9Ifql1AQscxes0LCEBfz7A=; b=WtOtlvRGB3jn9Iugdomh+2JgOD2O+iVTsouQdjWiWOlN9+Mcg5TImsimLObB6M1SSM zriKwERuYN1Xk5SuJFugezIyawKK/FqhG6OcUm5xLLDvBCjTxIioN48zNt++VQdfu5Ww 3y3u+Dsh/NuAyKkDE739/w8jeuFCqh87nFC9fgbuJaPgiNRKREdRCHwJrZrOBhqHMOFY MReh7oh/b8eo+iZvclxFXLBMt2vKkw2zhJdvh8vBCVGNOuRzk9tTH+iNi8FTsneGDvPm jUFZ+0J78wSwhACPbhvkOsYNd7cCt/AFCFhgr/VqcePAprh8BdrmrvrKP23iYbfGE1fg XnEw== ARC-Authentication-Results: i=1; mx.google.com; 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=fail (p=NONE sp=NONE dis=NONE) header.from=analog.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id l34-20020a635b62000000b0055c51cc6265si1066739pgm.551.2023.07.27.04.16.10; Thu, 27 Jul 2023 04:16:24 -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; 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=fail (p=NONE sp=NONE dis=NONE) header.from=analog.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232363AbjG0LCR (ORCPT + 99 others); Thu, 27 Jul 2023 07:02:17 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44026 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232394AbjG0LCO (ORCPT ); Thu, 27 Jul 2023 07:02:14 -0400 Received: from mx0a-00128a01.pphosted.com (mx0a-00128a01.pphosted.com [148.163.135.77]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C5CA21FED; Thu, 27 Jul 2023 04:02:13 -0700 (PDT) Received: from pps.filterd (m0167088.ppops.net [127.0.0.1]) by mx0a-00128a01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 36RAS5SV027907; Thu, 27 Jul 2023 07:02:10 -0400 Received: from nwd2mta4.analog.com ([137.71.173.58]) by mx0a-00128a01.pphosted.com (PPS) with ESMTPS id 3s36afnrdf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 27 Jul 2023 07:02:10 -0400 Received: from ASHBMBX9.ad.analog.com (ASHBMBX9.ad.analog.com [10.64.17.10]) by nwd2mta4.analog.com (8.14.7/8.14.7) with ESMTP id 36RB28Fl032974 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Thu, 27 Jul 2023 07:02:08 -0400 Received: from ASHBCASHYB5.ad.analog.com (10.64.17.133) by ASHBMBX9.ad.analog.com (10.64.17.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.14; Thu, 27 Jul 2023 07:02:08 -0400 Received: from ASHBMBX8.ad.analog.com (10.64.17.5) by ASHBCASHYB5.ad.analog.com (10.64.17.133) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.14; Thu, 27 Jul 2023 07:02:06 -0400 Received: from zeus.spd.analog.com (10.66.68.11) by ashbmbx8.ad.analog.com (10.64.17.5) with Microsoft SMTP Server id 15.2.986.14 via Frontend Transport; Thu, 27 Jul 2023 07:02:06 -0400 Received: from amiclaus-VirtualBox.ad.analog.com (AMICLAUS-L02.ad.analog.com [10.48.65.194]) by zeus.spd.analog.com (8.15.1/8.15.1) with ESMTP id 36RB1urn001199; Thu, 27 Jul 2023 07:01:58 -0400 From: Antoniu Miclaus To: , , , , , , CC: Antoniu Miclaus Subject: [PATCH v2 1/2] dt-bindings:iio:frequency:admv1013: add vcc regs Date: Thu, 27 Jul 2023 14:01:20 +0300 Message-ID: <20230727110121.93546-1-antoniu.miclaus@analog.com> X-Mailer: git-send-email 2.41.0 MIME-Version: 1.0 X-ADIRuleOP-NewSCL: Rule Triggered X-Proofpoint-GUID: MnZL5oJ9i-3826ZHf8AnedJwyTjco8kq X-Proofpoint-ORIG-GUID: MnZL5oJ9i-3826ZHf8AnedJwyTjco8kq X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.957,Hydra:6.0.591,FMLib:17.11.176.26 definitions=2023-07-27_06,2023-07-26_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 phishscore=0 suspectscore=0 mlxscore=0 bulkscore=0 mlxlogscore=999 clxscore=1015 spamscore=0 impostorscore=0 adultscore=0 lowpriorityscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2306200000 definitions=main-2307270098 X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_LOW, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham 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: INBOX X-GMAIL-THRID: 1772572202704385370 X-GMAIL-MSGID: 1772572202704385370 Add bindings for the VCC regulators of the ADMV1013 microware upconverter. Signed-off-by: Antoniu Miclaus --- changes in v2: - make the vcc regulators as required. .../bindings/iio/frequency/adi,admv1013.yaml | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/Documentation/devicetree/bindings/iio/frequency/adi,admv1013.yaml b/Documentation/devicetree/bindings/iio/frequency/adi,admv1013.yaml index fc813bcb6532..f2eb2287ed9e 100644 --- a/Documentation/devicetree/bindings/iio/frequency/adi,admv1013.yaml +++ b/Documentation/devicetree/bindings/iio/frequency/adi,admv1013.yaml @@ -39,6 +39,46 @@ properties: description: Analog voltage regulator. + vcc-drv-supply: + description: + RF Driver voltage regulator. + + vcc2-drv-supply: + description: + RF predriver voltage regulator. + + vcc-vva-supply: + description: + VVA Control Circuit voltage regulator. + + vcc-amp1-supply: + description: + RF Amplifier 1 voltage regulator. + + vcc-amp2-supply: + description: + RF Amplifier 2 voltage regulator. + + vcc-env-supply: + description: + Envelope Detector voltage regulator. + + vcc-bg-supply: + description: + Mixer Chip Band Gap Circuit voltage regulator. + + vcc-bg2-supply: + description: + VGA Chip Band Gap Circuit voltage regulator. + + vcc-mixer-supply: + description: + Mixer voltage regulator. + + vcc-quad-supply: + description: + Quadruppler voltage regulator. + adi,detector-enable: description: Enable the Envelope Detector available at output pins VENV_P and @@ -69,6 +109,16 @@ required: - clocks - clock-names - vcm-supply + - vcc-drv-supply + - vcc2-drv-supply + - vcc-vva-supply + - vcc-amp1-supply + - vcc-amp2-supply + - vcc-env-supply + - vcc-bg-supply + - vcc-bg2-supply + - vcc-mixer-supply + - vcc-quad-supply allOf: - $ref: /schemas/spi/spi-peripheral-props.yaml# @@ -87,6 +137,16 @@ examples: clocks = <&admv1013_lo>; clock-names = "lo_in"; vcm-supply = <&vcm>; + vcc-drv-supply = <&vcc_drv>; + vcc2-drv-supply = <&vcc2_drv>; + vcc-vva-supply = <&vcc_vva>; + vcc-amp1-supply = <&vcc_amp1>; + vcc-amp2-supply = <&vcc_amp2>; + vcc-env-supply = <&vcc_env>; + vcc-bg-supply = <&vcc_bg>; + vcc-bg2-supply = <&vcc_bg2>; + vcc-mixer-supply = <&vcc_mixer>; + vcc-quad-supply = <&vcc_quad>; adi,quad-se-mode = "diff"; adi,detector-enable; }; From patchwork Thu Jul 27 11:01:21 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Antoniu Miclaus X-Patchwork-Id: 126916 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:a985:0:b0:3e4:2afc:c1 with SMTP id t5csp1025737vqo; Thu, 27 Jul 2023 04:23:45 -0700 (PDT) X-Google-Smtp-Source: APBJJlF51QKc1m7iaIHberjL1dSkSOkpOaByY5M6Jekeg/nocuU8fGSM42vUoQKosGN/weahQaEG X-Received: by 2002:a05:6a20:1612:b0:125:4d74:ac77 with SMTP id l18-20020a056a20161200b001254d74ac77mr4977955pzj.42.1690457024960; Thu, 27 Jul 2023 04:23:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690457024; cv=none; d=google.com; s=arc-20160816; b=L+ajMGc6tckbsVPugFJPk6TFlM0qAbC7htTQmwjIOIaKH+pUA9KtxlTQb5/u1EAorT ots9N2WQVavHBeu+A+lEmDHXx54aKKl59K3yq5M2gtzdtXobdbZ9VHkusCxmfZ5rq/Tl 8AsMLuHwjCqV2ks42Caz7l5ULuPzRNeb++FOwCHxwBW/1S1ON2AtN8Zfbg3oUDcgY+Qa J+1GP6W41amS+jINe/f+oP/BYzkF0ib+mOP1n3OVugEggxea9JCAmkzOWhaLPY0vdusx 0WJIGd+z0x9M+kX2ydTg1ylPwLNHQPxe4OeVU5zdQsSm99g82TNsbSjWxjQvw1qdTvdl egdg== 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; bh=4BtlGvThdtsyMMM9aPghCDgT/SR1eo8mqWDDXEInjZ8=; fh=UzJefE9RYbLi18kqdyRDF9Ifql1AQscxes0LCEBfz7A=; b=FMNF606EM6gfmnxWJsjwyyCenngKeSftMoZoZ35B/blS5BoOfe9bQqKnS4MmnJhiKy lGurPa5qbQuAMTjp8YQXzFz8d72BuJyN//uHs1KkshTh7Pi+qoPaYADvOj2INhCQCEbw +qxhf50jALRkmVzqxbKTdEHgZsXLGpuXIRc0LuBmKJIA/57X644qqXzKiWQu86nV15Jy 6gJ+qHsNulNAW3gH8OEFzuKb+Wdm4kBvnVMbRbULNSXEa+giErCiArg6wKFO9zREl2Y6 xX4a0iS8C2h8eEJl2VVj1TbGQzQXB29AQw32AztrMUfna8OtVEdt5doB3+UsyhcedYoF OsOA== ARC-Authentication-Results: i=1; mx.google.com; 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=fail (p=NONE sp=NONE dis=NONE) header.from=analog.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id cv6-20020a056a0044c600b00682c0908d51si1255118pfb.126.2023.07.27.04.23.31; Thu, 27 Jul 2023 04:23:44 -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; 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=fail (p=NONE sp=NONE dis=NONE) header.from=analog.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232418AbjG0LCV (ORCPT + 99 others); Thu, 27 Jul 2023 07:02:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44226 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232732AbjG0LCQ (ORCPT ); Thu, 27 Jul 2023 07:02:16 -0400 Received: from mx0a-00128a01.pphosted.com (mx0a-00128a01.pphosted.com [148.163.135.77]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CDD9110D2; Thu, 27 Jul 2023 04:02:15 -0700 (PDT) Received: from pps.filterd (m0167089.ppops.net [127.0.0.1]) by mx0a-00128a01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 36RAFLYO027025; Thu, 27 Jul 2023 07:02:12 -0400 Received: from nwd2mta4.analog.com ([137.71.173.58]) by mx0a-00128a01.pphosted.com (PPS) with ESMTPS id 3s36ahws23-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 27 Jul 2023 07:02:12 -0400 Received: from ASHBMBX9.ad.analog.com (ASHBMBX9.ad.analog.com [10.64.17.10]) by nwd2mta4.analog.com (8.14.7/8.14.7) with ESMTP id 36RB2B9v032980 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Thu, 27 Jul 2023 07:02:11 -0400 Received: from ASHBMBX8.ad.analog.com (10.64.17.5) by ASHBMBX9.ad.analog.com (10.64.17.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.14; Thu, 27 Jul 2023 07:02:10 -0400 Received: from zeus.spd.analog.com (10.66.68.11) by ashbmbx8.ad.analog.com (10.64.17.5) with Microsoft SMTP Server id 15.2.986.14 via Frontend Transport; Thu, 27 Jul 2023 07:02:10 -0400 Received: from amiclaus-VirtualBox.ad.analog.com (AMICLAUS-L02.ad.analog.com [10.48.65.194]) by zeus.spd.analog.com (8.15.1/8.15.1) with ESMTP id 36RB1uro001199; Thu, 27 Jul 2023 07:02:02 -0400 From: Antoniu Miclaus To: , , , , , , CC: Antoniu Miclaus Subject: [PATCH v2 2/2] drivers:iio:admv1013: add vcc regulators Date: Thu, 27 Jul 2023 14:01:21 +0300 Message-ID: <20230727110121.93546-2-antoniu.miclaus@analog.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230727110121.93546-1-antoniu.miclaus@analog.com> References: <20230727110121.93546-1-antoniu.miclaus@analog.com> MIME-Version: 1.0 X-ADIRuleOP-NewSCL: Rule Triggered X-Proofpoint-ORIG-GUID: ArSfbOZw0eIGroNO4JsVPDHSoDtdp-SS X-Proofpoint-GUID: ArSfbOZw0eIGroNO4JsVPDHSoDtdp-SS X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.957,Hydra:6.0.591,FMLib:17.11.176.26 definitions=2023-07-27_06,2023-07-26_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 spamscore=0 mlxscore=0 suspectscore=0 bulkscore=0 lowpriorityscore=0 adultscore=0 mlxlogscore=999 phishscore=0 malwarescore=0 impostorscore=0 clxscore=1015 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2306200000 definitions=main-2307270098 X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_LOW, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham 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: INBOX X-GMAIL-THRID: 1772572664936340255 X-GMAIL-MSGID: 1772572664936340255 Add regulators for the VCC supplies of the admv1013. The patch aims to align the implementation with the current admv1014 driver where all the VCC supplies are handled as regulators. Signed-off-by: Antoniu Miclaus --- no changes in v2. drivers/iio/frequency/admv1013.c | 35 ++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/drivers/iio/frequency/admv1013.c b/drivers/iio/frequency/admv1013.c index 9bf8337806fc..086e2f35b52c 100644 --- a/drivers/iio/frequency/admv1013.c +++ b/drivers/iio/frequency/admv1013.c @@ -73,6 +73,7 @@ #define ADMV1013_REG_ADDR_READ_MSK GENMASK(6, 1) #define ADMV1013_REG_ADDR_WRITE_MSK GENMASK(22, 17) #define ADMV1013_REG_DATA_MSK GENMASK(16, 1) +#define ADMV1013_VCC_NUM_REGULATORS 10 enum { ADMV1013_IQ_MODE, @@ -96,6 +97,7 @@ struct admv1013_state { /* Protect against concurrent accesses to the device and to data */ struct mutex lock; struct regulator *reg; + struct regulator_bulk_data vcc_regs[ADMV1013_VCC_NUM_REGULATORS]; struct notifier_block nb; unsigned int input_mode; unsigned int quad_se_mode; @@ -379,6 +381,11 @@ static const struct iio_info admv1013_info = { .debugfs_reg_access = &admv1013_reg_access, }; +static const char * const admv1013_reg_name[] = { + "vcc-drv", "vcc2-drv", "vcc-vva", "vcc-amp1", "vcc-amp2", + "vcc-env", "vcc-bg", "vcc-bg2", "vcc-mixer", "vcc-quad" +}; + static int admv1013_freq_change(struct notifier_block *nb, unsigned long action, void *data) { struct admv1013_state *st = container_of(nb, struct admv1013_state, nb); @@ -495,6 +502,11 @@ static void admv1013_reg_disable(void *data) regulator_disable(data); } +static void admv1013_vcc_reg_disable(void *data) +{ + regulator_bulk_disable(ADMV1013_VCC_NUM_REGULATORS, data); +} + static void admv1013_powerdown(void *data) { unsigned int enable_reg, enable_reg_msk; @@ -520,6 +532,7 @@ static void admv1013_powerdown(void *data) static int admv1013_properties_parse(struct admv1013_state *st) { int ret; + unsigned int i; const char *str; struct spi_device *spi = st->spi; @@ -554,6 +567,17 @@ static int admv1013_properties_parse(struct admv1013_state *st) return dev_err_probe(&spi->dev, PTR_ERR(st->reg), "failed to get the common-mode voltage\n"); + for (i = 0; i < ADMV1013_VCC_NUM_REGULATORS; ++i) + st->vcc_regs[i].supply = admv1013_reg_name[i]; + + ret = devm_regulator_bulk_get(&st->spi->dev, + ADMV1013_VCC_NUM_REGULATORS, + st->vcc_regs); + if (ret) { + dev_err(&spi->dev, "Failed to request VCC regulators"); + return ret; + } + return 0; } @@ -591,6 +615,17 @@ static int admv1013_probe(struct spi_device *spi) if (ret) return ret; + ret = regulator_bulk_enable(ADMV1013_VCC_NUM_REGULATORS, st->vcc_regs); + if (ret) { + dev_err(&spi->dev, "Failed to enable regulators"); + return ret; + } + + ret = devm_add_action_or_reset(&spi->dev, admv1013_vcc_reg_disable, + st->vcc_regs); + if (ret) + return ret; + st->clkin = devm_clk_get_enabled(&spi->dev, "lo_in"); if (IS_ERR(st->clkin)) return dev_err_probe(&spi->dev, PTR_ERR(st->clkin),