From: "Andreas Färber" <afaerber@suse.de> To: netdev@vger.kernel.org Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, "Jian-Hong Pan" <starnight@g.ncu.edu.tw>, "Jiri Pirko" <jiri@resnulli.us>, "Marcel Holtmann" <marcel@holtmann.org>, "David S . Miller" <davem@davemloft.net>, "Matthias Brugger" <mbrugger@suse.com>, "Janus Piwek" <jpiwek@arroweurope.com>, "Michael Röder" <michael.roeder@avnet.eu>, "Dollar Chen" <dollar.chen@wtmec.com>, "Ken Yu" <ken.yu@rakwireless.com>, "Andreas Färber" <afaerber@suse.de>, "Ben Whitten" <ben.whitten@lairdtech.com>, "Steve deRosier" <derosier@gmail.com>, "Mark Brown" <broonie@kernel.org> Subject: [RFC net-next 14/15] net: lora: Prepare Semtech SX1257 Date: Sun, 1 Jul 2018 13:08:03 +0200 [thread overview] Message-ID: <20180701110804.32415-15-afaerber@suse.de> (raw) In-Reply-To: <20180701110804.32415-1-afaerber@suse.de> The Semtech SX1257 and Sx1255 are usually used for radios A/B of SX1301. This will not implement a netdev itself, but rather needs to interface with SX130x somehow. Cc: Ben Whitten <ben.whitten@lairdtech.com> Cc: Steve deRosier <derosier@gmail.com> Cc: Mark Brown <broonie@kernel.org> Cc: Michael Röder <michael.roeder@avnet.eu> Cc: Ken Yu (禹凯) <ken.yu@rakwireless.com> Signed-off-by: Andreas Färber <afaerber@suse.de> --- drivers/net/lora/Kconfig | 7 ++++ drivers/net/lora/Makefile | 3 ++ drivers/net/lora/sx1257.c | 96 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 106 insertions(+) create mode 100644 drivers/net/lora/sx1257.c diff --git a/drivers/net/lora/Kconfig b/drivers/net/lora/Kconfig index 3e384493cbdd..68c7480d7812 100644 --- a/drivers/net/lora/Kconfig +++ b/drivers/net/lora/Kconfig @@ -31,6 +31,13 @@ config LORA_RN2483 help Microchip RN2483/2903 +config LORA_SX1257 + tristate "Semtech SX125x SPI driver" + default y + depends on SPI + help + Semtech SX1255/1257 + config LORA_SX1276 tristate "Semtech SX127x SPI driver" default y diff --git a/drivers/net/lora/Makefile b/drivers/net/lora/Makefile index 6b6870ffbfd8..44c578bde7d5 100644 --- a/drivers/net/lora/Makefile +++ b/drivers/net/lora/Makefile @@ -16,6 +16,9 @@ obj-$(CONFIG_LORA_RN2483) += lora-rn2483.o lora-rn2483-y := rn2483.o lora-rn2483-y += rn2483_cmd.o +obj-$(CONFIG_LORA_SX1257) += lora-sx1257.o +lora-sx1257-y := sx1257.o + obj-$(CONFIG_LORA_SX1276) += lora-sx1276.o lora-sx1276-y := sx1276.o diff --git a/drivers/net/lora/sx1257.c b/drivers/net/lora/sx1257.c new file mode 100644 index 000000000000..c4e04ee3ec4b --- /dev/null +++ b/drivers/net/lora/sx1257.c @@ -0,0 +1,96 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Semtech SX1255/SX1257 LoRa transceiver + * + * Copyright (c) 2018 Andreas Färber + * + * Based on SX1301 HAL code: + * Copyright (c) 2013 Semtech-Cycleo + */ + +#include <linux/module.h> +#include <linux/of.h> +#include <linux/of_device.h> +#include <linux/spi/spi.h> + +static int sx1257_write(struct spi_device *spi, u8 reg, u8 val) +{ + u8 buf[2]; + + buf[0] = reg | BIT(7); + buf[1] = val; + return spi_write(spi, buf, 2); +} + +static int sx1257_read(struct spi_device *spi, u8 reg, u8 *val) +{ + u8 addr = reg & 0x7f; + return spi_write_then_read(spi, &addr, 1, val, 1); +} + +static int sx1257_probe(struct spi_device *spi) +{ + u8 val; + int ret; + + if (true) { + ret = sx1257_read(spi, 0x07, &val); + if (ret) { + dev_err(&spi->dev, "version read failed\n"); + return ret; + } + + dev_info(&spi->dev, "SX125x version: %02x\n", (unsigned)val); + } + + ret = sx1257_write(spi, 0x10, 1 /* + 2 */); + if (ret) { + dev_err(&spi->dev, "clk write failed\n"); + return ret; + } + + dev_info(&spi->dev, "clk written\n"); + + if (true) { + ret = sx1257_write(spi, 0x26, 13 + 2 * 16); + if (ret) { + dev_err(&spi->dev, "xosc write failed\n"); + return ret; + } + } + + dev_info(&spi->dev, "SX1257 module probed\n"); + + return 0; +} + +static int sx1257_remove(struct spi_device *spi) +{ + dev_info(&spi->dev, "SX1257 module removed\n"); + + return 0; +} + +#ifdef CONFIG_OF +static const struct of_device_id sx1257_dt_ids[] = { + { .compatible = "semtech,sx1255" }, + { .compatible = "semtech,sx1257" }, + {} +}; +MODULE_DEVICE_TABLE(of, sx1257_dt_ids); +#endif + +static struct spi_driver sx1257_spi_driver = { + .driver = { + .name = "sx1257", + .of_match_table = of_match_ptr(sx1257_dt_ids), + }, + .probe = sx1257_probe, + .remove = sx1257_remove, +}; + +module_spi_driver(sx1257_spi_driver); + +MODULE_DESCRIPTION("SX1257 SPI driver"); +MODULE_AUTHOR("Andreas Färber <afaerber@suse.de>"); +MODULE_LICENSE("GPL"); -- 2.16.4
WARNING: multiple messages have this Message-ID (diff)
From: afaerber@suse.de (Andreas Färber) To: linux-arm-kernel@lists.infradead.org Subject: [RFC net-next 14/15] net: lora: Prepare Semtech SX1257 Date: Sun, 1 Jul 2018 13:08:03 +0200 [thread overview] Message-ID: <20180701110804.32415-15-afaerber@suse.de> (raw) In-Reply-To: <20180701110804.32415-1-afaerber@suse.de> The Semtech SX1257 and Sx1255 are usually used for radios A/B of SX1301. This will not implement a netdev itself, but rather needs to interface with SX130x somehow. Cc: Ben Whitten <ben.whitten@lairdtech.com> Cc: Steve deRosier <derosier@gmail.com> Cc: Mark Brown <broonie@kernel.org> Cc: Michael R?der <michael.roeder@avnet.eu> Cc: Ken Yu (??) <ken.yu@rakwireless.com> Signed-off-by: Andreas F?rber <afaerber@suse.de> --- drivers/net/lora/Kconfig | 7 ++++ drivers/net/lora/Makefile | 3 ++ drivers/net/lora/sx1257.c | 96 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 106 insertions(+) create mode 100644 drivers/net/lora/sx1257.c diff --git a/drivers/net/lora/Kconfig b/drivers/net/lora/Kconfig index 3e384493cbdd..68c7480d7812 100644 --- a/drivers/net/lora/Kconfig +++ b/drivers/net/lora/Kconfig @@ -31,6 +31,13 @@ config LORA_RN2483 help Microchip RN2483/2903 +config LORA_SX1257 + tristate "Semtech SX125x SPI driver" + default y + depends on SPI + help + Semtech SX1255/1257 + config LORA_SX1276 tristate "Semtech SX127x SPI driver" default y diff --git a/drivers/net/lora/Makefile b/drivers/net/lora/Makefile index 6b6870ffbfd8..44c578bde7d5 100644 --- a/drivers/net/lora/Makefile +++ b/drivers/net/lora/Makefile @@ -16,6 +16,9 @@ obj-$(CONFIG_LORA_RN2483) += lora-rn2483.o lora-rn2483-y := rn2483.o lora-rn2483-y += rn2483_cmd.o +obj-$(CONFIG_LORA_SX1257) += lora-sx1257.o +lora-sx1257-y := sx1257.o + obj-$(CONFIG_LORA_SX1276) += lora-sx1276.o lora-sx1276-y := sx1276.o diff --git a/drivers/net/lora/sx1257.c b/drivers/net/lora/sx1257.c new file mode 100644 index 000000000000..c4e04ee3ec4b --- /dev/null +++ b/drivers/net/lora/sx1257.c @@ -0,0 +1,96 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Semtech SX1255/SX1257 LoRa transceiver + * + * Copyright (c) 2018 Andreas F?rber + * + * Based on SX1301 HAL code: + * Copyright (c) 2013 Semtech-Cycleo + */ + +#include <linux/module.h> +#include <linux/of.h> +#include <linux/of_device.h> +#include <linux/spi/spi.h> + +static int sx1257_write(struct spi_device *spi, u8 reg, u8 val) +{ + u8 buf[2]; + + buf[0] = reg | BIT(7); + buf[1] = val; + return spi_write(spi, buf, 2); +} + +static int sx1257_read(struct spi_device *spi, u8 reg, u8 *val) +{ + u8 addr = reg & 0x7f; + return spi_write_then_read(spi, &addr, 1, val, 1); +} + +static int sx1257_probe(struct spi_device *spi) +{ + u8 val; + int ret; + + if (true) { + ret = sx1257_read(spi, 0x07, &val); + if (ret) { + dev_err(&spi->dev, "version read failed\n"); + return ret; + } + + dev_info(&spi->dev, "SX125x version: %02x\n", (unsigned)val); + } + + ret = sx1257_write(spi, 0x10, 1 /* + 2 */); + if (ret) { + dev_err(&spi->dev, "clk write failed\n"); + return ret; + } + + dev_info(&spi->dev, "clk written\n"); + + if (true) { + ret = sx1257_write(spi, 0x26, 13 + 2 * 16); + if (ret) { + dev_err(&spi->dev, "xosc write failed\n"); + return ret; + } + } + + dev_info(&spi->dev, "SX1257 module probed\n"); + + return 0; +} + +static int sx1257_remove(struct spi_device *spi) +{ + dev_info(&spi->dev, "SX1257 module removed\n"); + + return 0; +} + +#ifdef CONFIG_OF +static const struct of_device_id sx1257_dt_ids[] = { + { .compatible = "semtech,sx1255" }, + { .compatible = "semtech,sx1257" }, + {} +}; +MODULE_DEVICE_TABLE(of, sx1257_dt_ids); +#endif + +static struct spi_driver sx1257_spi_driver = { + .driver = { + .name = "sx1257", + .of_match_table = of_match_ptr(sx1257_dt_ids), + }, + .probe = sx1257_probe, + .remove = sx1257_remove, +}; + +module_spi_driver(sx1257_spi_driver); + +MODULE_DESCRIPTION("SX1257 SPI driver"); +MODULE_AUTHOR("Andreas F?rber <afaerber@suse.de>"); +MODULE_LICENSE("GPL"); -- 2.16.4
next prev parent reply other threads:[~2018-07-01 11:11 UTC|newest] Thread overview: 173+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-07-01 11:07 [RFC net-next 00/15] net: A socket API for LoRa Andreas Färber 2018-07-01 11:07 ` Andreas Färber 2018-07-01 11:07 ` Andreas Färber 2018-07-01 11:07 ` [RFC net-next 01/15] net: Reserve protocol numbers " Andreas Färber 2018-07-01 11:07 ` Andreas Färber 2018-07-01 11:07 ` Andreas Färber 2018-07-01 11:07 ` [RFC net-next 02/15] net: lora: Define sockaddr_lora Andreas Färber 2018-07-01 11:07 ` Andreas Färber 2018-07-01 11:07 ` Andreas Färber 2018-07-01 11:07 ` [RFC net-next 03/15] net: lora: Add protocol numbers Andreas Färber 2018-07-01 11:07 ` Andreas Färber 2018-07-01 11:07 ` [RFC net-next 04/15] net: Add lora subsystem Andreas Färber 2018-07-01 11:07 ` Andreas Färber 2018-07-01 11:07 ` Andreas Färber 2018-07-01 11:07 ` [RFC net-next 05/15] HACK: net: lora: Deal with .poll_mask in 4.18-rc2 Andreas Färber 2018-07-01 11:07 ` Andreas Färber 2018-07-01 11:07 ` Andreas Färber 2018-07-02 16:22 ` Jiri Pirko 2018-07-02 16:22 ` Jiri Pirko 2018-07-02 16:59 ` Andreas Färber 2018-07-02 16:59 ` Andreas Färber 2018-07-01 11:07 ` [RFC net-next 06/15] net: lora: Prepare for device drivers Andreas Färber 2018-07-01 11:07 ` Andreas Färber 2018-07-01 11:07 ` Andreas Färber 2018-07-01 11:07 ` [RFC net-next 07/15] net: lora: Add Semtech SX1276 Andreas Färber 2018-07-01 11:07 ` Andreas Färber 2018-07-01 12:02 ` Andreas Färber 2018-07-01 12:02 ` Andreas Färber 2018-07-01 11:07 ` [RFC net-next 08/15] net: lora: sx1276: Add debugfs Andreas Färber 2018-07-01 11:07 ` Andreas Färber 2018-07-02 16:26 ` Jiri Pirko 2018-07-02 16:26 ` Jiri Pirko 2018-07-02 17:57 ` Andreas Färber 2018-07-02 17:57 ` Andreas Färber 2018-07-01 11:07 ` [RFC net-next 09/15] net: lora: Prepare EUI helpers Andreas Färber 2018-07-01 11:07 ` Andreas Färber 2018-07-01 11:07 ` [RFC net-next 10/15] net: lora: Add Microchip RN2483 Andreas Färber 2018-07-01 11:07 ` Andreas Färber 2018-07-01 11:08 ` [RFC net-next 11/15] net: lora: Add IMST WiMOD Andreas Färber 2018-07-01 11:08 ` Andreas Färber 2019-01-06 14:57 ` Heinrich Schuchardt 2019-01-06 14:57 ` Heinrich Schuchardt 2019-01-07 11:29 ` Andreas Färber 2019-01-07 11:29 ` Andreas Färber 2018-07-01 11:08 ` [RFC net-next 12/15] net: lora: Add USI WM-SG-SM-42 Andreas Färber 2018-07-01 11:08 ` Andreas Färber 2018-07-01 11:08 ` [RFC net-next 13/15] net: lora: Prepare RAK RAK811 Andreas Färber 2018-07-01 11:08 ` Andreas Färber 2018-07-01 11:08 ` Andreas Färber [this message] 2018-07-01 11:08 ` [RFC net-next 14/15] net: lora: Prepare Semtech SX1257 Andreas Färber 2018-07-01 11:08 ` [RFC net-next 15/15] net: lora: Add Semtech SX1301 Andreas Färber 2018-07-01 11:08 ` Andreas Färber 2018-07-02 11:51 ` Ben Whitten 2018-07-02 11:51 ` Ben Whitten 2018-07-03 3:01 ` Andreas Färber 2018-07-03 3:01 ` Andreas Färber 2018-07-05 8:59 ` Ben Whitten 2018-07-05 8:59 ` Ben Whitten 2018-07-05 8:59 ` Ben Whitten 2018-07-02 16:12 ` Mark Brown 2018-07-02 16:12 ` Mark Brown 2018-07-02 16:12 ` Mark Brown 2018-07-02 17:34 ` Andreas Färber 2018-07-02 17:34 ` Andreas Färber 2018-07-02 20:43 ` Ben Whitten 2018-07-02 20:43 ` Ben Whitten 2018-07-03 3:21 ` Andreas Färber 2018-07-03 3:21 ` Andreas Färber 2018-07-03 3:21 ` Andreas Färber 2018-07-05 8:43 ` Ben Whitten 2018-07-05 8:43 ` Ben Whitten 2018-07-05 8:43 ` Ben Whitten 2018-07-03 14:50 ` Mark Brown 2018-07-03 14:50 ` Mark Brown 2018-07-03 15:09 ` Andreas Färber 2018-07-03 15:09 ` Andreas Färber 2018-07-03 15:09 ` Andreas Färber 2018-07-03 15:31 ` Mark Brown 2018-07-03 15:31 ` Mark Brown 2018-07-03 15:31 ` Mark Brown 2018-07-03 16:40 ` Andreas Färber 2018-07-03 16:40 ` Andreas Färber 2018-07-04 11:43 ` Mark Brown 2018-07-04 11:43 ` Mark Brown 2018-07-04 13:41 ` Ben Whitten 2018-07-04 13:41 ` Ben Whitten 2018-07-04 13:41 ` Ben Whitten 2018-07-04 14:32 ` Mark Brown 2018-07-04 14:32 ` Mark Brown 2018-07-04 14:32 ` Mark Brown 2018-07-03 15:11 ` [RFC net-next 00/15] net: A socket API for LoRa Jian-Hong Pan 2018-07-03 15:11 ` Jian-Hong Pan 2018-07-03 15:11 ` Jian-Hong Pan 2018-08-05 0:11 ` Andreas Färber 2018-08-05 0:11 ` Andreas Färber 2018-08-05 0:11 ` Andreas Färber 2018-08-08 20:36 ` Alan Cox 2018-08-08 20:36 ` Alan Cox 2018-08-08 20:36 ` Alan Cox 2018-08-08 22:42 ` Andreas Färber 2018-08-08 22:42 ` Andreas Färber 2018-08-08 22:42 ` Andreas Färber 2018-08-09 11:59 ` Alan Cox 2018-08-09 11:59 ` Alan Cox 2018-08-09 11:59 ` Alan Cox 2018-08-09 15:02 ` Jian-Hong Pan 2018-08-09 15:02 ` Jian-Hong Pan 2018-08-09 15:02 ` Jian-Hong Pan 2018-08-09 15:21 ` Alexander Aring 2018-08-09 15:21 ` Alexander Aring 2018-08-09 15:21 ` Alexander Aring 2018-08-10 15:57 ` Alan Cox 2018-08-10 15:57 ` Alan Cox 2018-08-10 15:57 ` Alan Cox 2018-08-11 18:30 ` Stefan Schmidt 2018-08-11 18:30 ` Stefan Schmidt 2018-08-11 18:30 ` Stefan Schmidt 2018-08-12 16:49 ` Andreas Färber 2018-08-12 16:49 ` Andreas Färber 2018-08-12 16:49 ` Andreas Färber 2018-08-12 16:37 ` Jian-Hong Pan 2018-08-12 16:37 ` Jian-Hong Pan 2018-08-12 16:37 ` Jian-Hong Pan 2018-08-12 17:59 ` Andreas Färber 2018-08-12 17:59 ` Andreas Färber 2018-08-12 17:59 ` Andreas Färber 2018-08-13 12:36 ` Alan Cox 2018-08-13 12:36 ` Alan Cox 2018-08-13 12:36 ` Alan Cox 2018-08-09 15:12 ` Alexander Aring 2018-08-09 15:12 ` Alexander Aring 2018-08-09 15:12 ` Alexander Aring 2018-08-09 15:12 ` Alexander Aring 2018-08-09 0:50 ` Andreas Färber 2018-08-09 0:50 ` Andreas Färber 2018-08-09 0:50 ` Andreas Färber 2018-07-04 18:26 ` Stefan Schmidt 2018-07-04 18:26 ` Stefan Schmidt 2018-07-04 18:26 ` Stefan Schmidt 2018-07-05 10:43 ` Helmut Tschemernjak 2018-07-05 10:43 ` Helmut Tschemernjak 2018-07-05 10:43 ` Helmut Tschemernjak 2018-07-11 2:07 ` Andreas Färber 2018-07-11 2:07 ` Andreas Färber 2018-07-11 2:07 ` Andreas Färber 2018-07-11 11:45 ` Helmut Tschemernjak 2018-07-11 11:45 ` Helmut Tschemernjak 2018-07-11 11:45 ` Helmut Tschemernjak 2018-07-11 15:21 ` Ben Whitten 2018-07-11 15:21 ` Ben Whitten 2018-07-11 15:21 ` Ben Whitten 2018-07-15 18:13 ` Andreas Färber 2018-07-15 18:13 ` Andreas Färber 2018-07-15 18:13 ` Andreas Färber 2018-07-18 11:28 ` Ben Whitten 2018-07-18 11:28 ` Ben Whitten 2018-07-18 11:28 ` Ben Whitten 2018-07-18 11:28 ` Ben Whitten 2018-08-02 7:52 ` Jian-Hong Pan 2018-08-02 7:52 ` Jian-Hong Pan 2018-08-02 7:52 ` Jian-Hong Pan 2018-08-02 7:52 ` Jian-Hong Pan 2018-08-03 8:44 ` linux-lora.git and LoRaWAN (was: [RFC net-next 00/15] net: A socket API for LoRa) Andreas Färber 2018-08-03 8:44 ` Andreas Färber 2018-08-05 12:49 ` Jian-Hong Pan 2018-08-05 12:49 ` Jian-Hong Pan 2018-08-05 12:49 ` Jian-Hong Pan 2018-08-05 12:49 ` Jian-Hong Pan [not found] ` <20180803150258.791b9942@alans-desktop> 2018-08-05 14:08 ` Jian-Hong Pan 2018-08-05 14:08 ` Jian-Hong Pan 2018-08-05 13:49 ` [RFC net-next 00/15] net: A socket API for LoRa Andreas Färber 2018-08-05 13:49 ` Andreas Färber 2018-08-05 13:49 ` Andreas Färber
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=20180701110804.32415-15-afaerber@suse.de \ --to=afaerber@suse.de \ --cc=ben.whitten@lairdtech.com \ --cc=broonie@kernel.org \ --cc=davem@davemloft.net \ --cc=derosier@gmail.com \ --cc=dollar.chen@wtmec.com \ --cc=jiri@resnulli.us \ --cc=jpiwek@arroweurope.com \ --cc=ken.yu@rakwireless.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=marcel@holtmann.org \ --cc=mbrugger@suse.com \ --cc=michael.roeder@avnet.eu \ --cc=netdev@vger.kernel.org \ --cc=starnight@g.ncu.edu.tw \ /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: linkBe 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.