All of lore.kernel.org
 help / color / mirror / Atom feed
From: Simon Vincent <simon.vincent@xsilon.com>
To: alex.aring@gmail.com, linux-zigbee-devel@lists.sourceforge.net
Cc: linux-wpan@vger.kernel.org, simon.vincent@xsilon.com
Subject: [PATCHv2 linux-wpan] ieee802154: mrf24j40: Add support for MRF24J40MC
Date: Thu, 14 Aug 2014 17:52:46 +0100	[thread overview]
Message-ID: <1408035166-6336-1-git-send-email-simon.vincent@xsilon.com> (raw)

The MRF24J40MC module has an external amplifier which should be enabled.

Signed-off-by: Simon Vincent <simon.vincent@xsilon.com>
---
 drivers/net/ieee802154/mrf24j40.c | 40 +++++++++++++++++++++++++++++++++++++--
 1 file changed, 38 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ieee802154/mrf24j40.c b/drivers/net/ieee802154/mrf24j40.c
index 9e6a124..7950d01 100644
--- a/drivers/net/ieee802154/mrf24j40.c
+++ b/drivers/net/ieee802154/mrf24j40.c
@@ -43,6 +43,8 @@
 #define REG_TXSTBL   0x2E  /* TX Stabilization */
 #define REG_INTSTAT  0x31  /* Interrupt Status */
 #define REG_INTCON   0x32  /* Interrupt Control */
+#define REG_GPIO     0x33  /* GPIO */
+#define REG_TRISGPIO 0x34  /* GPIO direction */
 #define REG_RFCTL    0x36  /* RF Control Mode Register */
 #define REG_BBREG1   0x39  /* Baseband Registers */
 #define REG_BBREG2   0x3A  /* */
@@ -63,6 +65,7 @@
 #define REG_SLPCON1    0x220
 #define REG_WAKETIMEL  0x222  /* Wake-up Time Match Value Low */
 #define REG_WAKETIMEH  0x223  /* Wake-up Time Match Value High */
+#define REG_TESTMODE   0x22F  /* Test mode */
 #define REG_RX_FIFO    0x300  /* Receive FIFO */
 
 /* Device configuration: Only channels 11-26 on page 0 are supported. */
@@ -75,6 +78,8 @@
 #define RX_FIFO_SIZE 144 /* From datasheet */
 #define SET_CHANNEL_DELAY_US 192 /* From datasheet */
 
+enum mrf24j40_modules { MRF24J40, MRF24J40MA, MRF24J40MC };
+
 /* Device Private Data */
 struct mrf24j40 {
 	struct spi_device *spi;
@@ -690,6 +695,35 @@ static int mrf24j40_hw_init(struct mrf24j40 *devrec)
 	if (ret)
 		goto err_ret; 

+	if (spi_get_device_id(devrec->spi)->driver_data == MRF24J40MC) {
+		/* Enable external amplifier */
+		ret = write_long_reg(devrec, REG_TESTMODE, 0xF);
+		if (ret)
+			goto err_ret;
+
+		ret = read_short_reg(devrec, REG_TRISGPIO, &val);
+		if (ret)
+			goto err_ret;
+
+		val |= 0x8;
+		ret = write_short_reg(devrec, REG_TRISGPIO, val);
+		if (ret)
+			goto err_ret;
+
+		ret = read_short_reg(devrec, REG_GPIO, &val);
+		if (ret)
+			goto err_ret;
+
+		val |= 0x8;
+		ret = write_short_reg(devrec, REG_GPIO, val);
+		if (ret)
+			goto err_ret;
+
+		ret = write_long_reg(devrec, REG_RFCON3, 0x28);
+		if (ret)
+			goto err_ret;
+	}
+
 	return 0;
 
 err_ret:
@@ -778,8 +813,9 @@ static int mrf24j40_remove(struct spi_device *spi)
 }
 
 static const struct spi_device_id mrf24j40_ids[] = {
-	{ "mrf24j40", 0 },
-	{ "mrf24j40ma", 0 },
+	{ "mrf24j40", MRF24J40 },
+	{ "mrf24j40ma", MRF24J40MA },
+	{ "mrf24j40mc", MRF24J40MC },
 	{ },
 };
 MODULE_DEVICE_TABLE(spi, mrf24j40_ids);
-- 
1.9.1


             reply	other threads:[~2014-08-14 16:53 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-08-14 16:52 Simon Vincent [this message]
2014-08-14 18:10 ` [PATCHv2 linux-wpan] ieee802154: mrf24j40: Add support for MRF24J40MC Alexander Aring
2014-08-16 15:49   ` Alan Ott

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1408035166-6336-1-git-send-email-simon.vincent@xsilon.com \
    --to=simon.vincent@xsilon.com \
    --cc=alex.aring@gmail.com \
    --cc=linux-wpan@vger.kernel.org \
    --cc=linux-zigbee-devel@lists.sourceforge.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.