Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp3688935imu; Mon, 28 Jan 2019 09:05:46 -0800 (PST) X-Google-Smtp-Source: ALg8bN6hUjmN/oxxsdAJws1rexubA71JZhTeXmWAEdjewBe3aClHDVQTe/tlMsd3kVIQR/kisHE3 X-Received: by 2002:a63:cc4e:: with SMTP id q14mr20228614pgi.291.1548695146425; Mon, 28 Jan 2019 09:05:46 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1548695146; cv=none; d=google.com; s=arc-20160816; b=hOvxRYbuZddKSBt6x/Rs8c5Ccx2eerrLsXRVpYxDZn7nEgbrDvL7hV/hTDpOnAcd6s Pu7xhXY9IvrtERtHJ2WCWYf/8Vf+jf+4eWda6Sh72S+oB5CKxoEbmLjmv4KCKvafccH7 NdFa0cO0xmgKMC4XyANskLuuhMmM4FKMcOVQdvTR8wo5BNdgP5gXf6pStPQ/T9sZBSjh 2ABKbiCI6eB/yJ1KRuTA2Ki1ZlMIXIXkG+WfxpJD5ce80dzkIXfiJiVtqiTIk1nrAS3E yGOawhbhPzQU8X9+MQxnN17F/H+dX2r2xM/rl6zV+HuKpD8h2+RQPMhg9YUR6jfK1mwq xhpA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature; bh=L2gKyLYkowozqfijDGFMP55qaLskmB+BRZLlU0AhdSc=; b=EigPzDyqMI58vn1rX6VjJNCxni4YNK/7wmmJxVrIBAiG9hedr+HJ1lkpmKZL85+2hk 4JUc6iMx0HrhAcNH70sQ50pGoMcu8i5Yrj3wpJ7UaYghlChwkhLvw4RaRYBwHcB9UmjH 9g3MOQ9GXW1hd7AcKOSgnb90MnBxCpKNJchjldtZNibn/o79UADdrcPzspjYFslZTREU sx5pNzLo2/D+Gmc20hH/wqGGDCBeJDhWypwZa17u6pIneYEx0KaZHAhLs4iG5AI7na4x 1eBi6BRCd03Sh4N/Qe04ZWH0rkmZVc79AoK1BeWgILDy8J71xY9mUf+kqvQmof4TbxYq E5yw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@gmail.com header.s=20161025 header.b=nWY9dYgO; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e68si33364296pfb.101.2019.01.28.09.05.28; Mon, 28 Jan 2019 09:05:46 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=fail header.i=@gmail.com header.s=20161025 header.b=nWY9dYgO; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388099AbfA1REG (ORCPT + 99 others); Mon, 28 Jan 2019 12:04:06 -0500 Received: from mail-wm1-f65.google.com ([209.85.128.65]:50922 "EHLO mail-wm1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2387499AbfA1QNw (ORCPT ); Mon, 28 Jan 2019 11:13:52 -0500 Received: by mail-wm1-f65.google.com with SMTP id n190so14635177wmd.0; Mon, 28 Jan 2019 08:13:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=L2gKyLYkowozqfijDGFMP55qaLskmB+BRZLlU0AhdSc=; b=nWY9dYgO6UiwryAAXlREPXPFwRMlr1tqiOAdxRTXONzioloYS9i0ughc6wnw7PrDeD GAL/0j5bZ9j6Pv7KO+4x5fGyNPp0viMihy4/oQdLJnnaP+Cgac1BAoHYfg+rnZEmLjHN ciqWuupTZB0cHEljbowL4124PuV4vvd1BMHvDXEjXfWxs2h+Whz+HjBiV8LfrOyEOOoP b3sy90u0vET1RH8LcJTbE5zj/sDEdqC5EiVLLS96svsZYaqJjjR/bd6ZMMuqGk+2on7L wHQtnmgtbBxErLEOreRFFyiiNgOkWbqAWPeeiYzJB0yV/4cbCYwAhQMqcJAXVKIrjCkS eKDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=L2gKyLYkowozqfijDGFMP55qaLskmB+BRZLlU0AhdSc=; b=j5By9P0xLn5E5nP6qpExoKfeu9ST7Qpi1oKNiZR1RZKJ/J5E0vn73KzTukgGf9GZWU xVQhCol8mCe2ajJAHfdYwZrLa4jivAjzqM7MDf3F5IPXNE+OersGfg09HT+DDf8RjJvF 7+ubRRsbSHqdwYPxUptkFHaTmHBvB4leExqmK9CfsZuhNqVhlDsNy6agexpVB43o+sTW 5bIV9QxItUb2KuBVtuLCGw0zQ7klNQn6UPncC1KihnWMKdxlD6VC7PVPW/o8wTCoLTB4 EcClnsHUE7bTqOLU1GAZc5lW8Mo5OQcRt+b+PQ5X+pac61c5NsMjxth/6YsCWRbfbwSW Dftw== X-Gm-Message-State: AJcUukdTHJdnioR0piIGXbiZyDeV3039Miu28/o6/enJO1PNRqTupqWJ SP74I0DSmiHlukx76wZ/jWc= X-Received: by 2002:a7b:c397:: with SMTP id s23mr17096099wmj.127.1548692030062; Mon, 28 Jan 2019 08:13:50 -0800 (PST) Received: from Sarah.corp.lairdtech.com ([109.174.151.67]) by smtp.gmail.com with ESMTPSA id l20sm246445944wrb.93.2019.01.28.08.13.49 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 28 Jan 2019 08:13:49 -0800 (PST) From: Ben Whitten X-Google-Original-From: Ben Whitten To: afaerber@suse.de Cc: linux-lpwan@lists.infradead.org, Ben Whitten , "David S. Miller" , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH lora-next 04/11] net: lora: sx130x: add helper function for writing to the SX130x MCU Date: Mon, 28 Jan 2019 16:12:58 +0000 Message-Id: <20190128161306.27805-5-ben.whitten@lairdtech.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190128161306.27805-1-ben.whitten@lairdtech.com> References: <20190128161306.27805-1-ben.whitten@lairdtech.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Ben Whitten The transaction to the internal MCU starts with CMD_WAIT to start a transaction, written to CHRS followed by writing the value, the status of the command is read back from AGCSTS. Signed-off-by: Ben Whitten --- drivers/net/lora/sx130x.c | 28 ++++++++++++++++++++++++++++ drivers/net/lora/sx130x.h | 2 ++ 2 files changed, 30 insertions(+) diff --git a/drivers/net/lora/sx130x.c b/drivers/net/lora/sx130x.c index 529ca6622878..818a1c9192b3 100644 --- a/drivers/net/lora/sx130x.c +++ b/drivers/net/lora/sx130x.c @@ -337,6 +337,34 @@ static int sx130x_load_firmware(struct sx130x_priv *priv, int mcu, const struct return 0; } +static int sx130x_agc_transaction(struct sx130x_priv *priv, unsigned int val, + unsigned int *status) +{ + int ret; + + ret = regmap_write(priv->regmap, SX1301_CHRS, SX1301_AGC_CMD_WAIT); + if (ret) { + dev_err(priv->dev, "AGC transaction start failed\n"); + return ret; + } + usleep_range(1000, 2000); + + ret = regmap_write(priv->regmap, SX1301_CHRS, val); + if (ret) { + dev_err(priv->dev, "AGC transaction value failed\n"); + return ret; + } + usleep_range(1000, 2000); + + ret = regmap_read(priv->regmap, SX1301_AGCSTS, status); + if (ret) { + dev_err(priv->dev, "AGC status read failed\n"); + return ret; + } + + return 0; +} + static int sx130x_agc_calibrate(struct sx130x_priv *priv) { const struct firmware *fw; diff --git a/drivers/net/lora/sx130x.h b/drivers/net/lora/sx130x.h index 6330777f4eac..69bb9cbd1aba 100644 --- a/drivers/net/lora/sx130x.h +++ b/drivers/net/lora/sx130x.h @@ -18,6 +18,8 @@ #define SX1301_MCU_AGC_FW_VERSION 4 #define SX1301_MCU_AGC_CAL_FW_VERSION 2 +#define SX1301_AGC_CMD_WAIT 16 + #define SX1301_TX_GAIN_LUT_MAX 16 /* Page independent */ -- 2.17.1