Re: [PATCH v4] staging: nrf24: add new driver for 2.4GHz radio transceiver

2019-02-22 Thread Marcin Ciupak
On Tue, Feb 19, 2019 at 11:20:10AM +0100, Greg Kroah-Hartman wrote:
> On Wed, Feb 13, 2019 at 08:40:35PM +0100, Marcin Ciupak wrote:
> > This patch adds driver for Nordic Semiconductor nRF24L01+ radio
> > transceiver.
> > 
> > Signed-off-by: Marcin Ciupak 
> > ---
> > Changes in v2:
> >   - add terminating newlines to all logging formats
> > Changes in v3:
> >   - patch subject
> >   - comments cleanup
> >   - goto labels cleanup
> >   - scnprintf bugfix
> >   - ida_simple_remove bugfix
> > Changes in v4:
> >   - fix smatch warnings
> 
> What is preventing this from being merged today with the normal
> subsystem for this type of drivers?  Why does this have to go into
> staging?
> 
> thanks,
> 
> greg k-h

As per TODO file:
+Todo:
+- opening and closing pipes via sysfs
+- improve switching in between RX and TX
+- improve handling of MAX_RT interrupt
+- find and fix bugs
+- code cleanup

Additionally, I would like to add ioctl (or any similar) interface
as configuration via sysfs is not very efficent in here.

My beliefes are that this driver needs some time in staging, but I might
be wrong and if you believe otherwise just let me know and I will try to
push it ti regular sybsystem.

Thanks,
Marcin
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH v4] staging: nrf24: add new driver for 2.4GHz radio transceiver

2019-02-13 Thread Marcin Ciupak
This patch adds driver for Nordic Semiconductor nRF24L01+ radio
transceiver.

Signed-off-by: Marcin Ciupak 
---
Changes in v2:
  - add terminating newlines to all logging formats
Changes in v3:
  - patch subject
  - comments cleanup
  - goto labels cleanup
  - scnprintf bugfix
  - ida_simple_remove bugfix
Changes in v4:
  - fix smatch warnings

drivers/staging/Kconfig   |   2 +
 drivers/staging/Makefile  |   1 +
 drivers/staging/nrf24/Kconfig |  16 +
 drivers/staging/nrf24/Makefile|   3 +
 drivers/staging/nrf24/TODO|   7 +
 .../nrf24/devicetree/nrf24-spi0-overlay.dts   |  54 ++
 .../nrf24/devicetree/nrf24-spi1-overlay.dts   |  54 ++
 drivers/staging/nrf24/devicetree/nrf24.txt|   1 +
 drivers/staging/nrf24/nRF24L01.h  |  82 ++
 drivers/staging/nrf24/nrf24_enums.h   |  60 ++
 drivers/staging/nrf24/nrf24_hal.c | 764 +++
 drivers/staging/nrf24/nrf24_hal.h |  54 ++
 drivers/staging/nrf24/nrf24_if.c  | 893 ++
 drivers/staging/nrf24/nrf24_if.h  |  63 ++
 drivers/staging/nrf24/nrf24_sysfs.c   | 707 ++
 drivers/staging/nrf24/nrf24_sysfs.h   |  14 +
 16 files changed, 2775 insertions(+)
 create mode 100644 drivers/staging/nrf24/Kconfig
 create mode 100644 drivers/staging/nrf24/Makefile
 create mode 100644 drivers/staging/nrf24/TODO
 create mode 100644 drivers/staging/nrf24/devicetree/nrf24-spi0-overlay.dts
 create mode 100644 drivers/staging/nrf24/devicetree/nrf24-spi1-overlay.dts
 create mode 100644 drivers/staging/nrf24/devicetree/nrf24.txt
 create mode 100644 drivers/staging/nrf24/nRF24L01.h
 create mode 100644 drivers/staging/nrf24/nrf24_enums.h
 create mode 100644 drivers/staging/nrf24/nrf24_hal.c
 create mode 100644 drivers/staging/nrf24/nrf24_hal.h
 create mode 100644 drivers/staging/nrf24/nrf24_if.c
 create mode 100644 drivers/staging/nrf24/nrf24_if.h
 create mode 100644 drivers/staging/nrf24/nrf24_sysfs.c
 create mode 100644 drivers/staging/nrf24/nrf24_sysfs.h

diff --git a/drivers/staging/Kconfig b/drivers/staging/Kconfig
index c0901b96cfe4..8473823aaa6f 100644
--- a/drivers/staging/Kconfig
+++ b/drivers/staging/Kconfig
@@ -124,4 +124,6 @@ source "drivers/staging/axis-fifo/Kconfig"
 
 source "drivers/staging/erofs/Kconfig"
 
+source "drivers/staging/nrf24/Kconfig"
+
 endif # STAGING
diff --git a/drivers/staging/Makefile b/drivers/staging/Makefile
index 57c6bce13ff4..10709ab6f42c 100644
--- a/drivers/staging/Makefile
+++ b/drivers/staging/Makefile
@@ -52,3 +52,4 @@ obj-$(CONFIG_SOC_MT7621)  += mt7621-dts/
 obj-$(CONFIG_STAGING_GASKET_FRAMEWORK) += gasket/
 obj-$(CONFIG_XIL_AXIS_FIFO)+= axis-fifo/
 obj-$(CONFIG_EROFS_FS) += erofs/
+obj-$(CONFIG_NRF24)+= nrf24/
diff --git a/drivers/staging/nrf24/Kconfig b/drivers/staging/nrf24/Kconfig
new file mode 100644
index ..67ebf14dd982
--- /dev/null
+++ b/drivers/staging/nrf24/Kconfig
@@ -0,0 +1,16 @@
+config NRF24
+tristate "nRF24L01+ 2.4GHz radio module support"
+depends on SPI
+help
+  This enables support for Nordic Semiconductor nRF24L01+ radio module,
+  with the following features:
+- multiple radio module instances via nrfX
+- dedicated /dev/nrfX.Y device per pipe per instance
+- dynamic and static payload lengths
+- configuration via sysfs (/sys/class/nrfX)
+- poll mechanism
+- 64kB RX FIFO per pipe
+- 64kB TX FIFO
+
+  To compile this driver as a module, choose M here: the module will be
+  called nrf24.
diff --git a/drivers/staging/nrf24/Makefile b/drivers/staging/nrf24/Makefile
new file mode 100644
index ..f5222567c632
--- /dev/null
+++ b/drivers/staging/nrf24/Makefile
@@ -0,0 +1,3 @@
+obj-$(CONFIG_NRF24) += nrf24.o
+
+nrf24-objs := nrf24_if.o nrf24_hal.o nrf24_sysfs.o
diff --git a/drivers/staging/nrf24/TODO b/drivers/staging/nrf24/TODO
new file mode 100644
index ..a089e43faac5
--- /dev/null
+++ b/drivers/staging/nrf24/TODO
@@ -0,0 +1,7 @@
+Todo:
+- opening and closing pipes via sysfs
+- improve switching in between RX and TX
+- improve handling of MAX_RT interrupt
+- find and fix bugs
+- code cleanup
+
diff --git a/drivers/staging/nrf24/devicetree/nrf24-spi0-overlay.dts 
b/drivers/staging/nrf24/devicetree/nrf24-spi0-overlay.dts
new file mode 100644
index ..130e6787b76d
--- /dev/null
+++ b/drivers/staging/nrf24/devicetree/nrf24-spi0-overlay.dts
@@ -0,0 +1,54 @@
+// SPDX-License-Identifier: GPL-2.0
+
+//
+// Copyright (C) 2017 Marcin Ciupak 
+//
+
+// Definitions for NRF24
+/dts-v1/;
+/plugin/;
+
+/ {
+   compatible = "bcm,bcm2835", "bcm,bcm2708", "bcm,bcm2709";
+
+   fragment@0 {
+   target = <>;
+   __overlay__ {
+

Re: [PATCH v3] staging: nrf24: add new driver for 2.4GHz radio transceiver

2018-10-19 Thread Marcin Ciupak
On Fri, Oct 19, 2018 at 09:58:01AM +0300, Dan Carpenter wrote:
> Hi Marcin,
> 
> Thank you for the patch! Perhaps something to improve:
> 
> url:
> https://github.com/0day-ci/linux/commits/Marcin-Ciupak/staging-nrf24-add-new-driver-for-2-4GHz-radio-transceiver/20181018-164230
> 
> smatch warnings:
> drivers/staging/nrf24/nrf24_if.c:538 nrf24_create_pipe() error: 'p->dev' 
> dereferencing possible ERR_PTR()
> drivers/staging/nrf24/nrf24_if.c:753 nrf24_probe() error: 'device' 
> dereferencing possible ERR_PTR()
> drivers/staging/nrf24/nrf24_sysfs.c:118 plw_store() warn: impossible 
> condition '(old < 0) => (0-255 < 0)'
> 
> # 
> https://github.com/0day-ci/linux/commit/f4952b4a228f4dc0149a814630c94e0e87a9f473
> git remote add linux-review https://github.com/0day-ci/linux
> git remote update linux-review
> git checkout f4952b4a228f4dc0149a814630c94e0e87a9f473
> vim +538 drivers/staging/nrf24/nrf24_if.c
> 
> f4952b4a Marcin Ciupak 2018-10-17  503  
> f4952b4a Marcin Ciupak 2018-10-17  504  static struct nrf24_pipe 
> *nrf24_create_pipe(struct nrf24_device *device, int id)
> f4952b4a Marcin Ciupak 2018-10-17  505  {
> f4952b4a Marcin Ciupak 2018-10-17  506    int ret;
> f4952b4a Marcin Ciupak 2018-10-17  507    struct nrf24_pipe *p;
> f4952b4a Marcin Ciupak 2018-10-17  508  
> f4952b4a Marcin Ciupak 2018-10-17  509//sets flags to false as well
> f4952b4a Marcin Ciupak 2018-10-17  510p = kzalloc(sizeof(*p), 
> GFP_KERNEL);
> f4952b4a Marcin Ciupak 2018-10-17  511    if (!p) {
> f4952b4a Marcin Ciupak 2018-10-17  512        ret = -ENOMEM;
> f4952b4a Marcin Ciupak 2018-10-17  513goto err_return;
> f4952b4a Marcin Ciupak 2018-10-17  514}
> f4952b4a Marcin Ciupak 2018-10-17  515  
> f4952b4a Marcin Ciupak 2018-10-17  516ret = 
> ida_simple_get(_ida_pipe, 0, 0, GFP_KERNEL);
> f4952b4a Marcin Ciupak 2018-10-17  517if (ret < 0) {
> f4952b4a Marcin Ciupak 2018-10-17  518dev_err(>dev, 
> "%s: get_minor failed\n", __func__);
> f4952b4a Marcin Ciupak 2018-10-17  519goto err_free_mem;
> f4952b4a Marcin Ciupak 2018-10-17  520    }
> f4952b4a Marcin Ciupak 2018-10-17  521  
> f4952b4a Marcin Ciupak 2018-10-17  522    p->devt = 
> MKDEV(MAJOR(nrf24_dev), ret);
> f4952b4a Marcin Ciupak 2018-10-17  523p->id = id;
> f4952b4a Marcin Ciupak 2018-10-17  524  
> f4952b4a Marcin Ciupak 2018-10-17  525    INIT_KFIFO(p->rx_fifo);
> f4952b4a Marcin Ciupak 2018-10-17  526
> init_waitqueue_head(>poll_wait_queue);
> f4952b4a Marcin Ciupak 2018-10-17  527  
> f4952b4a Marcin Ciupak 2018-10-17  528p->dev = 
> device_create_with_groups(nrf24_class,
> f4952b4a Marcin Ciupak 2018-10-17  529
>>dev,
> f4952b4a Marcin Ciupak 2018-10-17  530
>    p->devt,
> f4952b4a Marcin Ciupak 2018-10-17  531        
>p,
> f4952b4a Marcin Ciupak 2018-10-17  532    
>nrf24_pipe_groups,
> f4952b4a Marcin Ciupak 2018-10-17  533        
>"%s.%d",
> f4952b4a Marcin Ciupak 2018-10-17  534        
>dev_name(>dev),
> f4952b4a Marcin Ciupak 2018-10-17  535
>id);
> f4952b4a Marcin Ciupak 2018-10-17  536  
> f4952b4a Marcin Ciupak 2018-10-17  537if (IS_ERR(p->dev)) {
> f4952b4a Marcin Ciupak 2018-10-17 @538dev_err(>dev,
> f4952b4a Marcin Ciupak 2018-10-17  539"%s: 
> device_create of '%s' failed\n",
> f4952b4a Marcin Ciupak 2018-10-17  540__func__,
> f4952b4a Marcin Ciupak 2018-10-17  541        
> dev_name(p->dev));
> f4952b4a Marcin Ciupak 2018-10-17  542ret = PTR_ERR(p->dev);
> f4952b4a Marcin Ciupak 2018-10-17  543goto err_ida_remove;
> f4952b4a Marcin Ciupak 2018-10-17  544}
> f4952b4a Marcin Ciupak 2018-10-17  545  
> f4952b4a Marcin Ciupak 2018-10-17  546cdev_init(>cdev, 
> _fops);
> f4952b4a Marcin Ciupak 2018-10-17  547p->cdev.owner = THIS_MODULE;
> f4952b4a Marcin Ciupak 2018-10-17  548ret = cdev_add(>cdev, 
> p->devt, 1);
> f4952b4a Marcin Ciupak 2018-10-17  549if (ret < 0) {
> f4952b4a Marcin Ciupak 2018-10-17  550dev_err(>dev, 
> "%s: cdev failed\n", __func__);
> f4952b4a Marcin Ciupak 2018-10-17  551    goto err_dev_destroy;
> f4952b4a Marcin Ciupak 2018-10-17  552}
>

[PATCH v3] staging: nrf24: add new driver for 2.4GHz radio transceiver

2018-10-17 Thread Marcin Ciupak
This patch adds driver for Nordic Semiconductor nRF24L01+ radio
transceiver.

Signed-off-by: Marcin Ciupak 
---
Changes in v2:
  - add terminating newlines to all logging formats
Changes in v3:
  - patch subject
  - comments cleanup
  - goto labels cleanup
  - scnprintf bugfix
  - ida_simple_remove bugfix

 drivers/staging/Kconfig   |   2 +
 drivers/staging/Makefile  |   1 +
 drivers/staging/nrf24/Kconfig |  16 +
 drivers/staging/nrf24/Makefile|   3 +
 drivers/staging/nrf24/TODO|   7 +
 .../nrf24/devicetree/nrf24-spi0-overlay.dts   |  54 ++
 .../nrf24/devicetree/nrf24-spi1-overlay.dts   |  54 ++
 drivers/staging/nrf24/devicetree/nrf24.txt|   1 +
 drivers/staging/nrf24/nRF24L01.h  |  82 ++
 drivers/staging/nrf24/nrf24_enums.h   |  60 ++
 drivers/staging/nrf24/nrf24_hal.c | 764 +++
 drivers/staging/nrf24/nrf24_hal.h |  54 ++
 drivers/staging/nrf24/nrf24_if.c  | 893 ++
 drivers/staging/nrf24/nrf24_if.h  |  63 ++
 drivers/staging/nrf24/nrf24_sysfs.c   | 707 ++
 drivers/staging/nrf24/nrf24_sysfs.h   |  14 +
 16 files changed, 2775 insertions(+)
 create mode 100644 drivers/staging/nrf24/Kconfig
 create mode 100644 drivers/staging/nrf24/Makefile
 create mode 100644 drivers/staging/nrf24/TODO
 create mode 100644 drivers/staging/nrf24/devicetree/nrf24-spi0-overlay.dts
 create mode 100644 drivers/staging/nrf24/devicetree/nrf24-spi1-overlay.dts
 create mode 100644 drivers/staging/nrf24/devicetree/nrf24.txt
 create mode 100644 drivers/staging/nrf24/nRF24L01.h
 create mode 100644 drivers/staging/nrf24/nrf24_enums.h
 create mode 100644 drivers/staging/nrf24/nrf24_hal.c
 create mode 100644 drivers/staging/nrf24/nrf24_hal.h
 create mode 100644 drivers/staging/nrf24/nrf24_if.c
 create mode 100644 drivers/staging/nrf24/nrf24_if.h
 create mode 100644 drivers/staging/nrf24/nrf24_sysfs.c
 create mode 100644 drivers/staging/nrf24/nrf24_sysfs.h

diff --git a/drivers/staging/Kconfig b/drivers/staging/Kconfig
index 1abf76be2aa8..55d688f3112e 100644
--- a/drivers/staging/Kconfig
+++ b/drivers/staging/Kconfig
@@ -126,4 +126,6 @@ source "drivers/staging/axis-fifo/Kconfig"
 
 source "drivers/staging/erofs/Kconfig"
 
+source "drivers/staging/nrf24/Kconfig"
+
 endif # STAGING
diff --git a/drivers/staging/Makefile b/drivers/staging/Makefile
index ab0cbe8815b1..c18e74df03af 100644
--- a/drivers/staging/Makefile
+++ b/drivers/staging/Makefile
@@ -53,3 +53,4 @@ obj-$(CONFIG_SOC_MT7621)  += mt7621-dts/
 obj-$(CONFIG_STAGING_GASKET_FRAMEWORK) += gasket/
 obj-$(CONFIG_XIL_AXIS_FIFO)+= axis-fifo/
 obj-$(CONFIG_EROFS_FS) += erofs/
+obj-$(CONFIG_NRF24)+= nrf24/
diff --git a/drivers/staging/nrf24/Kconfig b/drivers/staging/nrf24/Kconfig
new file mode 100644
index ..67ebf14dd982
--- /dev/null
+++ b/drivers/staging/nrf24/Kconfig
@@ -0,0 +1,16 @@
+config NRF24
+tristate "nRF24L01+ 2.4GHz radio module support"
+depends on SPI
+help
+  This enables support for Nordic Semiconductor nRF24L01+ radio module,
+  with the following features:
+- multiple radio module instances via nrfX
+- dedicated /dev/nrfX.Y device per pipe per instance
+- dynamic and static payload lengths
+- configuration via sysfs (/sys/class/nrfX)
+- poll mechanism
+- 64kB RX FIFO per pipe
+- 64kB TX FIFO
+
+  To compile this driver as a module, choose M here: the module will be
+  called nrf24.
diff --git a/drivers/staging/nrf24/Makefile b/drivers/staging/nrf24/Makefile
new file mode 100644
index ..f5222567c632
--- /dev/null
+++ b/drivers/staging/nrf24/Makefile
@@ -0,0 +1,3 @@
+obj-$(CONFIG_NRF24) += nrf24.o
+
+nrf24-objs := nrf24_if.o nrf24_hal.o nrf24_sysfs.o
diff --git a/drivers/staging/nrf24/TODO b/drivers/staging/nrf24/TODO
new file mode 100644
index ..a089e43faac5
--- /dev/null
+++ b/drivers/staging/nrf24/TODO
@@ -0,0 +1,7 @@
+Todo:
+- opening and closing pipes via sysfs
+- improve switching in between RX and TX
+- improve handling of MAX_RT interrupt
+- find and fix bugs
+- code cleanup
+
diff --git a/drivers/staging/nrf24/devicetree/nrf24-spi0-overlay.dts 
b/drivers/staging/nrf24/devicetree/nrf24-spi0-overlay.dts
new file mode 100644
index ..130e6787b76d
--- /dev/null
+++ b/drivers/staging/nrf24/devicetree/nrf24-spi0-overlay.dts
@@ -0,0 +1,54 @@
+// SPDX-License-Identifier: GPL-2.0
+
+//
+// Copyright (C) 2017 Marcin Ciupak 
+//
+
+// Definitions for NRF24
+/dts-v1/;
+/plugin/;
+
+/ {
+   compatible = "bcm,bcm2835", "bcm,bcm2708", "bcm,bcm2709";
+
+   fragment@0 {
+   target = <>;
+   __overlay__ {
+   #address-cells = &l

Re: [PATCH v2] staging: add nrf24 driver

2018-10-16 Thread Marcin Ciupak
On Tue, Oct 16, 2018 at 02:41:50PM +0300, Dan Carpenter wrote:
> When we add drivers, can we use the new subsystem prefix for the driver?
> In other words:
> 
> [PATCH] staging: nrf24: Add new driver for 2.4Ghz radio transceiver
>
Sure.

> This driver seems basically OK to me.  I don't think you necessarily
> need to go through staging?  Have you tried sending it directly to
> netdev?
> 
I have not tried that, mainly as I believe it is not mature enough. I
would give it some time in staging for testing and bugfixing. If you say
that it is not needed and can be done out of staging, I will ask netdev
if it can be accepted there.

> > +   //take out size of data
> 
> This comment is sort of useless?  "take out" is like Chinese food.  It
> seems like it should be obvious what the code does.  The format is
> wrong.  So there are very minor things to be tidied up.
> 
Agree, I will do comments cleanup.

> > +   ret = kfifo_out(>tx_fifo, , sizeof(size));
> > +   if (ret != sizeof(size)) {
> > +   dev_dbg(>dev, "get size from fifo failed\n");
> > +   mutex_unlock(>tx_fifo_mutex);
> > +   continue;
> > +   }
> > +
> > +   //alloc space for data
> > +   buf = kzalloc(size, GFP_KERNEL);
> > +   if (!buf) {
> > +   dev_dbg(>dev, "buf alloc failed\n");
> > +   mutex_unlock(>tx_fifo_mutex);
> > +   continue;
> > +   }
> > +
> > +   //take out size of data
> > +   ret = kfifo_out(>tx_fifo, buf, size);
> > +   if (ret != size) {
> > +   dev_dbg(>dev, "get buf from fifo failed\n");
> > +   mutex_unlock(>tx_fifo_mutex);
> > +   goto next;
> > +   }
> > +
> > +   //unlock tx fifo
> > +   mutex_unlock(>tx_fifo_mutex);
> > +
> > +   //enter Standby-I mode
> > +   nrf24_ce_lo(device);
> > +
> > +   //set TX MODE
> > +   ret = nrf24_set_mode(device->spi, NRF24_MODE_TX);
> > +   if (ret < 0)
> > +   goto next;
> > +
> > +   //set PIPE0 address
> > +   //this is needed to receive ACK
> > +   ret = nrf24_set_address(device->spi,
> > +   NRF24_PIPE0,
> > +   (u8 *)>cfg.address);
> > +   if (ret < 0) {
> > +   dev_dbg(>dev, "set PIPE0 address failed 
> > (%d)\n", ret);
> > +   goto next;
> > +   }
> > +
> > +   //set TX address
> > +   ret = nrf24_set_address(device->spi,
> > +   NRF24_TX,
> > +   (u8 *)>cfg.address);
> > +   if (ret < 0) {
> > +   dev_dbg(>dev, "set TX address failed (%d)\n", 
> > ret);
> > +   goto next;
> > +   }
> > +
> > +   //check if pipe uses static payload length
> > +   spl = p->cfg.plw != 0;
> > +
> > +   //check if dynamic payload length is enabled
> > +   dpl = nrf24_get_dynamic_pl(device->spi);
> > +
> > +   if (spl && dpl) {
> > +   //disable dynamic payload if pipe
> > +   //does not use dynamic payload
> > +   //and dynamic paload is enabled
> > +   ret = nrf24_disable_dynamic_pl(device->spi);
> > +   if (ret < 0)
> > +   goto next;
> > +   }
> > +
> > +   memset(pload, 0, PLOAD_MAX);
> > +   memcpy(pload, , sizeof(size));
> > +
> > +   //calculate payload length
> > +   n = spl ? p->cfg.plw : sizeof(size);
> > +
> > +   //send size
> > +   nrf24_write_tx_pload(device->spi, pload, n);
> > +   if (ret < 0) {
> > +   dev_dbg(>dev, "write TX PLOAD failed (%d)\n", 
> > ret);
> > +   goto next;
> > +   }
> > +
> > +   //enter TX MODE and start transmission
> > +   nrf24_ce_hi(device);
> > +
> > +   //wait for ACK
> > +   wait_event_interruptible(device->tx_done_wait_queue,
> > +(device->tx_done ||
> > +kthread_should_stop()));
> > +
> > +   if (kthread_should_stop())
> > +   goto abort;
> > +
> > +   //clear counter
> > +   sent = 0;
> > +
> > +   while (size > 0) {
> > +   n = spl ? p->cfg.plw : min_t(ssize_t, size, PLOAD_MAX);
> > +
> > +   dev_dbg(>dev, "tx %zd bytes\n", n);
> > +
> > +   memset(pload, 0, PLOAD_MAX);
> > +   memcpy(pload, buf + sent, n);
> > +
> > +   //write PLOAD to nRF FIFO
> > +   ret = nrf24_write_tx_pload(device->spi, pload, n);
> > +
> > +   if (ret < 0) {
> > +   dev_dbg(>dev,
> > +  

[PATCH v2] staging: add nrf24 driver

2018-10-16 Thread Marcin Ciupak
This patch adds driver for Nordic Semiconductor nRF24L01+ radio module.

Signed-off-by: Marcin Ciupak 
---
Changes in v2:
  - add terminating newlines to all logging formats

drivers/staging/Kconfig   |   2 +
 drivers/staging/Makefile  |   1 +
 drivers/staging/nrf24/Kconfig |  16 +
 drivers/staging/nrf24/Makefile|   3 +
 drivers/staging/nrf24/TODO|   7 +
 .../nrf24/devicetree/nrf24-spi0-overlay.dts   |  54 +
 .../nrf24/devicetree/nrf24-spi1-overlay.dts   |  54 +
 drivers/staging/nrf24/devicetree/nrf24.txt|   1 +
 drivers/staging/nrf24/nRF24L01.h  |  82 ++
 drivers/staging/nrf24/nrf24_enums.h   |  60 ++
 drivers/staging/nrf24/nrf24_hal.c | 764 +++
 drivers/staging/nrf24/nrf24_hal.h |  54 +
 drivers/staging/nrf24/nrf24_if.c  | 919 ++
 drivers/staging/nrf24/nrf24_if.h  |  63 ++
 drivers/staging/nrf24/nrf24_sysfs.c   | 707 ++
 drivers/staging/nrf24/nrf24_sysfs.h   |  14 +
 16 files changed, 2801 insertions(+)
 create mode 100644 drivers/staging/nrf24/Kconfig
 create mode 100644 drivers/staging/nrf24/Makefile
 create mode 100644 drivers/staging/nrf24/TODO
 create mode 100644 drivers/staging/nrf24/devicetree/nrf24-spi0-overlay.dts
 create mode 100644 drivers/staging/nrf24/devicetree/nrf24-spi1-overlay.dts
 create mode 100644 drivers/staging/nrf24/devicetree/nrf24.txt
 create mode 100644 drivers/staging/nrf24/nRF24L01.h
 create mode 100644 drivers/staging/nrf24/nrf24_enums.h
 create mode 100644 drivers/staging/nrf24/nrf24_hal.c
 create mode 100644 drivers/staging/nrf24/nrf24_hal.h
 create mode 100644 drivers/staging/nrf24/nrf24_if.c
 create mode 100644 drivers/staging/nrf24/nrf24_if.h
 create mode 100644 drivers/staging/nrf24/nrf24_sysfs.c
 create mode 100644 drivers/staging/nrf24/nrf24_sysfs.h

diff --git a/drivers/staging/Kconfig b/drivers/staging/Kconfig
index 1abf76be2aa8..55d688f3112e 100644
--- a/drivers/staging/Kconfig
+++ b/drivers/staging/Kconfig
@@ -126,4 +126,6 @@ source "drivers/staging/axis-fifo/Kconfig"
 
 source "drivers/staging/erofs/Kconfig"
 
+source "drivers/staging/nrf24/Kconfig"
+
 endif # STAGING
diff --git a/drivers/staging/Makefile b/drivers/staging/Makefile
index ab0cbe8815b1..c18e74df03af 100644
--- a/drivers/staging/Makefile
+++ b/drivers/staging/Makefile
@@ -53,3 +53,4 @@ obj-$(CONFIG_SOC_MT7621)  += mt7621-dts/
 obj-$(CONFIG_STAGING_GASKET_FRAMEWORK) += gasket/
 obj-$(CONFIG_XIL_AXIS_FIFO)+= axis-fifo/
 obj-$(CONFIG_EROFS_FS) += erofs/
+obj-$(CONFIG_NRF24)+= nrf24/
diff --git a/drivers/staging/nrf24/Kconfig b/drivers/staging/nrf24/Kconfig
new file mode 100644
index ..67ebf14dd982
--- /dev/null
+++ b/drivers/staging/nrf24/Kconfig
@@ -0,0 +1,16 @@
+config NRF24
+tristate "nRF24L01+ 2.4GHz radio module support"
+depends on SPI
+help
+  This enables support for Nordic Semiconductor nRF24L01+ radio module,
+  with the following features:
+- multiple radio module instances via nrfX
+- dedicated /dev/nrfX.Y device per pipe per instance
+- dynamic and static payload lengths
+- configuration via sysfs (/sys/class/nrfX)
+- poll mechanism
+- 64kB RX FIFO per pipe
+- 64kB TX FIFO
+
+  To compile this driver as a module, choose M here: the module will be
+  called nrf24.
diff --git a/drivers/staging/nrf24/Makefile b/drivers/staging/nrf24/Makefile
new file mode 100644
index ..f5222567c632
--- /dev/null
+++ b/drivers/staging/nrf24/Makefile
@@ -0,0 +1,3 @@
+obj-$(CONFIG_NRF24) += nrf24.o
+
+nrf24-objs := nrf24_if.o nrf24_hal.o nrf24_sysfs.o
diff --git a/drivers/staging/nrf24/TODO b/drivers/staging/nrf24/TODO
new file mode 100644
index ..a089e43faac5
--- /dev/null
+++ b/drivers/staging/nrf24/TODO
@@ -0,0 +1,7 @@
+Todo:
+- opening and closing pipes via sysfs
+- improve switching in between RX and TX
+- improve handling of MAX_RT interrupt
+- find and fix bugs
+- code cleanup
+
diff --git a/drivers/staging/nrf24/devicetree/nrf24-spi0-overlay.dts 
b/drivers/staging/nrf24/devicetree/nrf24-spi0-overlay.dts
new file mode 100644
index ..130e6787b76d
--- /dev/null
+++ b/drivers/staging/nrf24/devicetree/nrf24-spi0-overlay.dts
@@ -0,0 +1,54 @@
+// SPDX-License-Identifier: GPL-2.0
+
+//
+// Copyright (C) 2017 Marcin Ciupak 
+//
+
+// Definitions for NRF24
+/dts-v1/;
+/plugin/;
+
+/ {
+   compatible = "bcm,bcm2835", "bcm,bcm2708", "bcm,bcm2709";
+
+   fragment@0 {
+   target = <>;
+   __overlay__ {
+   #address-cells = <1>;
+   #size-cells = <0>;
+   status = "o

[PATCH] staging: add nrf24 driver

2018-10-15 Thread Marcin Ciupak
This patch adds driver for Nordic Semiconductor nRF24L01+ radio module.

Signed-off-by: Marcin Ciupak 
---
 drivers/staging/Kconfig   |   2 +
 drivers/staging/Makefile  |   1 +
 drivers/staging/nrf24/Kconfig |  16 +
 drivers/staging/nrf24/Makefile|   3 +
 drivers/staging/nrf24/TODO|   7 +
 .../nrf24/devicetree/nrf24-spi0-overlay.dts   |  54 ++
 .../nrf24/devicetree/nrf24-spi1-overlay.dts   |  54 ++
 drivers/staging/nrf24/devicetree/nrf24.txt|   1 +
 drivers/staging/nrf24/nRF24L01.h  |  82 ++
 drivers/staging/nrf24/nrf24_enums.h   |  60 ++
 drivers/staging/nrf24/nrf24_hal.c | 764 +++
 drivers/staging/nrf24/nrf24_hal.h |  54 ++
 drivers/staging/nrf24/nrf24_if.c  | 917 ++
 drivers/staging/nrf24/nrf24_if.h  |  63 ++
 drivers/staging/nrf24/nrf24_sysfs.c   | 707 ++
 drivers/staging/nrf24/nrf24_sysfs.h   |  14 +
 16 files changed, 2799 insertions(+)
 create mode 100644 drivers/staging/nrf24/Kconfig
 create mode 100644 drivers/staging/nrf24/Makefile
 create mode 100644 drivers/staging/nrf24/TODO
 create mode 100644 drivers/staging/nrf24/devicetree/nrf24-spi0-overlay.dts
 create mode 100644 drivers/staging/nrf24/devicetree/nrf24-spi1-overlay.dts
 create mode 100644 drivers/staging/nrf24/devicetree/nrf24.txt
 create mode 100644 drivers/staging/nrf24/nRF24L01.h
 create mode 100644 drivers/staging/nrf24/nrf24_enums.h
 create mode 100644 drivers/staging/nrf24/nrf24_hal.c
 create mode 100644 drivers/staging/nrf24/nrf24_hal.h
 create mode 100644 drivers/staging/nrf24/nrf24_if.c
 create mode 100644 drivers/staging/nrf24/nrf24_if.h
 create mode 100644 drivers/staging/nrf24/nrf24_sysfs.c
 create mode 100644 drivers/staging/nrf24/nrf24_sysfs.h

diff --git a/drivers/staging/Kconfig b/drivers/staging/Kconfig
index 1abf76be2aa8..55d688f3112e 100644
--- a/drivers/staging/Kconfig
+++ b/drivers/staging/Kconfig
@@ -126,4 +126,6 @@ source "drivers/staging/axis-fifo/Kconfig"
 
 source "drivers/staging/erofs/Kconfig"
 
+source "drivers/staging/nrf24/Kconfig"
+
 endif # STAGING
diff --git a/drivers/staging/Makefile b/drivers/staging/Makefile
index ab0cbe8815b1..c18e74df03af 100644
--- a/drivers/staging/Makefile
+++ b/drivers/staging/Makefile
@@ -53,3 +53,4 @@ obj-$(CONFIG_SOC_MT7621)  += mt7621-dts/
 obj-$(CONFIG_STAGING_GASKET_FRAMEWORK) += gasket/
 obj-$(CONFIG_XIL_AXIS_FIFO)+= axis-fifo/
 obj-$(CONFIG_EROFS_FS) += erofs/
+obj-$(CONFIG_NRF24)+= nrf24/
diff --git a/drivers/staging/nrf24/Kconfig b/drivers/staging/nrf24/Kconfig
new file mode 100644
index ..67ebf14dd982
--- /dev/null
+++ b/drivers/staging/nrf24/Kconfig
@@ -0,0 +1,16 @@
+config NRF24
+tristate "nRF24L01+ 2.4GHz radio module support"
+depends on SPI
+help
+  This enables support for Nordic Semiconductor nRF24L01+ radio module,
+  with the following features:
+- multiple radio module instances via nrfX
+- dedicated /dev/nrfX.Y device per pipe per instance
+- dynamic and static payload lengths
+- configuration via sysfs (/sys/class/nrfX)
+- poll mechanism
+- 64kB RX FIFO per pipe
+- 64kB TX FIFO
+
+  To compile this driver as a module, choose M here: the module will be
+  called nrf24.
diff --git a/drivers/staging/nrf24/Makefile b/drivers/staging/nrf24/Makefile
new file mode 100644
index ..f5222567c632
--- /dev/null
+++ b/drivers/staging/nrf24/Makefile
@@ -0,0 +1,3 @@
+obj-$(CONFIG_NRF24) += nrf24.o
+
+nrf24-objs := nrf24_if.o nrf24_hal.o nrf24_sysfs.o
diff --git a/drivers/staging/nrf24/TODO b/drivers/staging/nrf24/TODO
new file mode 100644
index ..a089e43faac5
--- /dev/null
+++ b/drivers/staging/nrf24/TODO
@@ -0,0 +1,7 @@
+Todo:
+- opening and closing pipes via sysfs
+- improve switching in between RX and TX
+- improve handling of MAX_RT interrupt
+- find and fix bugs
+- code cleanup
+
diff --git a/drivers/staging/nrf24/devicetree/nrf24-spi0-overlay.dts 
b/drivers/staging/nrf24/devicetree/nrf24-spi0-overlay.dts
new file mode 100644
index ..130e6787b76d
--- /dev/null
+++ b/drivers/staging/nrf24/devicetree/nrf24-spi0-overlay.dts
@@ -0,0 +1,54 @@
+// SPDX-License-Identifier: GPL-2.0
+
+//
+// Copyright (C) 2017 Marcin Ciupak 
+//
+
+// Definitions for NRF24
+/dts-v1/;
+/plugin/;
+
+/ {
+   compatible = "bcm,bcm2835", "bcm,bcm2708", "bcm,bcm2709";
+
+   fragment@0 {
+   target = <>;
+   __overlay__ {
+   #address-cells = <1>;
+   #size-cells = <0>;
+   status = "okay";
+
+   spidev@0 {
+   

[PATCH] staging: most: fix sparse warning Using plain integer as NULL pointer

2018-06-15 Thread Marcin Ciupak
This patch fixes following sparse warning:
Using plain integer as NULL pointer
in drivers/staging/most/dim2/dim2.c

Signed-off-by: Marcin Ciupak 
---
 drivers/staging/most/dim2/dim2.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/staging/most/dim2/dim2.c b/drivers/staging/most/dim2/dim2.c
index fe90a7cb56f7..31fbc1a75b06 100644
--- a/drivers/staging/most/dim2/dim2.c
+++ b/drivers/staging/most/dim2/dim2.c
@@ -785,7 +785,7 @@ static int dim2_probe(struct platform_device *pdev)
if (ret)
return ret;
 
-   dev->disable_platform = pdata ? pdata->disable : 0;
+   dev->disable_platform = pdata ? pdata->disable : NULL;
 
dev_info(>dev, "sync: num of frames per sub-buffer: %u\n", fcnt);
hal_ret = dim_startup(dev->io_base, dev->clk_speed, fcnt);
-- 
2.17.0

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH v2 2/2] staging: pi433: remove unused rf69_reset_flag function

2017-12-21 Thread Marcin Ciupak
Function rf69_reset_flag is unused and should be removed.

Signed-off-by: Marcin Ciupak <marcin.s.ciu...@gmail.com>
---
Changes in v2:
- rebase against staging-testing

 drivers/staging/pi433/rf69.c | 12 
 drivers/staging/pi433/rf69.h |  1 -
 2 files changed, 13 deletions(-)

diff --git a/drivers/staging/pi433/rf69.c b/drivers/staging/pi433/rf69.c
index 7a64ef065a2e..9ad358c30225 100644
--- a/drivers/staging/pi433/rf69.c
+++ b/drivers/staging/pi433/rf69.c
@@ -516,18 +516,6 @@ bool rf69_get_flag(struct spi_device *spi, enum flag flag)
}
 }
 
-int rf69_reset_flag(struct spi_device *spi, enum flag flag)
-{
-   switch (flag) {
-   case rssiExceededThreshold: return rf69_write_reg(spi, REG_IRQFLAGS1, 
MASK_IRQFLAGS1_RSSI);
-   case syncAddressMatch:  return rf69_write_reg(spi, REG_IRQFLAGS1, 
MASK_IRQFLAGS1_SYNC_ADDRESS_MATCH);
-   case fifo_overrun:  return rf69_write_reg(spi, REG_IRQFLAGS2, 
MASK_IRQFLAGS2_FIFO_OVERRUN);
-   default:
-   dev_dbg(>dev, "set: illegal input param");
-   return -EINVAL;
-   }
-}
-
 int rf69_set_rssi_threshold(struct spi_device *spi, u8 threshold)
 {
/* no value check needed - u8 exactly matches register size */
diff --git a/drivers/staging/pi433/rf69.h b/drivers/staging/pi433/rf69.h
index d3b0f576b5f4..503372a07b4c 100644
--- a/drivers/staging/pi433/rf69.h
+++ b/drivers/staging/pi433/rf69.h
@@ -43,7 +43,6 @@ int rf69_set_bandwidth_during_afc(struct spi_device *spi, 
enum mantisse mantisse
 int rf69_set_ook_threshold_dec(struct spi_device *spi, enum thresholdDecrement 
thresholdDecrement);
 int rf69_set_dio_mapping(struct spi_device *spi, u8 DIONumber, u8 value);
 bool rf69_get_flag(struct spi_device *spi, enum flag flag);
-int rf69_reset_flag(struct spi_device *spi, enum flag flag);
 int rf69_set_rssi_threshold(struct spi_device *spi, u8 threshold);
 int rf69_set_preamble_length(struct spi_device *spi, u16 preambleLength);
 int rf69_enable_sync(struct spi_device *spi);
-- 
2.15.0

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH v2 1/2] staging: pi433: remove unused rf69_set_sync_tolerance function

2017-12-21 Thread Marcin Ciupak
Function rf69_set_sync_tolerance is unused and should be removed.

Signed-off-by: Marcin Ciupak <marcin.s.ciu...@gmail.com>
---
Changes in v2:
- rebase against staging-testing

 drivers/staging/pi433/rf69.c | 12 
 drivers/staging/pi433/rf69.h |  1 -
 2 files changed, 13 deletions(-)

diff --git a/drivers/staging/pi433/rf69.c b/drivers/staging/pi433/rf69.c
index 8bc09e10a582..7a64ef065a2e 100644
--- a/drivers/staging/pi433/rf69.c
+++ b/drivers/staging/pi433/rf69.c
@@ -588,18 +588,6 @@ int rf69_set_sync_size(struct spi_device *spi, u8 syncSize)
return rf69_read_mod_write(spi, REG_SYNC_CONFIG, 
MASK_SYNC_CONFIG_SYNC_SIZE, (syncSize << 3));
 }
 
-int rf69_set_sync_tolerance(struct spi_device *spi, u8 syncTolerance)
-{
-   // check input value
-   if (syncTolerance > 0x07) {
-   dev_dbg(>dev, "set: illegal input param");
-   return -EINVAL;
-   }
-
-   // write value
-   return rf69_read_mod_write(spi, REG_SYNC_CONFIG, 
MASK_SYNC_CONFIG_SYNC_SIZE, syncTolerance);
-}
-
 int rf69_set_sync_values(struct spi_device *spi, u8 syncValues[8])
 {
int retval = 0;
diff --git a/drivers/staging/pi433/rf69.h b/drivers/staging/pi433/rf69.h
index f8c015ab3ff3..d3b0f576b5f4 100644
--- a/drivers/staging/pi433/rf69.h
+++ b/drivers/staging/pi433/rf69.h
@@ -50,7 +50,6 @@ int rf69_enable_sync(struct spi_device *spi);
 int rf69_disable_sync(struct spi_device *spi);
 int rf69_set_fifo_fill_condition(struct spi_device *spi, enum 
fifo_fill_condition fifo_fill_condition);
 int rf69_set_sync_size(struct spi_device *spi, u8 sync_size);
-int rf69_set_sync_tolerance(struct spi_device *spi, u8 syncTolerance);
 int rf69_set_sync_values(struct spi_device *spi, u8 syncValues[8]);
 int rf69_set_packet_format(struct spi_device *spi, enum packetFormat 
packetFormat);
 int rf69_enable_crc(struct spi_device *spi);
-- 
2.15.0

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH v2 0/2] staging: pi433: unused functions cleanup rebased

2017-12-21 Thread Marcin Ciupak
Remaining patches of unused functions cleanup patchset rebased against
staging-testing.

Marcin Ciupak (2):
  staging: pi433: remove unused rf69_set_sync_tolerance function
  staging: pi433: remove unused rf69_reset_flag function

 drivers/staging/pi433/rf69.c | 24 
 drivers/staging/pi433/rf69.h |  2 --
 2 files changed, 26 deletions(-)

-- 
2.15.0

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 9/9] staging: pi433: remove unused rf69_set_dc_cut_off_frequency* functions

2017-12-20 Thread Marcin Ciupak
The following functions:
* rf69_set_dc_cut_off_frequency,
* rf69_set_dc_cut_off_frequency_intern,
* rf69_set_dc_cut_off_frequency_during_afc
are unused and should be removed along with type enum dcc_percent which
was used only by these functions.

Signed-off-by: Marcin Ciupak <marcin.s.ciu...@gmail.com>
---
 drivers/staging/pi433/rf69.c  | 27 ---
 drivers/staging/pi433/rf69.h  |  3 ---
 drivers/staging/pi433/rf69_enum.h | 11 ---
 3 files changed, 41 deletions(-)

diff --git a/drivers/staging/pi433/rf69.c b/drivers/staging/pi433/rf69.c
index a1e2069b3ae1..93b1a9cb2c65 100644
--- a/drivers/staging/pi433/rf69.c
+++ b/drivers/staging/pi433/rf69.c
@@ -380,33 +380,6 @@ int rf69_set_lna_gain(struct spi_device *spi, enum lnaGain 
lnaGain)
}
 }
 
-int rf69_set_dc_cut_off_frequency_intern(struct spi_device *spi, u8 reg, enum 
dcc_percent dcc_percent)
-{
-   switch (dcc_percent) {
-   case dcc_16_percent:return rf69_read_mod_write(spi, reg, 
MASK_BW_DCC_FREQ, BW_DCC_16_PERCENT);
-   case dcc_8_percent: return rf69_read_mod_write(spi, reg, 
MASK_BW_DCC_FREQ, BW_DCC_8_PERCENT);
-   case dcc_4_percent: return rf69_read_mod_write(spi, reg, 
MASK_BW_DCC_FREQ, BW_DCC_4_PERCENT);
-   case dcc_2_percent: return rf69_read_mod_write(spi, reg, 
MASK_BW_DCC_FREQ, BW_DCC_2_PERCENT);
-   case dcc_1_percent: return rf69_read_mod_write(spi, reg, 
MASK_BW_DCC_FREQ, BW_DCC_1_PERCENT);
-   case dcc_0_5_percent:   return rf69_read_mod_write(spi, reg, 
MASK_BW_DCC_FREQ, BW_DCC_0_5_PERCENT);
-   case dcc_0_25_percent:  return rf69_read_mod_write(spi, reg, 
MASK_BW_DCC_FREQ, BW_DCC_0_25_PERCENT);
-   case dcc_0_125_percent: return rf69_read_mod_write(spi, reg, 
MASK_BW_DCC_FREQ, BW_DCC_0_125_PERCENT);
-   default:
-   dev_dbg(>dev, "set: illegal input param");
-   return -EINVAL;
-   }
-}
-
-int rf69_set_dc_cut_off_frequency(struct spi_device *spi, enum dcc_percent 
dcc_percent)
-{
-   return rf69_set_dc_cut_off_frequency_intern(spi, REG_RXBW, dcc_percent);
-}
-
-int rf69_set_dc_cut_off_frequency_during_afc(struct spi_device *spi, enum 
dcc_percent dcc_percent)
-{
-   return rf69_set_dc_cut_off_frequency_intern(spi, REG_AFCBW, 
dcc_percent);
-}
-
 static int rf69_set_bandwidth_intern(struct spi_device *spi, u8 reg,
 enum mantisse mantisse, u8 exponent)
 {
diff --git a/drivers/staging/pi433/rf69.h b/drivers/staging/pi433/rf69.h
index 4dc7234f0acf..85185ca925ba 100644
--- a/drivers/staging/pi433/rf69.h
+++ b/drivers/staging/pi433/rf69.h
@@ -38,9 +38,6 @@ int rf69_set_output_power_level(struct spi_device *spi, u8 
powerLevel);
 int rf69_set_pa_ramp(struct spi_device *spi, enum paRamp paRamp);
 int rf69_set_antenna_impedance(struct spi_device *spi, enum antennaImpedance 
antennaImpedance);
 int rf69_set_lna_gain(struct spi_device *spi, enum lnaGain lnaGain);
-int rf69_set_dc_cut_off_frequency_intern(struct spi_device *spi, u8 reg, enum 
dcc_percent dcc_percent);
-int rf69_set_dc_cut_off_frequency(struct spi_device *spi, enum dcc_percent 
dcc_percent);
-int rf69_set_dc_cut_off_frequency_during_afc(struct spi_device *spi, enum 
dcc_percent dcc_percent);
 int rf69_set_bandwidth(struct spi_device *spi, enum mantisse mantisse, u8 
exponent);
 int rf69_set_bandwidth_during_afc(struct spi_device *spi, enum mantisse 
mantisse, u8 exponent);
 int rf69_set_ook_threshold_dec(struct spi_device *spi, enum thresholdDecrement 
thresholdDecrement);
diff --git a/drivers/staging/pi433/rf69_enum.h 
b/drivers/staging/pi433/rf69_enum.h
index 407e037bfe10..359a74ff099c 100644
--- a/drivers/staging/pi433/rf69_enum.h
+++ b/drivers/staging/pi433/rf69_enum.h
@@ -76,17 +76,6 @@ enum lnaGain {
undefined
 };
 
-enum dcc_percent {
-   dcc_16_percent,
-   dcc_8_percent,
-   dcc_4_percent,
-   dcc_2_percent,
-   dcc_1_percent,
-   dcc_0_5_percent,
-   dcc_0_25_percent,
-   dcc_0_125_percent
-};
-
 enum mantisse {
mantisse16,
mantisse20,
-- 
2.15.0

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 8/9] staging: pi433: remove unused rf69_set_ook_threshold_type function

2017-12-20 Thread Marcin Ciupak
Function rf69_set_ook_threshold_type is unused and should be removed
along with type enum thresholdType which was used only by that function.

Signed-off-by: Marcin Ciupak <marcin.s.ciu...@gmail.com>
---
 drivers/staging/pi433/rf69.c  | 12 
 drivers/staging/pi433/rf69.h  |  1 -
 drivers/staging/pi433/rf69_enum.h |  6 --
 3 files changed, 19 deletions(-)

diff --git a/drivers/staging/pi433/rf69.c b/drivers/staging/pi433/rf69.c
index 9bd820f308e4..a1e2069b3ae1 100644
--- a/drivers/staging/pi433/rf69.c
+++ b/drivers/staging/pi433/rf69.c
@@ -461,18 +461,6 @@ int rf69_set_bandwidth_during_afc(struct spi_device *spi, 
enum mantisse mantisse
return rf69_set_bandwidth_intern(spi, REG_AFCBW, mantisse, exponent);
 }
 
-int rf69_set_ook_threshold_type(struct spi_device *spi, enum thresholdType 
thresholdType)
-{
-   switch (thresholdType) {
-   case fixed: return rf69_read_mod_write(spi, REG_OOKPEAK, 
MASK_OOKPEAK_THRESTYPE, OOKPEAK_THRESHTYPE_FIXED);
-   case peak:  return rf69_read_mod_write(spi, REG_OOKPEAK, 
MASK_OOKPEAK_THRESTYPE, OOKPEAK_THRESHTYPE_PEAK);
-   case average:   return rf69_read_mod_write(spi, REG_OOKPEAK, 
MASK_OOKPEAK_THRESTYPE, OOKPEAK_THRESHTYPE_AVERAGE);
-   default:
-   dev_dbg(>dev, "set: illegal input param");
-   return -EINVAL;
-   }
-}
-
 int rf69_set_ook_threshold_dec(struct spi_device *spi, enum thresholdDecrement 
thresholdDecrement)
 {
switch (thresholdDecrement) {
diff --git a/drivers/staging/pi433/rf69.h b/drivers/staging/pi433/rf69.h
index 508bb794e525..4dc7234f0acf 100644
--- a/drivers/staging/pi433/rf69.h
+++ b/drivers/staging/pi433/rf69.h
@@ -43,7 +43,6 @@ int rf69_set_dc_cut_off_frequency(struct spi_device *spi, 
enum dcc_percent dcc_p
 int rf69_set_dc_cut_off_frequency_during_afc(struct spi_device *spi, enum 
dcc_percent dcc_percent);
 int rf69_set_bandwidth(struct spi_device *spi, enum mantisse mantisse, u8 
exponent);
 int rf69_set_bandwidth_during_afc(struct spi_device *spi, enum mantisse 
mantisse, u8 exponent);
-int rf69_set_ook_threshold_type(struct spi_device *spi, enum thresholdType 
thresholdType);
 int rf69_set_ook_threshold_dec(struct spi_device *spi, enum thresholdDecrement 
thresholdDecrement);
 int rf69_set_dio_mapping(struct spi_device *spi, u8 DIONumber, u8 value);
 bool rf69_get_flag(struct spi_device *spi, enum flag flag);
diff --git a/drivers/staging/pi433/rf69_enum.h 
b/drivers/staging/pi433/rf69_enum.h
index e18014218ae5..407e037bfe10 100644
--- a/drivers/staging/pi433/rf69_enum.h
+++ b/drivers/staging/pi433/rf69_enum.h
@@ -93,12 +93,6 @@ enum mantisse {
mantisse24
 };
 
-enum thresholdType {
-   fixed,
-   peak,
-   average
-};
-
 enum thresholdDecrement {
dec_every8th,
dec_every4th,
-- 
2.15.0

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 7/9] staging: pi433: remove unused rf69_set_ook_threshold_step function

2017-12-20 Thread Marcin Ciupak
Function rf69_set_ook_threshold_step is unused and should be removed
along with type enum thresholdStep which was used only by that function.

Signed-off-by: Marcin Ciupak <marcin.s.ciu...@gmail.com>
---
 drivers/staging/pi433/rf69.c  | 17 -
 drivers/staging/pi433/rf69.h  |  1 -
 drivers/staging/pi433/rf69_enum.h | 11 ---
 3 files changed, 29 deletions(-)

diff --git a/drivers/staging/pi433/rf69.c b/drivers/staging/pi433/rf69.c
index e7147d6b8bc5..9bd820f308e4 100644
--- a/drivers/staging/pi433/rf69.c
+++ b/drivers/staging/pi433/rf69.c
@@ -473,23 +473,6 @@ int rf69_set_ook_threshold_type(struct spi_device *spi, 
enum thresholdType thres
}
 }
 
-int rf69_set_ook_threshold_step(struct spi_device *spi, enum thresholdStep 
thresholdStep)
-{
-   switch (thresholdStep) {
-   case step_0_5db: return rf69_read_mod_write(spi, REG_OOKPEAK, 
MASK_OOKPEAK_THRESSTEP, OOKPEAK_THRESHSTEP_0_5_DB);
-   case step_1_0db: return rf69_read_mod_write(spi, REG_OOKPEAK, 
MASK_OOKPEAK_THRESSTEP, OOKPEAK_THRESHSTEP_1_0_DB);
-   case step_1_5db: return rf69_read_mod_write(spi, REG_OOKPEAK, 
MASK_OOKPEAK_THRESSTEP, OOKPEAK_THRESHSTEP_1_5_DB);
-   case step_2_0db: return rf69_read_mod_write(spi, REG_OOKPEAK, 
MASK_OOKPEAK_THRESSTEP, OOKPEAK_THRESHSTEP_2_0_DB);
-   case step_3_0db: return rf69_read_mod_write(spi, REG_OOKPEAK, 
MASK_OOKPEAK_THRESSTEP, OOKPEAK_THRESHSTEP_3_0_DB);
-   case step_4_0db: return rf69_read_mod_write(spi, REG_OOKPEAK, 
MASK_OOKPEAK_THRESSTEP, OOKPEAK_THRESHSTEP_4_0_DB);
-   case step_5_0db: return rf69_read_mod_write(spi, REG_OOKPEAK, 
MASK_OOKPEAK_THRESSTEP, OOKPEAK_THRESHSTEP_5_0_DB);
-   case step_6_0db: return rf69_read_mod_write(spi, REG_OOKPEAK, 
MASK_OOKPEAK_THRESSTEP, OOKPEAK_THRESHSTEP_6_0_DB);
-   default:
-   dev_dbg(>dev, "set: illegal input param");
-   return -EINVAL;
-   }
-}
-
 int rf69_set_ook_threshold_dec(struct spi_device *spi, enum thresholdDecrement 
thresholdDecrement)
 {
switch (thresholdDecrement) {
diff --git a/drivers/staging/pi433/rf69.h b/drivers/staging/pi433/rf69.h
index c586cb12c12d..508bb794e525 100644
--- a/drivers/staging/pi433/rf69.h
+++ b/drivers/staging/pi433/rf69.h
@@ -44,7 +44,6 @@ int rf69_set_dc_cut_off_frequency_during_afc(struct 
spi_device *spi, enum dcc_pe
 int rf69_set_bandwidth(struct spi_device *spi, enum mantisse mantisse, u8 
exponent);
 int rf69_set_bandwidth_during_afc(struct spi_device *spi, enum mantisse 
mantisse, u8 exponent);
 int rf69_set_ook_threshold_type(struct spi_device *spi, enum thresholdType 
thresholdType);
-int rf69_set_ook_threshold_step(struct spi_device *spi, enum thresholdStep 
thresholdStep);
 int rf69_set_ook_threshold_dec(struct spi_device *spi, enum thresholdDecrement 
thresholdDecrement);
 int rf69_set_dio_mapping(struct spi_device *spi, u8 DIONumber, u8 value);
 bool rf69_get_flag(struct spi_device *spi, enum flag flag);
diff --git a/drivers/staging/pi433/rf69_enum.h 
b/drivers/staging/pi433/rf69_enum.h
index dd33126817b6..e18014218ae5 100644
--- a/drivers/staging/pi433/rf69_enum.h
+++ b/drivers/staging/pi433/rf69_enum.h
@@ -99,17 +99,6 @@ enum thresholdType {
average
 };
 
-enum thresholdStep {
-   step_0_5db,
-   step_1_0db,
-   step_1_5db,
-   step_2_0db,
-   step_3_0db,
-   step_4_0db,
-   step_5_0db,
-   step_6_0db
-};
-
 enum thresholdDecrement {
dec_every8th,
dec_every4th,
-- 
2.15.0

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 6/9] staging: pi433: remove unused rf69_reset_flag function

2017-12-20 Thread Marcin Ciupak
Function rf69_reset_flag is unused and should be removed.

Signed-off-by: Marcin Ciupak <marcin.s.ciu...@gmail.com>
---
 drivers/staging/pi433/rf69.c | 12 
 drivers/staging/pi433/rf69.h |  1 -
 2 files changed, 13 deletions(-)

diff --git a/drivers/staging/pi433/rf69.c b/drivers/staging/pi433/rf69.c
index e3d0a4bca380..e7147d6b8bc5 100644
--- a/drivers/staging/pi433/rf69.c
+++ b/drivers/staging/pi433/rf69.c
@@ -572,18 +572,6 @@ bool rf69_get_flag(struct spi_device *spi, enum flag flag)
}
 }
 
-int rf69_reset_flag(struct spi_device *spi, enum flag flag)
-{
-   switch (flag) {
-   case rssiExceededThreshold: return rf69_write_reg(spi, REG_IRQFLAGS1, 
MASK_IRQFLAGS1_RSSI);
-   case syncAddressMatch:  return rf69_write_reg(spi, REG_IRQFLAGS1, 
MASK_IRQFLAGS1_SYNC_ADDRESS_MATCH);
-   case fifoOverrun:   return rf69_write_reg(spi, REG_IRQFLAGS2, 
MASK_IRQFLAGS2_FIFO_OVERRUN);
-   default:
-   dev_dbg(>dev, "set: illegal input param");
-   return -EINVAL;
-   }
-}
-
 int rf69_set_rssi_threshold(struct spi_device *spi, u8 threshold)
 {
/* no value check needed - u8 exactly matches register size */
diff --git a/drivers/staging/pi433/rf69.h b/drivers/staging/pi433/rf69.h
index 6a5e8982e7cf..c586cb12c12d 100644
--- a/drivers/staging/pi433/rf69.h
+++ b/drivers/staging/pi433/rf69.h
@@ -48,7 +48,6 @@ int rf69_set_ook_threshold_step(struct spi_device *spi, enum 
thresholdStep thres
 int rf69_set_ook_threshold_dec(struct spi_device *spi, enum thresholdDecrement 
thresholdDecrement);
 int rf69_set_dio_mapping(struct spi_device *spi, u8 DIONumber, u8 value);
 bool rf69_get_flag(struct spi_device *spi, enum flag flag);
-int rf69_reset_flag(struct spi_device *spi, enum flag flag);
 int rf69_set_rssi_threshold(struct spi_device *spi, u8 threshold);
 int rf69_set_preamble_length(struct spi_device *spi, u16 preambleLength);
 int rf69_enable_sync(struct spi_device *spi);
-- 
2.15.0

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 4/9] staging: pi433: remove unused rf69_set_rssi_timeout function

2017-12-20 Thread Marcin Ciupak
Function rf69_set_rssi_timeout is unused and should be removed.

Signed-off-by: Marcin Ciupak <marcin.s.ciu...@gmail.com>
---
 drivers/staging/pi433/rf69.c | 7 ---
 drivers/staging/pi433/rf69.h | 1 -
 2 files changed, 8 deletions(-)

diff --git a/drivers/staging/pi433/rf69.c b/drivers/staging/pi433/rf69.c
index 33a0e00852dc..25dfd8d40a47 100644
--- a/drivers/staging/pi433/rf69.c
+++ b/drivers/staging/pi433/rf69.c
@@ -598,13 +598,6 @@ int rf69_set_rx_start_timeout(struct spi_device *spi, u8 
timeout)
return rf69_write_reg(spi, REG_RXTIMEOUT1, timeout);
 }
 
-int rf69_set_rssi_timeout(struct spi_device *spi, u8 timeout)
-{
-   /* no value check needed - u8 exactly matches register size */
-
-   return rf69_write_reg(spi, REG_RXTIMEOUT2, timeout);
-}
-
 int rf69_set_preamble_length(struct spi_device *spi, u16 preambleLength)
 {
int retval;
diff --git a/drivers/staging/pi433/rf69.h b/drivers/staging/pi433/rf69.h
index 271fc178ca07..592de97ea69f 100644
--- a/drivers/staging/pi433/rf69.h
+++ b/drivers/staging/pi433/rf69.h
@@ -51,7 +51,6 @@ bool rf69_get_flag(struct spi_device *spi, enum flag flag);
 int rf69_reset_flag(struct spi_device *spi, enum flag flag);
 int rf69_set_rssi_threshold(struct spi_device *spi, u8 threshold);
 int rf69_set_rx_start_timeout(struct spi_device *spi, u8 timeout);
-int rf69_set_rssi_timeout(struct spi_device *spi, u8 timeout);
 int rf69_set_preamble_length(struct spi_device *spi, u16 preambleLength);
 int rf69_enable_sync(struct spi_device *spi);
 int rf69_disable_sync(struct spi_device *spi);
-- 
2.15.0

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 5/9] staging: pi433: remove unused rf69_set_rx_start_timeout function

2017-12-20 Thread Marcin Ciupak
Function rf69_set_rx_start_timeout is unused and should be removed.

Signed-off-by: Marcin Ciupak <marcin.s.ciu...@gmail.com>
---
 drivers/staging/pi433/rf69.c | 7 ---
 drivers/staging/pi433/rf69.h | 1 -
 2 files changed, 8 deletions(-)

diff --git a/drivers/staging/pi433/rf69.c b/drivers/staging/pi433/rf69.c
index 25dfd8d40a47..e3d0a4bca380 100644
--- a/drivers/staging/pi433/rf69.c
+++ b/drivers/staging/pi433/rf69.c
@@ -591,13 +591,6 @@ int rf69_set_rssi_threshold(struct spi_device *spi, u8 
threshold)
return rf69_write_reg(spi, REG_RSSITHRESH, threshold);
 }
 
-int rf69_set_rx_start_timeout(struct spi_device *spi, u8 timeout)
-{
-   /* no value check needed - u8 exactly matches register size */
-
-   return rf69_write_reg(spi, REG_RXTIMEOUT1, timeout);
-}
-
 int rf69_set_preamble_length(struct spi_device *spi, u16 preambleLength)
 {
int retval;
diff --git a/drivers/staging/pi433/rf69.h b/drivers/staging/pi433/rf69.h
index 592de97ea69f..6a5e8982e7cf 100644
--- a/drivers/staging/pi433/rf69.h
+++ b/drivers/staging/pi433/rf69.h
@@ -50,7 +50,6 @@ int rf69_set_dio_mapping(struct spi_device *spi, u8 
DIONumber, u8 value);
 bool rf69_get_flag(struct spi_device *spi, enum flag flag);
 int rf69_reset_flag(struct spi_device *spi, enum flag flag);
 int rf69_set_rssi_threshold(struct spi_device *spi, u8 threshold);
-int rf69_set_rx_start_timeout(struct spi_device *spi, u8 timeout);
 int rf69_set_preamble_length(struct spi_device *spi, u16 preambleLength);
 int rf69_enable_sync(struct spi_device *spi);
 int rf69_disable_sync(struct spi_device *spi);
-- 
2.15.0

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 3/9] staging: pi433: remove unused rf69_set_sync_tolerance function

2017-12-20 Thread Marcin Ciupak
Function rf69_set_sync_tolerance is unused and should be removed.

Signed-off-by: Marcin Ciupak <marcin.s.ciu...@gmail.com>
---
 drivers/staging/pi433/rf69.c | 12 
 drivers/staging/pi433/rf69.h |  1 -
 2 files changed, 13 deletions(-)

diff --git a/drivers/staging/pi433/rf69.c b/drivers/staging/pi433/rf69.c
index 507092c44f2e..33a0e00852dc 100644
--- a/drivers/staging/pi433/rf69.c
+++ b/drivers/staging/pi433/rf69.c
@@ -658,18 +658,6 @@ int rf69_set_sync_size(struct spi_device *spi, u8 syncSize)
return rf69_read_mod_write(spi, REG_SYNC_CONFIG, 
MASK_SYNC_CONFIG_SYNC_SIZE, (syncSize << 3));
 }
 
-int rf69_set_sync_tolerance(struct spi_device *spi, u8 syncTolerance)
-{
-   // check input value
-   if (syncTolerance > 0x07) {
-   dev_dbg(>dev, "set: illegal input param");
-   return -EINVAL;
-   }
-
-   // write value
-   return rf69_read_mod_write(spi, REG_SYNC_CONFIG, 
MASK_SYNC_CONFIG_SYNC_SIZE, syncTolerance);
-}
-
 int rf69_set_sync_values(struct spi_device *spi, u8 syncValues[8])
 {
int retval = 0;
diff --git a/drivers/staging/pi433/rf69.h b/drivers/staging/pi433/rf69.h
index e5439ad5d141..271fc178ca07 100644
--- a/drivers/staging/pi433/rf69.h
+++ b/drivers/staging/pi433/rf69.h
@@ -57,7 +57,6 @@ int rf69_enable_sync(struct spi_device *spi);
 int rf69_disable_sync(struct spi_device *spi);
 int rf69_set_fifo_fill_condition(struct spi_device *spi, enum 
fifoFillCondition fifoFillCondition);
 int rf69_set_sync_size(struct spi_device *spi, u8 sync_size);
-int rf69_set_sync_tolerance(struct spi_device *spi, u8 syncTolerance);
 int rf69_set_sync_values(struct spi_device *spi, u8 syncValues[8]);
 int rf69_set_packet_format(struct spi_device *spi, enum packetFormat 
packetFormat);
 int rf69_enable_crc(struct spi_device *spi);
-- 
2.15.0

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 2/9] staging: pi433: remove unused rf69_get_payload_length function

2017-12-20 Thread Marcin Ciupak
Function rf69_get_payload_length is unused and should be removed.

Signed-off-by: Marcin Ciupak <marcin.s.ciu...@gmail.com>
---
 drivers/staging/pi433/rf69.c | 5 -
 drivers/staging/pi433/rf69.h | 1 -
 2 files changed, 6 deletions(-)

diff --git a/drivers/staging/pi433/rf69.c b/drivers/staging/pi433/rf69.c
index 043139730382..507092c44f2e 100644
--- a/drivers/staging/pi433/rf69.c
+++ b/drivers/staging/pi433/rf69.c
@@ -724,11 +724,6 @@ int rf69_set_payload_length(struct spi_device *spi, u8 
payloadLength)
return rf69_write_reg(spi, REG_PAYLOAD_LENGTH, payloadLength);
 }
 
-u8  rf69_get_payload_length(struct spi_device *spi)
-{
-   return (u8)rf69_read_reg(spi, REG_PAYLOAD_LENGTH);
-}
-
 int rf69_set_node_address(struct spi_device *spi, u8 nodeAddress)
 {
return rf69_write_reg(spi, REG_NODEADRS, nodeAddress);
diff --git a/drivers/staging/pi433/rf69.h b/drivers/staging/pi433/rf69.h
index 20af63927861..e5439ad5d141 100644
--- a/drivers/staging/pi433/rf69.h
+++ b/drivers/staging/pi433/rf69.h
@@ -64,7 +64,6 @@ int rf69_enable_crc(struct spi_device *spi);
 int rf69_disable_crc(struct spi_device *spi);
 int rf69_set_adressFiltering(struct spi_device *spi, enum addressFiltering 
addressFiltering);
 int rf69_set_payload_length(struct spi_device *spi, u8 payloadLength);
-u8  rf69_get_payload_length(struct spi_device *spi);
 int rf69_set_node_address(struct spi_device *spi, u8 nodeAddress);
 int rf69_set_broadcast_address(struct spi_device *spi, u8 broadcastAddress);
 int rf69_set_tx_start_condition(struct spi_device *spi, enum txStartCondition 
txStartCondition);
-- 
2.15.0

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 1/9] staging: pi433: make local functions static

2017-12-20 Thread Marcin Ciupak
Following functions:
* rf69_get_modulation
* rf69_read_reg
* rf69_write_reg
are used locally only and should be declared as static

Signed-off-by: Marcin Ciupak <marcin.s.ciu...@gmail.com>
---
 drivers/staging/pi433/rf69.c | 94 ++--
 drivers/staging/pi433/rf69.h |  3 --
 2 files changed, 47 insertions(+), 50 deletions(-)

diff --git a/drivers/staging/pi433/rf69.c b/drivers/staging/pi433/rf69.c
index f58b925bb1da..043139730382 100644
--- a/drivers/staging/pi433/rf69.c
+++ b/drivers/staging/pi433/rf69.c
@@ -33,6 +33,52 @@
 
 /*-*/
 
+static u8 rf69_read_reg(struct spi_device *spi, u8 addr)
+{
+   int retval;
+
+   retval = spi_w8r8(spi, addr);
+
+#ifdef DEBUG_VALUES
+   if (retval < 0)
+   /* should never happen, since we already checked,
+* that module is connected. Therefore no error
+* handling, just an optional error message...
+*/
+   dev_dbg(>dev, "read 0x%x FAILED\n", addr);
+   else
+   dev_dbg(>dev, "read 0x%x from reg 0x%x\n", retval, addr);
+#endif
+
+   return retval;
+}
+
+static int rf69_write_reg(struct spi_device *spi, u8 addr, u8 value)
+{
+   int retval;
+   char buffer[2];
+
+   buffer[0] = addr | WRITE_BIT;
+   buffer[1] = value;
+
+   retval = spi_write(spi, , 2);
+
+#ifdef DEBUG_VALUES
+   if (retval < 0)
+   /* should never happen, since we already checked,
+* that module is connected. Therefore no error
+* handling, just an optional error message...
+*/
+   dev_dbg(>dev, "write 0x%x to 0x%x FAILED\n", value, addr);
+   else
+   dev_dbg(>dev, "wrote 0x%x to reg 0x%x\n", value, addr);
+#endif
+
+   return retval;
+}
+
+/*-*/
+
 static int rf69_set_bit(struct spi_device *spi, u8 reg, u8 mask)
 {
u8 tmp;
@@ -96,7 +142,7 @@ int rf69_set_modulation(struct spi_device *spi, enum 
modulation modulation)
}
 }
 
-enum modulation rf69_get_modulation(struct spi_device *spi)
+static enum modulation rf69_get_modulation(struct spi_device *spi)
 {
u8 currentValue;
 
@@ -796,49 +842,3 @@ int rf69_write_fifo(struct spi_device *spi, u8 *buffer, 
unsigned int size)
return spi_write(spi, local_buffer, size + 1);
 }
 
-/*-*/
-
-u8 rf69_read_reg(struct spi_device *spi, u8 addr)
-{
-   int retval;
-
-   retval = spi_w8r8(spi, addr);
-
-#ifdef DEBUG_VALUES
-   if (retval < 0)
-   /* should never happen, since we already checked,
-* that module is connected. Therefore no error
-* handling, just an optional error message...
-*/
-   dev_dbg(>dev, "read 0x%x FAILED\n", addr);
-   else
-   dev_dbg(>dev, "read 0x%x from reg 0x%x\n", retval, addr);
-#endif
-
-   return retval;
-}
-
-int rf69_write_reg(struct spi_device *spi, u8 addr, u8 value)
-{
-   int retval;
-   char buffer[2];
-
-   buffer[0] = addr | WRITE_BIT;
-   buffer[1] = value;
-
-   retval = spi_write(spi, , 2);
-
-#ifdef DEBUG_VALUES
-   if (retval < 0)
-   /* should never happen, since we already checked,
-* that module is connected. Therefore no error
-* handling, just an optional error message...
-*/
-   dev_dbg(>dev, "write 0x%x to 0x%x FAILED\n", value, addr);
-   else
-   dev_dbg(>dev, "wrote 0x%x to reg 0x%x\n", value, addr);
-#endif
-
-   return retval;
-}
-
diff --git a/drivers/staging/pi433/rf69.h b/drivers/staging/pi433/rf69.h
index e90228a0ca29..20af63927861 100644
--- a/drivers/staging/pi433/rf69.h
+++ b/drivers/staging/pi433/rf69.h
@@ -28,7 +28,6 @@
 int rf69_set_mode(struct spi_device *spi, enum mode mode);
 int rf69_set_data_mode(struct spi_device *spi, u8 data_mode);
 int rf69_set_modulation(struct spi_device *spi, enum modulation modulation);
-enum modulation rf69_get_modulation(struct spi_device *spi);
 int rf69_set_modulation_shaping(struct spi_device *spi, enum mod_shaping 
mod_shaping);
 int rf69_set_bit_rate(struct spi_device *spi, u16 bitRate);
 int rf69_set_deviation(struct spi_device *spi, u32 deviation);
@@ -75,6 +74,4 @@ int rf69_set_dagc(struct spi_device *spi, enum dagc dagc);
 int rf69_read_fifo(struct spi_device *spi, u8 *buffer, unsigned int size);
 int rf69_write_fifo(struct spi_device *spi, u8 *buffer, unsigned int size);
 
-u8  rf69_read_reg(struct spi_device *spi, u8 addr);
-int rf69_write_reg(struct spi_device *spi, u8 addr, u8 value);
 #endif
-- 
2.15.0

_

[PATCH 0/9] staging: pi433: local and unused functions cleanup

2017-12-20 Thread Marcin Ciupak
These patches make local functions static and remove unused ones. Each
function is removed by separate patch in order to make it easier to
revert patch in future if the function will be needed in later version
of the driver.

Marcin Ciupak (9):
  staging: pi433: make local functions static
  staging: pi433: remove unused rf69_get_payload_length function
  staging: pi433: remove unused rf69_set_sync_tolerance function
  staging: pi433: remove unused rf69_set_rssi_timeout function
  staging: pi433: remove unused rf69_set_rx_start_timeout function
  staging: pi433: remove unused rf69_reset_flag function
  staging: pi433: remove unused rf69_set_ook_threshold_step function
  staging: pi433: remove unused rf69_set_ook_threshold_type function
  staging: pi433: remove unused rf69_set_dc_cut_off_frequency* functions

 drivers/staging/pi433/rf69.c  | 193 ++
 drivers/staging/pi433/rf69.h  |  13 ---
 drivers/staging/pi433/rf69_enum.h |  28 --
 3 files changed, 47 insertions(+), 187 deletions(-)

-- 
2.15.0

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: first try to send data with pi433 on Raspberry Pi

2017-12-19 Thread Marcin Ciupak
On Tue, Dec 19, 2017 at 07:59:33PM +0100, Oliver Graute wrote:
> On 12/12/17, Marcin Ciupak wrote:
> > 
> > this is due to fact that pi433_write returns 0 on successful copy while
> > it should return 'copied' value. So it is a bug :)
> > 
> > '0' means nothing was copied so userpsace calls pi433_write again and
> > again, data is put to fifo and when it is full it goes to abort and
> > returns -EAGAIN and logs message write to fifo failed: 0x0
> 
> indeed you are right. I changed the return value and the error is gone!
> 
> +++ b/drivers/staging/pi433/pi433_if.c
> @@ -845,7 +845,7 @@ static irqreturn_t DIO1_irq_handler(int irq, void *dev_id)
>   wake_up_interruptible(>tx_wait_queue);
>   dev_dbg(device->dev, "write: generated new msg with %d bytes.", copied);
>  
> - return 0;
> + return copied;
> 
> If this is the only change here I can provide a patch. 
> 
> Best regards,
> 
> Oliver
Yes, please provide the patch if you can. You can use Reported-by me.

Thanks,
Marcin
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: first try to send data with pi433 on Raspberry Pi

2017-12-12 Thread Marcin Ciupak
On Mon, Dec 11, 2017 at 10:29:54PM +0200, Marcus Wolf wrote:
> 
> Am 11.12.2017 um 20:40 schrieb Oliver Graute:
> > Hello list,
> > 
> > I just got my pi433 working somehow on Raspberry Pi Model B Rev 2.
> > 
> > Here are my findings:
> > 
> > first I need to enabling spi in config.txt on boot partition.
> > 
> > dtparam=spi=on
> > 
> > then adding this node to bcm2835-rpi-b-rev2.dts and compile.
> > 
> > _gpio7 {
> > pi433: pi433 at 0 {
> > compatible = "Smarthome-Wolf,pi433";
> > reg = <0>; /* CE 0 */
> > #address-cells = <1>;
> > #size-cells = <0>;
> > spi-max-frequency = <1000>;
> > 
> > pinctrl-0 = <_pins>;
> > DIO0-gpio = < 24 0>;
> > DIO1-gpio = < 25 0>;
> > DIO2-gpio = <  7 0>;
> > status = "okay";
> > };
> > };
> > 
> > Then loading spi_bcm2835 and pi433 modules:
> > 
> > modprobe spi_bcm2835
> > modprobe pi433
> > 
> > Is this the right usage to send some data over the air?
> > 
> > echo 1 > /dev/pi433
> > 
> > [   31.223963] spi-bcm2835 20204000.spi: registered master spi0
> > [   31.224300] spi spi0.0: setup mode 0, 8 bits/w, 1000 Hz max --> 0
> > [   31.224625] spi-bcm2835 20204000.spi: registered child spi0.0
> > [   31.224687] spi spi0.1: setup mode 0, 8 bits/w, 12500 Hz max --> 0
> > [   31.224977] spi-bcm2835 20204000.spi: registered child spi0.1
> > [   34.062430] random: crng init done
> > [   43.122779] pi433: module is from the staging directory, the quality is 
> > unknown, you have been warned.
> > [   43.143436] pi433 spi0.0: setup mode 0, 8 bits/w, 1000 Hz max --> 0
> > [   43.143465] pi433 spi0.0: spi interface setup: mode 0x 0, 8 bits per 
> > word, 1000hz max speed
> > [   43.143587] pi433 spi0.0: found pi433 (ver. 0x24)
> > [   43.144027] pi433 spi0.0: DIO0 succesfully configured
> > [   43.144259] pi433 spi0.0: DIO1 succesfully configured
> > [   43.144274] pi433 spi0.0: set: mode
> > [   43.144387] pi433 spi0.0: read 0x4 from reg 0x1
> > [   43.144463] pi433 spi0.0: wrote 0x4 to reg 0x1
> > [   43.144476] pi433 spi0.0: set: data mode
> > [   43.144548] pi433 spi0.0: read 0x8 from reg 0x2
> > [   43.144617] pi433 spi0.0: wrote 0x8 to reg 0x2
> > [   43.144632] pi433 spi0.0: set: amp #0
> > [   43.144703] pi433 spi0.0: read 0x9f from reg 0x11
> > [   43.144772] pi433 spi0.0: wrote 0x9f to reg 0x11
> > [   43.144785] pi433 spi0.0: set: amp #1
> > [   43.144856] pi433 spi0.0: read 0x9f from reg 0x11
> > [   43.144923] pi433 spi0.0: wrote 0x9f to reg 0x11
> > [   43.144936] pi433 spi0.0: set: amp #2
> > [   43.145007] pi433 spi0.0: read 0x9f from reg 0x11
> > [   43.145074] pi433 spi0.0: wrote 0x9f to reg 0x11
> > [   43.145088] pi433 spi0.0: set: power level
> > [   43.145158] pi433 spi0.0: read 0x9f from reg 0x11
> > [   43.145225] pi433 spi0.0: wrote 0x9f to reg 0x11
> > [   43.145237] pi433 spi0.0: set: antenna impedance
> > [   43.145308] pi433 spi0.0: read 0x8 from reg 0x18
> > [   43.145376] pi433 spi0.0: wrote 0x8 to reg 0x18
> > [   43.145935] pi433 pi433: created device for major 244, minor 0
> > [   43.148742] pi433 pi433: thread: going to wait for new messages
> > 
> > Now I got hundreds messages of kind:
> > 
> > [   64.221295] pi433 pi433: write: generated new msg with 2 bytes.
> > 
> > snip
> > 
> > [   64.222671] pi433 pi433: write: generated new msg with 2 bytes.
> > [   64.223882] pi433 pi433: read 2 message byte(s) from fifo queue.
> > [   64.223919] pi433 spi0.0: set: mode
> > [   64.224010] pi433 spi0.0: read 0x4 from reg 0x1
> > [   64.224053] pi433 spi0.0: wrote 0x4 to reg 0x1
> > [   64.224064] pi433 spi0.0: set: fifo threshold
> > [   64.224100] pi433 spi0.0: read 0xf from reg 0x3c
> > [   64.224129] pi433 spi0.0: wrote 0xf to reg 0x3c
> > [   64.224159] pi433 spi0.0: 0 - 0x0
> > [   64.224170] pi433 spi0.0: set: payload length
> > [   64.224197] pi433 spi0.0: wrote 0x0 to reg 0x38
> > [   64.224209] pi433 spi0.0: set: frequency
> > [   64.224237] pi433 spi0.0: wrote 0x0 to reg 0x7
> > [   64.224263] pi433 spi0.0: wrote 0x0 to reg 0x8
> > [   64.224292] pi433 spi0.0: wrote 0x0 to reg 0x9
> > [   64.224303] pi433 spi0.0: set: bit rate
> > [   64.224331] pi433 spi0.0: wrote 0x1a to reg 0x3
> > [   64.224359] pi433 spi0.0: wrote 0x88 to reg 0x4
> > [   64.224370] pi433 spi0.0: set: modulation
> > [   64.224404] pi433 spi0.0: read 0x8 from reg 0x2
> > [   64.224431] pi433 spi0.0: wrote 0x8 to reg 0x2
> > [   64.224442] pi433 spi0.0: set: deviation
> > [   64.224450] pi433 spi0.0: set_deviation: illegal input param
> > [   64.224458] pi433 spi0.0: set: deviation
> > [   64.224466] pi433 spi0.0: set_deviation: illegal input param
> > [   64.224475] pi433 spi0.0: set: DIO mapping
> > [   64.224506] pi433 spi0.0: read 0x0 from reg 0x25
> > [   64.224537] pi433 spi0.0: wrote 0x0 to reg 0x25
> > [   64.224555] pi433 spi0.0: set: DIO mapping
> > [   64.224591] pi433 spi0.0: read 0x0 from reg 0x25
> > [   64.224618] pi433 

[PATCH 2/2] staging: pi433: Fix validation of rf69_get_modulation value

2017-12-08 Thread Marcin Ciupak
Checking of modulation in rf69_set_modulation_shaping is done by
if-else and since else part covers OOK and UNDEF values it possible to
set modulation shaping for undefined modulation type.
To fix this validation should be done by switch clause and in case of
undefined modulation error returned.

Signed-off-by: Marcin Ciupak <marcin.s.ciu...@gmail.com>
---
 drivers/staging/pi433/rf69.c | 8 ++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/staging/pi433/rf69.c b/drivers/staging/pi433/rf69.c
index 3b73a3a02879..a66db795d7df 100644
--- a/drivers/staging/pi433/rf69.c
+++ b/drivers/staging/pi433/rf69.c
@@ -129,7 +129,8 @@ int rf69_set_modulation_shaping(struct spi_device *spi,
dev_dbg(>dev, "set: mod shaping");
#endif
 
-   if (rf69_get_modulation(spi) == FSK) {
+   switch (rf69_get_modulation(spi)) {
+   case FSK:
switch (mod_shaping) {
case SHAPING_OFF: return rf69_read_mod_write(spi, 
REG_DATAMODUL, MASK_DATAMODUL_MODULATION_SHAPE, 
DATAMODUL_MODULATION_SHAPE_NONE);
case SHAPING_1_0: return rf69_read_mod_write(spi, 
REG_DATAMODUL, MASK_DATAMODUL_MODULATION_SHAPE, DATAMODUL_MODULATION_SHAPE_1_0);
@@ -139,7 +140,7 @@ int rf69_set_modulation_shaping(struct spi_device *spi,
dev_dbg(>dev, "set: illegal input param");
return -EINVAL;
}
-   } else {
+   case OOK:
switch (mod_shaping) {
case SHAPING_OFF: return rf69_read_mod_write(spi, 
REG_DATAMODUL, MASK_DATAMODUL_MODULATION_SHAPE, 
DATAMODUL_MODULATION_SHAPE_NONE);
case SHAPING_BR:  return rf69_read_mod_write(spi, 
REG_DATAMODUL, MASK_DATAMODUL_MODULATION_SHAPE, DATAMODUL_MODULATION_SHAPE_BR);
@@ -148,6 +149,9 @@ int rf69_set_modulation_shaping(struct spi_device *spi,
dev_dbg(>dev, "set: illegal input param");
return -EINVAL;
}
+   default:
+   dev_dbg(>dev, "set: modulation undefined");
+   return -EINVAL;
}
 }
 
-- 
2.15.0

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 0/2] Fix usage and validation of undefined value in enum modulation

2017-12-08 Thread Marcin Ciupak
This patches fixes usage and validation of undefined enum modulation
value.

First one adds missing enum which is returned from rf69_get_modulation
function, second one fixes validation issue in
rf69_set_modulation_shaping function.

The issue is that return value is checked against FSK enum value only
and all other values are in else branch what leads to possibility of
setting modulation shaping for undefined modulation.

Marcin Ciupak (2):
  staging: pi433: Fix missing 'undefined' value in enum modulation
  staging: pi433: Fix validation of rf69_get_modulation value

 drivers/staging/pi433/rf69.c  | 10 +++---
 drivers/staging/pi433/rf69_enum.h |  3 ++-
 2 files changed, 9 insertions(+), 4 deletions(-)

-- 
2.15.0

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 1/2] staging: pi433: Fix missing 'undefined' value in enum modulation

2017-12-08 Thread Marcin Ciupak
It is possible that rf69_get_modulation() function will return
'undefined' value and this value is missing in enum modulation. Fix this
by adding appropriate entry in enum modulation.

Signed-off-by: Marcin Ciupak <marcin.s.ciu...@gmail.com>
---
 drivers/staging/pi433/rf69.c  | 2 +-
 drivers/staging/pi433/rf69_enum.h | 3 ++-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/staging/pi433/rf69.c b/drivers/staging/pi433/rf69.c
index 7140fa2ea592..3b73a3a02879 100644
--- a/drivers/staging/pi433/rf69.c
+++ b/drivers/staging/pi433/rf69.c
@@ -118,7 +118,7 @@ enum modulation rf69_get_modulation(struct spi_device *spi)
switch (currentValue & MASK_DATAMODUL_MODULATION_TYPE >> 3) { // TODO 
improvement: change 3 to define
case DATAMODUL_MODULATION_TYPE_OOK: return OOK;
case DATAMODUL_MODULATION_TYPE_FSK: return FSK;
-   default:return undefined;
+   default:return UNDEF;
}
 }
 
diff --git a/drivers/staging/pi433/rf69_enum.h 
b/drivers/staging/pi433/rf69_enum.h
index 4e64e38ae4ff..ec91f329d871 100644
--- a/drivers/staging/pi433/rf69_enum.h
+++ b/drivers/staging/pi433/rf69_enum.h
@@ -28,7 +28,8 @@ enum mode {
 
 enum modulation {
OOK,
-   FSK
+   FSK,
+   UNDEF
 };
 
 enum mod_shaping {
-- 
2.15.0

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH] staging: pi433: Make rf69_set_dc_cut_off_frequency_intern static

2017-12-03 Thread Marcin Ciupak
On Sat, Dec 02, 2017 at 08:46:15AM -0800, Joe Perches wrote:
> On Sat, 2017-12-02 at 17:20 +0200, Marcus Wolf wrote:
> > rf69_set_dc_cut_off_frequency_intern is used by rf69.c internally only.
> > Therefore removed the function from header and declared it staic in
> > the implemtation.
> > Signed-off-by: Marcus Wolf 
> > ---
> >  drivers/staging/pi433/rf69.c |2 +-
> >  drivers/staging/pi433/rf69.h |1 -
> >  2 files changed, 1 insertion(+), 2 deletions(-)
> > 
> > diff --git a/drivers/staging/pi433/rf69.c b/drivers/staging/pi433/rf69.c
> > index ec4b540..90ccf4e 100644
> > --- a/drivers/staging/pi433/rf69.c
> > +++ b/drivers/staging/pi433/rf69.c
> > @@ -442,7 +442,7 @@ enum lnaGain rf69_get_lna_gain(struct spi_device *spi)
> > }
> >  }
> >  
> > -int rf69_set_dc_cut_off_frequency_intern(struct spi_device *spi, u8 reg, 
> > enum dccPercent dccPercent)
> > +static int rf69_set_dc_cut_off_frequency_intern(struct spi_device *spi, u8 
> > reg, enum dccPercent dccPercent)
> >  {
> > switch (dccPercent) {
> > case dcc16Percent:  return rmw(spi, reg, MASK_BW_DCC_FREQ, 
> > BW_DCC_16_PERCENT);
> > diff --git a/drivers/staging/pi433/rf69.h b/drivers/staging/pi433/rf69.h
> > index 645c8df..7f580e9 100644
> > --- a/drivers/staging/pi433/rf69.h
> > +++ b/drivers/staging/pi433/rf69.h
> > @@ -36,7 +36,6 @@
> >  int rf69_set_antenna_impedance(struct spi_device *spi, enum 
> > antennaImpedance antennaImpedance);
> >  int rf69_set_lna_gain(struct spi_device *spi, enum lnaGain lnaGain);
> >  enum lnaGain rf69_get_lna_gain(struct spi_device *spi);
> > -int rf69_set_dc_cut_off_frequency_intern(struct spi_device *spi, u8 reg, 
> > enum dccPercent dccPercent);
> >  int rf69_set_dc_cut_off_frequency(struct spi_device *spi, enum dccPercent 
> > dccPercent);
> >  int rf69_set_dc_cut_off_frequency_during_afc(struct spi_device *spi, enum 
> > dccPercent dccPercent);
> >  int rf69_set_bandwidth(struct spi_device *spi, enum mantisse mantisse, u8 
> > exponent);
> 
> Beyond the basics of learning to submit patches by
> shutting up checkpatch messages, please always keep
> in mind how to actually improve the logic and code
> clarity for human readers.
> 
> The rf69_set_dc_cut_off_frequency_intern function
> is actually pretty poorly written.
> 
> It's repeated logic that could be simplified and
> code size reduced quite a bit.
> 
> For instance, the patch below makes it more obvious
> what the function does and reduces boiler-plate
> copy/paste to a single line.
> 
> And I don't particularly care that it is not
> checkpatch 'clean'.  checkpatch is only a stupid,
> mindless style checker.  Always try to be better
> than a mindless script.
> 
>   and you -really- want to make it checkpatch clean,
>   a new #define could be used like this below
> 
>   #define case_dcc_percent(val, dcc, DCC) \
>   case dcc: val = DCC; break;
> 
> Anyway:
> 
> $ size drivers/staging/pi433/rf69.o*
>text  data bss dec hex 
> filename
>   35820  5600   0   41420a1cc 
> drivers/staging/pi433/rf69.o.new
>   36968  5600   0   42568a648 
> drivers/staging/pi433/rf69.o.old
> ---
> diff --git a/drivers/staging/pi433/rf69.c b/drivers/staging/pi433/rf69.c
> index e69a2153c999..9e40f162ac77 100644
> --- a/drivers/staging/pi433/rf69.c
> +++ b/drivers/staging/pi433/rf69.c
> @@ -423,19 +423,23 @@ enum lnaGain rf69_get_lna_gain(struct spi_device *spi)
>  
>  int rf69_set_dc_cut_off_frequency_intern(struct spi_device *spi, u8 reg, 
> enum dccPercent dccPercent)
>  {
> + int val;
> +
>   switch (dccPercent) {
> - case dcc16Percent:  return WRITE_REG(reg, ((READ_REG(reg) & 
> ~MASK_BW_DCC_FREQ) | BW_DCC_16_PERCENT));
> - case dcc8Percent:   return WRITE_REG(reg, ((READ_REG(reg) & 
> ~MASK_BW_DCC_FREQ) | BW_DCC_8_PERCENT));
> - case dcc4Percent:   return WRITE_REG(reg, ((READ_REG(reg) & 
> ~MASK_BW_DCC_FREQ) | BW_DCC_4_PERCENT));
> - case dcc2Percent:   return WRITE_REG(reg, ((READ_REG(reg) & 
> ~MASK_BW_DCC_FREQ) | BW_DCC_2_PERCENT));
> - case dcc1Percent:   return WRITE_REG(reg, ((READ_REG(reg) & 
> ~MASK_BW_DCC_FREQ) | BW_DCC_1_PERCENT));
> - case dcc0_5Percent: return WRITE_REG(reg, ((READ_REG(reg) & 
> ~MASK_BW_DCC_FREQ) | BW_DCC_0_5_PERCENT));
> - case dcc0_25Percent:return WRITE_REG(reg, ((READ_REG(reg) & 
> ~MASK_BW_DCC_FREQ) | BW_DCC_0_25_PERCENT));
> - case dcc0_125Percent:   return WRITE_REG(reg, ((READ_REG(reg) & 
> ~MASK_BW_DCC_FREQ) | BW_DCC_0_125_PERCENT));
> + case dcc16Percent:  val = BW_DCC_16_PERCENT; break;
> + case dcc8Percent:   val = BW_DCC_8_PERCENT; break;
> + case dcc4Percent:   val = BW_DCC_4_PERCENT; break;
> + case dcc2Percent:   val = BW_DCC_2_PERCENT; break;
> + case dcc1Percent:   val = BW_DCC_1_PERCENT; break;
> + case dcc0_5Percent: val = BW_DCC_0_5_PERCENT; break;
> + case dcc0_25Percent:val = BW_DCC_0_25_PERCENT; break;

Re: staging: pi433: Possible bug in rf69.c

2017-11-30 Thread Marcin Ciupak
On Sat, Nov 11, 2017 at 01:51:10PM +0200, Marcus Wolf wrote:
Hi Marcus,

since 4.15-rc1 is out I would like to ask if you are going to provide
your changes anytime soon?

I would like to send a few patches as well and do not want to block your
work.

Thanks,
Marcin

> Hi Greg,
> 
> ok.
> 
> I'll postpone all my work until then. Give me a hook, when I can start :-)
> 
> Thanks,
> 
> Marcus
> 
> 
> Am 11.11.2017 um 13:49 schrieb Greg Kroah-Hartman:
> > On Sat, Nov 11, 2017 at 01:42:27PM +0200, Marcus Wolf wrote:
> >> Hi Greg,
> >>
> >> that's fine.
> >>
> >> Is this the right URL:
> >>   git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git
> > 
> > Yes.
> > 
> >> Is there already an aprox. date, when 4.15rc1 will be out and
> >> backintegration will be done?
> > 
> > Should be 2 weeks from now.
> > 
> > thanks,
> > 
> > greg k-h
> > 
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 0/2] staging: pi433: fix logging and naming issues

2017-11-20 Thread Marcin Ciupak
These patches fix messages logging and device naming issues when probing
for new radio module.

Those two changes are send as one patchset since both modify the same
part of code (second patch depends on first one)


Marcin Ciupak (2):
  staging: pi433: fix (NULL device *) in log message
  staging: pi433: fix naming when more than one radio is used

 drivers/staging/pi433/pi433_if.c | 30 --
 1 file changed, 16 insertions(+), 14 deletions(-)

-- 
2.15.0

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 2/2] staging: pi433: fix naming when more than one radio is used

2017-11-20 Thread Marcin Ciupak
When using more than one hardware radio module pi433_probe fails as the
same name is used for all modules. Create unique name by adding minor
number to the device name.

Signed-off-by: Marcin Ciupak <marcin.s.ciu...@gmail.com>
---
 drivers/staging/pi433/pi433_if.c | 6 --
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/staging/pi433/pi433_if.c b/drivers/staging/pi433/pi433_if.c
index bc17676169cb..7a3e3101c483 100644
--- a/drivers/staging/pi433/pi433_if.c
+++ b/drivers/staging/pi433/pi433_if.c
@@ -1172,7 +1172,8 @@ static int pi433_probe(struct spi_device *spi)
>dev,
device->devt,
device,
-   "pi433");
+   "pi433.%d",
+   device->minor);
if (IS_ERR(device->dev)) {
pr_err("pi433: device register failed\n");
retval = PTR_ERR(device->dev);
@@ -1188,7 +1189,8 @@ static int pi433_probe(struct spi_device *spi)
/* start tx thread */
device->tx_task_struct = kthread_run(pi433_tx_thread,
 device,
-"pi433_tx_task");
+"pi433.%d_tx_task",
+device->minor);
if (IS_ERR(device->tx_task_struct)) {
dev_dbg(device->dev, "start of send thread failed");
goto send_thread_failed;
-- 
2.15.0

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 1/2] staging: pi433: fix (NULL device *) in log message

2017-11-20 Thread Marcin Ciupak
(NULL device *) is printed in log message in pi433_probe and
pi433_get_minor functions due to device->dev being used prior to call to
device_create function.

Signed-off-by: Marcin Ciupak <marcin.s.ciu...@gmail.com>
---
 drivers/staging/pi433/pi433_if.c | 26 +-
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/drivers/staging/pi433/pi433_if.c b/drivers/staging/pi433/pi433_if.c
index d946838450d4..bc17676169cb 100644
--- a/drivers/staging/pi433/pi433_if.c
+++ b/drivers/staging/pi433/pi433_if.c
@@ -1051,7 +1051,7 @@ static int pi433_get_minor(struct pi433_device *device)
device->minor = retval;
retval = 0;
} else if (retval == -ENOSPC) {
-   dev_err(device->dev, "too many pi433 devices\n");
+   dev_err(>spi->dev, "too many pi433 devices\n");
retval = -EINVAL;
}
mutex_unlock(_lock);
@@ -1159,19 +1159,10 @@ static int pi433_probe(struct spi_device *spi)
SET_CHECKED(rf69_set_output_power_level (spi, 13));
SET_CHECKED(rf69_set_antenna_impedance  (spi, fiftyOhm));
 
-   /* start tx thread */
-   device->tx_task_struct = kthread_run(pi433_tx_thread,
-device,
-"pi433_tx_task");
-   if (IS_ERR(device->tx_task_struct)) {
-   dev_dbg(device->dev, "start of send thread failed");
-   goto send_thread_failed;
-   }
-
/* determ minor number */
retval = pi433_get_minor(device);
if (retval) {
-   dev_dbg(device->dev, "get of minor number failed");
+   dev_dbg(>dev, "get of minor number failed");
goto minor_failed;
}
 
@@ -1194,6 +1185,15 @@ static int pi433_probe(struct spi_device *spi)
device->minor);
}
 
+   /* start tx thread */
+   device->tx_task_struct = kthread_run(pi433_tx_thread,
+device,
+"pi433_tx_task");
+   if (IS_ERR(device->tx_task_struct)) {
+   dev_dbg(device->dev, "start of send thread failed");
+   goto send_thread_failed;
+   }
+
/* create cdev */
device->cdev = cdev_alloc();
device->cdev->owner = THIS_MODULE;
@@ -1210,12 +1210,12 @@ static int pi433_probe(struct spi_device *spi)
return 0;
 
 cdev_failed:
+   kthread_stop(device->tx_task_struct);
+send_thread_failed:
device_destroy(pi433_class, device->devt);
 device_create_failed:
pi433_free_minor(device);
 minor_failed:
-   kthread_stop(device->tx_task_struct);
-send_thread_failed:
free_GPIOs(device);
 GPIO_failed:
kfree(device);
-- 
2.15.0

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 5/5] staging: pi433: rf69.c style fix - space before asterisk

2017-10-11 Thread Marcin Ciupak
This patch fixes the following checkpatch.pl error:

ERROR: "(foo*)" should be "(foo *)"

in rf69.c file as requested by TODO file.

Additionally some style warnings remain valid here and could be fixed by
another patch.

Signed-off-by: Marcin Ciupak <marcin.s.ciu...@gmail.com>
---
 drivers/staging/pi433/rf69.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/staging/pi433/rf69.c b/drivers/staging/pi433/rf69.c
index 6420d1b67ccc..e69a2153c999 100644
--- a/drivers/staging/pi433/rf69.c
+++ b/drivers/staging/pi433/rf69.c
@@ -919,7 +919,7 @@ int rf69_set_fifo_threshold(struct spi_device *spi, u8 
threshold)
return retval;
 
// access the fifo to activate new threshold
-   return rf69_read_fifo (spi, (u8*) , 1); // retval used as buffer
+   return rf69_read_fifo(spi, (u8 *), 1); // retval used as buffer
 }
 
 int rf69_set_dagc(struct spi_device *spi, enum dagc dagc)
-- 
2.14.2

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 4/5] staging: pi433: rf69.c style fix - code indent should use tabs

2017-10-11 Thread Marcin Ciupak
This patch fixes the following checkpatch.pl error:

ERROR: code indent should use tabs where possible

in rf69.c file as requested by TODO file.

Additionally some style warnings remain valid here and could be fixed by
another patch.

Signed-off-by: Marcin Ciupak <marcin.s.ciu...@gmail.com>
---
 drivers/staging/pi433/rf69.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/staging/pi433/rf69.c b/drivers/staging/pi433/rf69.c
index 23d609474836..6420d1b67ccc 100644
--- a/drivers/staging/pi433/rf69.c
+++ b/drivers/staging/pi433/rf69.c
@@ -959,8 +959,8 @@ int rf69_read_fifo (struct spi_device *spi, u8 *buffer, 
unsigned int size)
/* prepare a bidirectional transfer */
local_buffer[0] = REG_FIFO;
memset(, 0, sizeof(transfer));
-   transfer.tx_buf = local_buffer;
-   transfer.rx_buf = local_buffer;
+   transfer.tx_buf = local_buffer;
+   transfer.rx_buf = local_buffer;
transfer.len= size+1;
 
retval = spi_sync_transfer(spi, , 1);
-- 
2.14.2

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 3/5] staging: pi433: rf69.c style fix - spaces before/after

2017-10-11 Thread Marcin Ciupak
his patch fixes the following checkpatch.pl errors:

ERROR: space prohibited after that open parenthesis '('
ERROR: space prohibited before that ',' (ctx:WxV)
ERROR: space prohibited before that close parenthesis ')'
ERROR: space required after that ',' (ctx:VxV)
ERROR: space required before the open parenthesis '('

in rf69.c file as requested by TODO file.

Additionally some style warnings remain valid here and could be fixed by
another patch.

Signed-off-by: Marcin Ciupak <marcin.s.ciu...@gmail.com>
---
 drivers/staging/pi433/rf69.c | 154 +--
 1 file changed, 77 insertions(+), 77 deletions(-)

diff --git a/drivers/staging/pi433/rf69.c b/drivers/staging/pi433/rf69.c
index 7a79973641c9..23d609474836 100644
--- a/drivers/staging/pi433/rf69.c
+++ b/drivers/staging/pi433/rf69.c
@@ -34,7 +34,7 @@
 /*-*/
 
 #define READ_REG(x)rf69_read_reg (spi, x)
-#define WRITE_REG(x,y) rf69_write_reg(spi, x, y)
+#define WRITE_REG(x, y)rf69_write_reg(spi, x, y)
 
 /*-*/
 
@@ -199,7 +199,7 @@ int rf69_set_deviation(struct spi_device *spi, u32 
deviation)
 
// calculate register settings
f_reg = deviation * factor;
-   do_div(f_reg  , f_step);
+   do_div(f_reg, f_step);
 
msb = (f_reg&0xff00)   >>  8;
lsb = (f_reg&0xff);
@@ -250,7 +250,7 @@ int rf69_set_frequency(struct spi_device *spi, u32 
frequency)
 
// calculate reg settings
f_reg = frequency * factor;
-   do_div(f_reg  , f_step);
+   do_div(f_reg, f_step);
 
msb = (f_reg&0xff) >> 16;
mid = (f_reg&0xff00)   >>  8;
@@ -278,9 +278,9 @@ int rf69_set_amplifier_0(struct spi_device *spi, enum 
optionOnOff optionOnOff)
dev_dbg(>dev, "set: amp #0");
#endif
 
-   switch(optionOnOff) {
-   case optionOn:  return WRITE_REG(REG_PALEVEL, (READ_REG(REG_PALEVEL) |  
MASK_PALEVEL_PA0) );
-   case optionOff: return WRITE_REG(REG_PALEVEL, (READ_REG(REG_PALEVEL) & 
~MASK_PALEVEL_PA0) );
+   switch (optionOnOff) {
+   case optionOn:  return WRITE_REG(REG_PALEVEL, (READ_REG(REG_PALEVEL) |  
MASK_PALEVEL_PA0));
+   case optionOff: return WRITE_REG(REG_PALEVEL, (READ_REG(REG_PALEVEL) & 
~MASK_PALEVEL_PA0));
default:
dev_dbg(>dev, "set: illegal input param");
return -EINVAL;
@@ -293,9 +293,9 @@ int rf69_set_amplifier_1(struct spi_device *spi, enum 
optionOnOff optionOnOff)
dev_dbg(>dev, "set: amp #1");
#endif
 
-   switch(optionOnOff) {
-   case optionOn:  return WRITE_REG(REG_PALEVEL, (READ_REG(REG_PALEVEL) |  
MASK_PALEVEL_PA1) );
-   case optionOff: return WRITE_REG(REG_PALEVEL, (READ_REG(REG_PALEVEL) & 
~MASK_PALEVEL_PA1) );
+   switch (optionOnOff) {
+   case optionOn:  return WRITE_REG(REG_PALEVEL, (READ_REG(REG_PALEVEL) |  
MASK_PALEVEL_PA1));
+   case optionOff: return WRITE_REG(REG_PALEVEL, (READ_REG(REG_PALEVEL) & 
~MASK_PALEVEL_PA1));
default:
dev_dbg(>dev, "set: illegal input param");
return -EINVAL;
@@ -308,9 +308,9 @@ int rf69_set_amplifier_2(struct spi_device *spi, enum 
optionOnOff optionOnOff)
dev_dbg(>dev, "set: amp #2");
#endif
 
-   switch(optionOnOff) {
-   case optionOn:  return WRITE_REG(REG_PALEVEL, (READ_REG(REG_PALEVEL) |  
MASK_PALEVEL_PA2) );
-   case optionOff: return WRITE_REG(REG_PALEVEL, (READ_REG(REG_PALEVEL) & 
~MASK_PALEVEL_PA2) );
+   switch (optionOnOff) {
+   case optionOn:  return WRITE_REG(REG_PALEVEL, (READ_REG(REG_PALEVEL) |  
MASK_PALEVEL_PA2));
+   case optionOff: return WRITE_REG(REG_PALEVEL, (READ_REG(REG_PALEVEL) & 
~MASK_PALEVEL_PA2));
default:
dev_dbg(>dev, "set: illegal input param");
return -EINVAL;
@@ -341,7 +341,7 @@ int rf69_set_pa_ramp(struct spi_device *spi, enum paRamp 
paRamp)
dev_dbg(>dev, "set: pa ramp");
#endif
 
-   switch(paRamp) {
+   switch (paRamp) {
case ramp3400:  return WRITE_REG(REG_PARAMP, PARAMP_3400);
case ramp2000:  return WRITE_REG(REG_PARAMP, PARAMP_2000);
case ramp1000:  return WRITE_REG(REG_PARAMP, PARAMP_1000);
@@ -370,9 +370,9 @@ int rf69_set_antenna_impedance(struct spi_device *spi, enum 
antennaImpedance ant
dev_dbg(>dev, "set: antenna impedance");
#endif
 
-   switch(antennaImpedance) {
-   case fiftyOhm:  return WRITE_REG(REG_LNA, (READ_REG(REG_LNA) & 
~MASK_LNA_ZIN) );
-   case twohundretOhm: return WRITE_REG(REG_LNA, (READ_REG(REG_LNA) |  
MASK_LNA_ZIN) );
+   switch (antennaImpedance) {
+   ca

[PATCH 2/5] staging: pi433: rf69.c style fix - spaces required around

2017-10-11 Thread Marcin Ciupak
This patch fixes the following checkpatch.pl errors:

ERROR: spaces required around that '+=' (ctx:WxV)
ERROR: spaces required around that '=' (ctx:VxV)
ERROR: spaces required around that '<' (ctx:VxV)

in rf69.c file as requested by TODO file.

Additionally some style warnings remain valid here and could be fixed by
another patch.

Signed-off-by: Marcin Ciupak <marcin.s.ciu...@gmail.com>
---
 drivers/staging/pi433/rf69.c | 26 --
 1 file changed, 16 insertions(+), 10 deletions(-)

diff --git a/drivers/staging/pi433/rf69.c b/drivers/staging/pi433/rf69.c
index 3d9cf2cac4ef..7a79973641c9 100644
--- a/drivers/staging/pi433/rf69.c
+++ b/drivers/staging/pi433/rf69.c
@@ -323,7 +323,7 @@ int rf69_set_output_power_level(struct spi_device *spi, u8 
powerLevel)
dev_dbg(>dev, "set: power level");
#endif
 
-   powerLevel +=18; // TODO Abh�ngigkeit von PA0,1,2 setting
+   powerLevel += 18; // TODO Abh�ngigkeit von PA0,1,2 setting
 
// check input value
if (powerLevel > 0x1f) {
@@ -589,24 +589,30 @@ int rf69_set_dio_mapping(struct spi_device *spi, u8 
DIONumber, u8 value)
 
switch (DIONumber) {
case 0:
-   mask=MASK_DIO0; shift=SHIFT_DIO0; regaddr=REG_DIOMAPPING1; 
break;
+   mask = MASK_DIO0; shift = SHIFT_DIO0; regaddr = REG_DIOMAPPING1;
+   break;
case 1:
-   mask=MASK_DIO1; shift=SHIFT_DIO1; regaddr=REG_DIOMAPPING1; 
break;
+   mask = MASK_DIO1; shift = SHIFT_DIO1; regaddr = REG_DIOMAPPING1;
+   break;
case 2:
-   mask=MASK_DIO2; shift=SHIFT_DIO2; regaddr=REG_DIOMAPPING1; 
break;
+   mask = MASK_DIO2; shift = SHIFT_DIO2; regaddr = REG_DIOMAPPING1;
+   break;
case 3:
-   mask=MASK_DIO3; shift=SHIFT_DIO3; regaddr=REG_DIOMAPPING1; 
break;
+   mask = MASK_DIO3; shift = SHIFT_DIO3; regaddr = REG_DIOMAPPING1;
+   break;
case 4:
-   mask=MASK_DIO4; shift=SHIFT_DIO4; regaddr=REG_DIOMAPPING2; 
break;
+   mask = MASK_DIO4; shift = SHIFT_DIO4; regaddr = REG_DIOMAPPING2;
+   break;
case 5:
-   mask=MASK_DIO5; shift=SHIFT_DIO5; regaddr=REG_DIOMAPPING2; 
break;
+   mask = MASK_DIO5; shift = SHIFT_DIO5; regaddr = REG_DIOMAPPING2;
+   break;
default:
dev_dbg(>dev, "set: illegal input param");
return -EINVAL;
}
 
// read reg
-   regValue=READ_REG(regaddr);
+   regValue = READ_REG(regaddr);
// delete old value
regValue = regValue & ~mask;
// add new value
@@ -960,7 +966,7 @@ int rf69_read_fifo (struct spi_device *spi, u8 *buffer, 
unsigned int size)
retval = spi_sync_transfer(spi, , 1);
 
#ifdef DEBUG_FIFO_ACCESS
-   for (i=0; i<size; i++)
+   for (i = 0; i < size; i++)
dev_dbg(>dev, "%d - 0x%x\n", i, local_buffer[i+1]);
#endif
 
@@ -988,7 +994,7 @@ int rf69_write_fifo(struct spi_device *spi, u8 *buffer, 
unsigned int size)
memcpy(_buffer[1], buffer, size);  // TODO: ohne memcopy w�re 
sch�ner
 
#ifdef DEBUG_FIFO_ACCESS
-   for (i=0; i<size; i++)
+   for (i = 0; i < size; i++)
dev_dbg(>dev, "0x%x\n",buffer[i]);
#endif
 
-- 
2.14.2

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 1/5] staging: pi433: rf69.c style fix - trailing statements

2017-10-11 Thread Marcin Ciupak
This patch fixes the following checkpatch.pl error:

ERROR: trailing statements should be on next line

in rf69.c file as requested by TODO file.

Note:
ERROR: spaces required around that '=' (ctx:VxV)
remains valid here and is going to be fixed by the next patch in set.

Additionally some style warnings remain valid here and could be fixed by
another patch.

Signed-off-by: Marcin Ciupak <marcin.s.ciu...@gmail.com>
---
 drivers/staging/pi433/rf69.c | 58 +++-
 1 file changed, 41 insertions(+), 17 deletions(-)

diff --git a/drivers/staging/pi433/rf69.c b/drivers/staging/pi433/rf69.c
index 0305edc16861..3d9cf2cac4ef 100644
--- a/drivers/staging/pi433/rf69.c
+++ b/drivers/staging/pi433/rf69.c
@@ -164,9 +164,12 @@ int rf69_set_bit_rate(struct spi_device *spi, u16 bitRate)
 
// transmit to RF 69
retval = WRITE_REG(REG_BITRATE_MSB, msb);
-   if (retval)  return retval;
+   if (retval)
+   return retval;
+
retval = WRITE_REG(REG_BITRATE_LSB, lsb);
-   if (retval)  return retval;
+   if (retval)
+   return retval;
 
return 0;
 }
@@ -209,9 +212,12 @@ int rf69_set_deviation(struct spi_device *spi, u32 
deviation)
 
// write to chip
retval = WRITE_REG(REG_FDEV_MSB, msb);
-   if (retval)  return retval;
+   if (retval)
+   return retval;
+
retval = WRITE_REG(REG_FDEV_LSB, lsb);
-   if (retval)  return retval;
+   if (retval)
+   return retval;
 
return 0;
 }
@@ -252,11 +258,16 @@ int rf69_set_frequency(struct spi_device *spi, u32 
frequency)
 
// write to chip
retval = WRITE_REG(REG_FRF_MSB, msb);
-   if (retval)  return retval;
+   if (retval)
+   return retval;
+
retval = WRITE_REG(REG_FRF_MID, mid);
-   if (retval)  return retval;
+   if (retval)
+   return retval;
+
retval = WRITE_REG(REG_FRF_LSB, lsb);
-   if (retval)  return retval;
+   if (retval)
+   return retval;
 
return 0;
 }
@@ -471,9 +482,15 @@ static int rf69_set_bandwidth_intern(struct spi_device 
*spi, u8 reg,
 
// add new mantisse
switch(mantisse) {
-   case mantisse16: newValue = newValue | BW_MANT_16;  break;
-   case mantisse20: newValue = newValue | BW_MANT_20;  break;
-   case mantisse24: newValue = newValue | BW_MANT_24;  break;
+   case mantisse16:
+   newValue = newValue | BW_MANT_16;
+   break;
+   case mantisse20:
+   newValue = newValue | BW_MANT_20;
+   break;
+   case mantisse24:
+   newValue = newValue | BW_MANT_24;
+   break;
}
 
// add new exponent
@@ -571,12 +588,18 @@ int rf69_set_dio_mapping(struct spi_device *spi, u8 
DIONumber, u8 value)
#endif
 
switch (DIONumber) {
-   case 0: mask=MASK_DIO0; shift=SHIFT_DIO0; regaddr=REG_DIOMAPPING1; 
break;
-   case 1: mask=MASK_DIO1; shift=SHIFT_DIO1; regaddr=REG_DIOMAPPING1; 
break;
-   case 2: mask=MASK_DIO2; shift=SHIFT_DIO2; regaddr=REG_DIOMAPPING1; 
break;
-   case 3: mask=MASK_DIO3; shift=SHIFT_DIO3; regaddr=REG_DIOMAPPING1; 
break;
-   case 4: mask=MASK_DIO4; shift=SHIFT_DIO4; regaddr=REG_DIOMAPPING2; 
break;
-   case 5: mask=MASK_DIO5; shift=SHIFT_DIO5; regaddr=REG_DIOMAPPING2; 
break;
+   case 0:
+   mask=MASK_DIO0; shift=SHIFT_DIO0; regaddr=REG_DIOMAPPING1; 
break;
+   case 1:
+   mask=MASK_DIO1; shift=SHIFT_DIO1; regaddr=REG_DIOMAPPING1; 
break;
+   case 2:
+   mask=MASK_DIO2; shift=SHIFT_DIO2; regaddr=REG_DIOMAPPING1; 
break;
+   case 3:
+   mask=MASK_DIO3; shift=SHIFT_DIO3; regaddr=REG_DIOMAPPING1; 
break;
+   case 4:
+   mask=MASK_DIO4; shift=SHIFT_DIO4; regaddr=REG_DIOMAPPING2; 
break;
+   case 5:
+   mask=MASK_DIO5; shift=SHIFT_DIO5; regaddr=REG_DIOMAPPING2; 
break;
default:
dev_dbg(>dev, "set: illegal input param");
return -EINVAL;
@@ -686,7 +709,8 @@ int rf69_set_preamble_length(struct spi_device *spi, u16 
preambleLength)
 
/* transmit to chip */
retval = WRITE_REG(REG_PREAMBLE_MSB, msb);
-   if (retval) return retval;
+   if (retval)
+   return retval;
return WRITE_REG(REG_PREAMBLE_LSB, lsb);
 }
 
-- 
2.14.2

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 0/5] staging: pi433: rf69.c coding style errors cleanup

2017-10-11 Thread Marcin Ciupak
This set of patches is intended to fix coding style errors in rf69.c file
in order to comply with kernel coding style guide as requested by TODO
file.

The following errors were fixed:
ERROR: trailing statements should be on next line
ERROR: spaces required around that '+=' (ctx:WxV)
ERROR: spaces required around that '=' (ctx:VxV)
ERROR: spaces required around that '<' (ctx:VxV)
ERROR: space prohibited after that open parenthesis '('
ERROR: space prohibited before that ',' (ctx:WxV)
ERROR: space prohibited before that close parenthesis ')'
ERROR: space required after that ',' (ctx:VxV)
ERROR: space required before the open parenthesis '('
ERROR: code indent should use tabs where possible
ERROR: "(foo*)" should be "(foo *)"

Marcin Ciupak (5):
  staging: pi433: rf69.c style fix - trailing statements
  staging: pi433: rf69.c style fix - spaces required around
  staging: pi433: rf69.c style fix - spaces before/after
  staging: pi433: rf69.c style fix - code indent should use tabs
  staging: pi433: rf69.c style fix - space before asterisk

 drivers/staging/pi433/rf69.c | 232 ---
 1 file changed, 131 insertions(+), 101 deletions(-)

-- 
2.14.2

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH v2] staging: pi433: replace INVALID_PARAM macro with inline code

2017-08-17 Thread Marcin Ciupak
The following macro:
\#define INVALID_PARAM
{ \
dev_dbg(>dev, "set: illegal input param"); \
return -EINVAL; \
}
affects control flow by having return statement. This is against
Linux Kernel Coding Style and should be avoided and therefore
this macro is replaced by inline code.

Additionally following 3 minor issues:

ERROR: code indent should use tabs where possible
ERROR: spaces required around that '!=' (ctx:VxV)
ERROR: space prohibited before that close parenthesis ')'

were fiexed inline.

Signed-off-by: Marcin Ciupak <marcin.s.ciu...@gmail.com>
---
Changes in v2:
 - corrected typo in patch subject

drivers/staging/pi433/rf69.c | 149 ++-
 1 file changed, 104 insertions(+), 45 deletions(-)

diff --git a/drivers/staging/pi433/rf69.c b/drivers/staging/pi433/rf69.c
index 85cd70d403ba..e48ff805c672 100644
--- a/drivers/staging/pi433/rf69.c
+++ b/drivers/staging/pi433/rf69.c
@@ -35,11 +35,6 @@
 
 #define READ_REG(x)rf69_read_reg (spi, x)
 #define WRITE_REG(x,y) rf69_write_reg(spi, x, y)
-#define INVALID_PARAM \
-   { \
-   dev_dbg(>dev, "set: illegal input param"); \
-   return -EINVAL; \
-   }
 
 /*-*/
 
@@ -55,7 +50,9 @@ int rf69_set_mode(struct spi_device *spi, enum mode mode)
case synthesizer: return WRITE_REG(REG_OPMODE, (READ_REG(REG_OPMODE) & 
~MASK_OPMODE_MODE) | OPMODE_MODE_SYNTHESIZER);
case standby: return WRITE_REG(REG_OPMODE, (READ_REG(REG_OPMODE) & 
~MASK_OPMODE_MODE) | OPMODE_MODE_STANDBY);
case mode_sleep:  return WRITE_REG(REG_OPMODE, (READ_REG(REG_OPMODE) & 
~MASK_OPMODE_MODE) | OPMODE_MODE_SLEEP);
-   default:  INVALID_PARAM;
+   default:
+   dev_dbg(>dev, "set: illegal input param");
+   return -EINVAL;
}
 
// we are using packet mode, so this check is not really needed
@@ -74,7 +71,9 @@ int rf69_set_data_mode(struct spi_device *spi, enum dataMode 
dataMode)
case packet:return WRITE_REG(REG_DATAMODUL, 
(READ_REG(REG_DATAMODUL) & ~MASK_DATAMODUL_MODE) | DATAMODUL_MODE_PACKET);
case continuous:return WRITE_REG(REG_DATAMODUL, 
(READ_REG(REG_DATAMODUL) & ~MASK_DATAMODUL_MODE) | DATAMODUL_MODE_CONTINUOUS);
case continuousNoSync:  return WRITE_REG(REG_DATAMODUL, 
(READ_REG(REG_DATAMODUL) & ~MASK_DATAMODUL_MODE) | 
DATAMODUL_MODE_CONTINUOUS_NOSYNC);
-   default:INVALID_PARAM;
+   default:
+   dev_dbg(>dev, "set: illegal input param");
+   return -EINVAL;
}
 }
 
@@ -87,7 +86,9 @@ int rf69_set_modulation(struct spi_device *spi, enum 
modulation modulation)
switch (modulation) {
case OOK:   return WRITE_REG(REG_DATAMODUL, (READ_REG(REG_DATAMODUL) & 
~MASK_DATAMODUL_MODULATION_TYPE) | DATAMODUL_MODULATION_TYPE_OOK);
case FSK:   return WRITE_REG(REG_DATAMODUL, (READ_REG(REG_DATAMODUL) & 
~MASK_DATAMODUL_MODULATION_TYPE) | DATAMODUL_MODULATION_TYPE_FSK);
-   default:INVALID_PARAM;
+   default:
+   dev_dbg(>dev, "set: illegal input param");
+   return -EINVAL;
}
 }
 
@@ -120,14 +121,18 @@ int rf69_set_modulation_shaping(struct spi_device *spi, 
enum modShaping modShapi
case shaping1_0: return WRITE_REG(REG_DATAMODUL, 
(READ_REG(REG_DATAMODUL) & ~MASK_DATAMODUL_MODULATION_SHAPE) | 
DATAMODUL_MODULATION_SHAPE_1_0);
case shaping0_5: return WRITE_REG(REG_DATAMODUL, 
(READ_REG(REG_DATAMODUL) & ~MASK_DATAMODUL_MODULATION_SHAPE) | 
DATAMODUL_MODULATION_SHAPE_0_3);
case shaping0_3: return WRITE_REG(REG_DATAMODUL, 
(READ_REG(REG_DATAMODUL) & ~MASK_DATAMODUL_MODULATION_SHAPE) | 
DATAMODUL_MODULATION_SHAPE_0_5);
-   default: INVALID_PARAM;
+   default:
+   dev_dbg(>dev, "set: illegal input param");
+   return -EINVAL;
}
} else {
switch (modShaping) {
case shapingOff: return WRITE_REG(REG_DATAMODUL, 
(READ_REG(REG_DATAMODUL) & ~MASK_DATAMODUL_MODULATION_SHAPE) | 
DATAMODUL_MODULATION_SHAPE_NONE);
case shapingBR:  return WRITE_REG(REG_DATAMODUL, 
(READ_REG(REG_DATAMODUL) & ~MASK_DATAMODUL_MODULATION_SHAPE) | 
DATAMODUL_MODULATION_SHAPE_BR);
case shaping2BR: return WRITE_REG(REG_DATAMODUL, 
(READ_REG(REG_DATAMODUL) & ~MASK_DATAMODUL_MODULATION_SHAPE) | 
DATAMODUL_MODULATION_SHAPE_2BR);
-   default: INVALID_PARAM;
+   default:
+   dev_dbg(>dev, "set: illegal input param");
+   return -EINVAL;
}
}
 }
@@ -148,7 +153,7 

Re: [PATCH] staginig: pi433: replace INVALID_PARAM macro with inline code

2017-08-17 Thread Marcin Ciupak
There is a typo in patch subject. Please drop this patch. I will send v2
with corrected subject.

Thanks,
Marcin
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH] staginig: pi433: replace INVALID_PARAM macro with inline code

2017-08-17 Thread Marcin Ciupak
The following macro:
\#define INVALID_PARAM
{ \
dev_dbg(>dev, "set: illegal input param"); \
return -EINVAL; \
}
affects control flow by having return statement. This is against
Linux Kernel Coding Style and should be avoided and therefore
this macro is replaced by inline code.

Additionally following 3 minor issues:

ERROR: code indent should use tabs where possible
ERROR: spaces required around that '!=' (ctx:VxV)
ERROR: space prohibited before that close parenthesis ')'

were fiexed inline.

Signed-off-by: Marcin Ciupak <marcin.s.ciu...@gmail.com>
---
 drivers/staging/pi433/rf69.c | 149 ++-
 1 file changed, 104 insertions(+), 45 deletions(-)

diff --git a/drivers/staging/pi433/rf69.c b/drivers/staging/pi433/rf69.c
index 85cd70d403ba..e48ff805c672 100644
--- a/drivers/staging/pi433/rf69.c
+++ b/drivers/staging/pi433/rf69.c
@@ -35,11 +35,6 @@
 
 #define READ_REG(x)rf69_read_reg (spi, x)
 #define WRITE_REG(x,y) rf69_write_reg(spi, x, y)
-#define INVALID_PARAM \
-   { \
-   dev_dbg(>dev, "set: illegal input param"); \
-   return -EINVAL; \
-   }
 
 /*-*/
 
@@ -55,7 +50,9 @@ int rf69_set_mode(struct spi_device *spi, enum mode mode)
case synthesizer: return WRITE_REG(REG_OPMODE, (READ_REG(REG_OPMODE) & 
~MASK_OPMODE_MODE) | OPMODE_MODE_SYNTHESIZER);
case standby: return WRITE_REG(REG_OPMODE, (READ_REG(REG_OPMODE) & 
~MASK_OPMODE_MODE) | OPMODE_MODE_STANDBY);
case mode_sleep:  return WRITE_REG(REG_OPMODE, (READ_REG(REG_OPMODE) & 
~MASK_OPMODE_MODE) | OPMODE_MODE_SLEEP);
-   default:  INVALID_PARAM;
+   default:
+   dev_dbg(>dev, "set: illegal input param");
+   return -EINVAL;
}
 
// we are using packet mode, so this check is not really needed
@@ -74,7 +71,9 @@ int rf69_set_data_mode(struct spi_device *spi, enum dataMode 
dataMode)
case packet:return WRITE_REG(REG_DATAMODUL, 
(READ_REG(REG_DATAMODUL) & ~MASK_DATAMODUL_MODE) | DATAMODUL_MODE_PACKET);
case continuous:return WRITE_REG(REG_DATAMODUL, 
(READ_REG(REG_DATAMODUL) & ~MASK_DATAMODUL_MODE) | DATAMODUL_MODE_CONTINUOUS);
case continuousNoSync:  return WRITE_REG(REG_DATAMODUL, 
(READ_REG(REG_DATAMODUL) & ~MASK_DATAMODUL_MODE) | 
DATAMODUL_MODE_CONTINUOUS_NOSYNC);
-   default:INVALID_PARAM;
+   default:
+   dev_dbg(>dev, "set: illegal input param");
+   return -EINVAL;
}
 }
 
@@ -87,7 +86,9 @@ int rf69_set_modulation(struct spi_device *spi, enum 
modulation modulation)
switch (modulation) {
case OOK:   return WRITE_REG(REG_DATAMODUL, (READ_REG(REG_DATAMODUL) & 
~MASK_DATAMODUL_MODULATION_TYPE) | DATAMODUL_MODULATION_TYPE_OOK);
case FSK:   return WRITE_REG(REG_DATAMODUL, (READ_REG(REG_DATAMODUL) & 
~MASK_DATAMODUL_MODULATION_TYPE) | DATAMODUL_MODULATION_TYPE_FSK);
-   default:INVALID_PARAM;
+   default:
+   dev_dbg(>dev, "set: illegal input param");
+   return -EINVAL;
}
 }
 
@@ -120,14 +121,18 @@ int rf69_set_modulation_shaping(struct spi_device *spi, 
enum modShaping modShapi
case shaping1_0: return WRITE_REG(REG_DATAMODUL, 
(READ_REG(REG_DATAMODUL) & ~MASK_DATAMODUL_MODULATION_SHAPE) | 
DATAMODUL_MODULATION_SHAPE_1_0);
case shaping0_5: return WRITE_REG(REG_DATAMODUL, 
(READ_REG(REG_DATAMODUL) & ~MASK_DATAMODUL_MODULATION_SHAPE) | 
DATAMODUL_MODULATION_SHAPE_0_3);
case shaping0_3: return WRITE_REG(REG_DATAMODUL, 
(READ_REG(REG_DATAMODUL) & ~MASK_DATAMODUL_MODULATION_SHAPE) | 
DATAMODUL_MODULATION_SHAPE_0_5);
-   default: INVALID_PARAM;
+   default:
+   dev_dbg(>dev, "set: illegal input param");
+   return -EINVAL;
}
} else {
switch (modShaping) {
case shapingOff: return WRITE_REG(REG_DATAMODUL, 
(READ_REG(REG_DATAMODUL) & ~MASK_DATAMODUL_MODULATION_SHAPE) | 
DATAMODUL_MODULATION_SHAPE_NONE);
case shapingBR:  return WRITE_REG(REG_DATAMODUL, 
(READ_REG(REG_DATAMODUL) & ~MASK_DATAMODUL_MODULATION_SHAPE) | 
DATAMODUL_MODULATION_SHAPE_BR);
case shaping2BR: return WRITE_REG(REG_DATAMODUL, 
(READ_REG(REG_DATAMODUL) & ~MASK_DATAMODUL_MODULATION_SHAPE) | 
DATAMODUL_MODULATION_SHAPE_2BR);
-   default: INVALID_PARAM;
+   default:
+   dev_dbg(>dev, "set: illegal input param");
+   return -EINVAL;
}
}
 }
@@ -148,7 +153,7 @@ int rf69_set_bit_rate(struct spi_device *spi, u16 bitRate

[PATCH 3/3] staging: pi433: rf69.c style fix - spaces open brace

2017-08-10 Thread Marcin Ciupak
This patch fixes the following checkpatch.pl error:

ERROR: space required before the open brace '{'

in rf69.c file as requested by TODO file.

Signed-off-by: Marcin Ciupak <marcin.s.ciu...@gmail.com>
---
 drivers/staging/pi433/rf69.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/staging/pi433/rf69.c b/drivers/staging/pi433/rf69.c
index 746ef70babf7..3e37bd205229 100644
--- a/drivers/staging/pi433/rf69.c
+++ b/drivers/staging/pi433/rf69.c
@@ -49,7 +49,7 @@ int rf69_set_mode(struct spi_device *spi, enum mode mode)
dev_dbg(>dev, "set: mode");
#endif
 
-   switch (mode){
+   switch (mode) {
case transmit:return WRITE_REG(REG_OPMODE, (READ_REG(REG_OPMODE) & 
~MASK_OPMODE_MODE) | OPMODE_MODE_TRANSMIT);
case receive: return WRITE_REG(REG_OPMODE, (READ_REG(REG_OPMODE) & 
~MASK_OPMODE_MODE) | OPMODE_MODE_RECEIVE);
case synthesizer: return WRITE_REG(REG_OPMODE, (READ_REG(REG_OPMODE) & 
~MASK_OPMODE_MODE) | OPMODE_MODE_SYNTHESIZER);
-- 
2.13.0

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 1/3] staging: pi433: rf69.c style fix - that open brace

2017-08-10 Thread Marcin Ciupak
This patch fixes the following checkpatch.pl error:

ERROR: that open brace { should be on the previous line

in rf69.c file as requested by TODO file.

Note:
ERROR: else should follow close brace '}'
remains valid here and is going to be fixed by the next patch in set.

Additionally some style warnings remain valid here and could be fixed by
another patch.

Signed-off-by: Marcin Ciupak <marcin.s.ciu...@gmail.com>
---
 drivers/staging/pi433/rf69.c | 33 +++--
 1 file changed, 11 insertions(+), 22 deletions(-)

diff --git a/drivers/staging/pi433/rf69.c b/drivers/staging/pi433/rf69.c
index f83523e3395d..3afd217b79a7 100644
--- a/drivers/staging/pi433/rf69.c
+++ b/drivers/staging/pi433/rf69.c
@@ -101,8 +101,7 @@ enum modulation rf69_get_modulation(struct spi_device *spi)
 
currentValue = READ_REG(REG_DATAMODUL);
 
-   switch (currentValue & MASK_DATAMODUL_MODULATION_TYPE >> 3)  // TODO 
improvement: change 3 to define
-   {
+   switch (currentValue & MASK_DATAMODUL_MODULATION_TYPE >> 3) { // TODO 
improvement: change 3 to define
case DATAMODUL_MODULATION_TYPE_OOK: return OOK;
case DATAMODUL_MODULATION_TYPE_FSK: return FSK;
default:return undefined;
@@ -115,8 +114,7 @@ int rf69_set_modulation_shaping(struct spi_device *spi, 
enum modShaping modShapi
dev_dbg(>dev, "set: mod shaping");
#endif
 
-   if (rf69_get_modulation(spi) == FSK)
-   {
+   if (rf69_get_modulation(spi) == FSK) {
switch (modShaping) {
case shapingOff: return WRITE_REG(REG_DATAMODUL, 
(READ_REG(REG_DATAMODUL) & ~MASK_DATAMODUL_MODULATION_SHAPE) | 
DATAMODUL_MODULATION_SHAPE_NONE);
case shaping1_0: return WRITE_REG(REG_DATAMODUL, 
(READ_REG(REG_DATAMODUL) & ~MASK_DATAMODUL_MODULATION_SHAPE) | 
DATAMODUL_MODULATION_SHAPE_1_0);
@@ -125,8 +123,7 @@ int rf69_set_modulation_shaping(struct spi_device *spi, 
enum modShaping modShapi
default: INVALID_PARAM;
}
}
-   else
-   {
+   else {
switch (modShaping) {
case shapingOff: return WRITE_REG(REG_DATAMODUL, 
(READ_REG(REG_DATAMODUL) & ~MASK_DATAMODUL_MODULATION_SHAPE) | 
DATAMODUL_MODULATION_SHAPE_NONE);
case shapingBR:  return WRITE_REG(REG_DATAMODUL, 
(READ_REG(REG_DATAMODUL) & ~MASK_DATAMODUL_MODULATION_SHAPE) | 
DATAMODUL_MODULATION_SHAPE_BR);
@@ -150,8 +147,7 @@ int rf69_set_bit_rate(struct spi_device *spi, u16 bitRate)
 
// check input value
bitRate_min = F_OSC / 8388608; // 8388608 = 2^23;
-   if (bitRate < bitRate_min)
-   {
+   if (bitRate < bitRate_min) {
dev_dbg(>dev, "setBitRate: illegal input param");
INVALID_PARAM;
}
@@ -185,8 +181,7 @@ int rf69_set_deviation(struct spi_device *spi, u32 
deviation)
dev_dbg(>dev, "set: deviation");
#endif
 
-   if (deviation < 600 || deviation > 50) //TODO: Abh�ngigkeit von 
Bitrate beachten!!
-   {
+   if (deviation < 600 || deviation > 50) { //TODO: Abh�ngigkeit von 
Bitrate beachten!!
dev_dbg(>dev, "set_deviation: illegal input param");
INVALID_PARAM;
}
@@ -203,8 +198,7 @@ int rf69_set_deviation(struct spi_device *spi, u32 
deviation)
lsb = (f_reg&0xff);
 
// check msb
-   if (msb & !FDEVMASB_MASK)
-   {
+   if (msb & !FDEVMASB_MASK) {
dev_dbg(>dev, "set_deviation: err in calc of msb");
INVALID_PARAM;
}
@@ -239,8 +233,7 @@ int rf69_set_frequency(struct spi_device *spi, u32 
frequency)
 
// check input value
f_max = div_u64(f_step * 8388608, factor);
-   if (frequency > f_max)
-   {
+   if (frequency > f_max) {
dev_dbg(>dev, "setFrequency: illegal input param");
INVALID_PARAM;
}
@@ -387,8 +380,7 @@ enum lnaGain rf69_get_lna_gain(struct spi_device *spi)
 
currentValue = READ_REG(REG_LNA);
 
-   switch (currentValue & MASK_LNA_CURRENT_GAIN >> 3)  // improvement: 
change 3 to define
-   {
+   switch (currentValue & MASK_LNA_CURRENT_GAIN >> 3) { // improvement: 
change 3 to define
case LNA_GAIN_AUTO: return automatic;
case LNA_GAIN_MAX:  return max;
case LNA_GAIN_MAX_MINUS_6:  return maxMinus6;
@@ -488,8 +480,7 @@ int rf69_set_ook_threshold_type(struct spi_device *spi, 
enum thresholdType thres
dev_dbg(>dev, "set: threshold type");
#endif
 
-   switch (thresholdType)
-   {
+   switch (thresholdType) {
case fixed: return WRITE_REG(REG_OOKPEAK, ( (READ_REG(REG_OOKPEAK) 
& ~MASK_OOKPEAK_THREST

[PATCH 2/3] staging: pi433: rf69.c style fix - else close brace

2017-08-10 Thread Marcin Ciupak
This patch fixes the following checkpatch.pl error:

ERROR: else should follow close brace '}'

in rf69.c file as requested by TODO file.

Signed-off-by: Marcin Ciupak <marcin.s.ciu...@gmail.com>
---
 drivers/staging/pi433/rf69.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/staging/pi433/rf69.c b/drivers/staging/pi433/rf69.c
index 3afd217b79a7..746ef70babf7 100644
--- a/drivers/staging/pi433/rf69.c
+++ b/drivers/staging/pi433/rf69.c
@@ -122,8 +122,7 @@ int rf69_set_modulation_shaping(struct spi_device *spi, 
enum modShaping modShapi
case shaping0_3: return WRITE_REG(REG_DATAMODUL, 
(READ_REG(REG_DATAMODUL) & ~MASK_DATAMODUL_MODULATION_SHAPE) | 
DATAMODUL_MODULATION_SHAPE_0_5);
default: INVALID_PARAM;
}
-   }
-   else {
+   } else {
switch (modShaping) {
case shapingOff: return WRITE_REG(REG_DATAMODUL, 
(READ_REG(REG_DATAMODUL) & ~MASK_DATAMODUL_MODULATION_SHAPE) | 
DATAMODUL_MODULATION_SHAPE_NONE);
case shapingBR:  return WRITE_REG(REG_DATAMODUL, 
(READ_REG(REG_DATAMODUL) & ~MASK_DATAMODUL_MODULATION_SHAPE) | 
DATAMODUL_MODULATION_SHAPE_BR);
-- 
2.13.0

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 0/3] staging: pi433: rf69.c style errors fixes - braces

2017-08-10 Thread Marcin Ciupak
This set of patches is intended to fix coding style errors with braces in
rf69.c file in order to comply with kernel coding style guide as requested
by TODO file.

The following errors were fixed:
ERROR: that open brace { should be on the previous line
ERROR: else should follow close brace '}'
ERROR: space required before the open brace '{'

Marcin Ciupak (3):
  staging: pi433: rf69.c style fix - that open brace
  staging: pi433: rf69.c style fix - else close brace
  staging: pi433: rf69.c style fix - spaces open brace

 drivers/staging/pi433/rf69.c | 36 
 1 file changed, 12 insertions(+), 24 deletions(-)

-- 
2.13.0

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH] staging: pi433: style fix - space after asterisk

2017-08-08 Thread Marcin Ciupak
This patch is intended to fix coding style issues in order to comply
with kernel coding style guide as requested by TODO file.

It fixes the following checkpatch.pl error:

ERROR: "foo * bar" should be "foo *bar"

Note:
"WARNING: line over 80 characters" remains valid here and could be fixed
by another patch.

Signed-off-by: Marcin Ciupak <marcin.s.ciu...@gmail.com>
---
 drivers/staging/pi433/rf69.c | 2 +-
 drivers/staging/pi433/rf69.h | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/staging/pi433/rf69.c b/drivers/staging/pi433/rf69.c
index f83523e3395d..9f4e7173c688 100644
--- a/drivers/staging/pi433/rf69.c
+++ b/drivers/staging/pi433/rf69.c
@@ -740,7 +740,7 @@ int rf69_set_sync_values(struct spi_device *spi, u8 
syncValues[8])
return retval;
 }
 
-int rf69_set_packet_format(struct spi_device * spi, enum packetFormat 
packetFormat)
+int rf69_set_packet_format(struct spi_device *spi, enum packetFormat 
packetFormat)
 {
#ifdef DEBUG
dev_dbg(>dev, "set: packet format");
diff --git a/drivers/staging/pi433/rf69.h b/drivers/staging/pi433/rf69.h
index b81e0762032e..fbccaae51c61 100644
--- a/drivers/staging/pi433/rf69.h
+++ b/drivers/staging/pi433/rf69.h
@@ -61,7 +61,7 @@ int rf69_set_fifo_fill_condition(struct spi_device *spi, enum 
fifoFillCondition
 int rf69_set_sync_size(struct spi_device *spi, u8 sync_size);
 int rf69_set_sync_tolerance(struct spi_device *spi, u8 syncTolerance);
 int rf69_set_sync_values(struct spi_device *spi, u8 syncValues[8]);
-int rf69_set_packet_format(struct spi_device * spi, enum packetFormat 
packetFormat);
+int rf69_set_packet_format(struct spi_device *spi, enum packetFormat 
packetFormat);
 int rf69_set_crc_enable(struct spi_device *spi, enum optionOnOff optionOnOff);
 int rf69_set_adressFiltering(struct spi_device *spi, enum addressFiltering 
addressFiltering);
 int rf69_set_payload_length(struct spi_device *spi, u8 payloadLength);
-- 
2.13.0

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH v2] staging: lustre: replace simple_strtoul with kstrtoint

2017-07-27 Thread Marcin Ciupak
I did test it and not everything works as expected. I
need to reconsider that change. Please drop this patch.

Thanks,
Marcin

P.S. Sorry for late (sic!) response.

On Fri, Apr 14, 2017 at 10:16:31AM +0200, Greg Kroah-Hartman wrote:
> On Tue, Mar 21, 2017 at 01:46:09PM +0100, Marcin Ciupak wrote:
> > Replace simple_strtoul with kstrtoint.
> > simple_strtoul is marked for obsoletion as reported by checkpatch.pl
> > 
> > Signed-off-by: Marcin Ciupak <marcin.s.ciu...@gmail.com>
> > ---
> > v2:
> > -improving kstrtoint error handling
> > -updating commit message
> > 
> >  drivers/staging/lustre/lustre/obdclass/obd_mount.c | 16 
> >  1 file changed, 12 insertions(+), 4 deletions(-)
> > 
> > diff --git a/drivers/staging/lustre/lustre/obdclass/obd_mount.c 
> > b/drivers/staging/lustre/lustre/obdclass/obd_mount.c
> > index 8e0d4b1d86dc..42858ee5b444 100644
> > --- a/drivers/staging/lustre/lustre/obdclass/obd_mount.c
> > +++ b/drivers/staging/lustre/lustre/obdclass/obd_mount.c
> > @@ -924,12 +924,20 @@ static int lmd_parse(char *options, struct 
> > lustre_mount_data *lmd)
> > lmd->lmd_flags |= LMD_FLG_ABORT_RECOV;
> > clear++;
> > } else if (strncmp(s1, "recovery_time_soft=", 19) == 0) {
> > -   lmd->lmd_recovery_time_soft = max_t(int,
> > -   simple_strtoul(s1 + 19, NULL, 10), time_min);
> > +   int res;
> > +
> > +   rc = kstrtoint(s1 + 19, 10, );
> > +   if (rc)
> > +   goto invalid;
> > +   lmd->lmd_recovery_time_soft = max_t(int, res, time_min);
> 
> Are you sure max_t is still needed here?
> 
> And have you tested this change?
> 
> thanks,
> 
> greg k-h
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH v2] staging: lustre: replace simple_strtoul with kstrtoint

2017-03-21 Thread Marcin Ciupak
Replace simple_strtoul with kstrtoint.
simple_strtoul is marked for obsoletion as reported by checkpatch.pl

Signed-off-by: Marcin Ciupak <marcin.s.ciu...@gmail.com>
---
v2:
-improving kstrtoint error handling
-updating commit message

 drivers/staging/lustre/lustre/obdclass/obd_mount.c | 16 
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/drivers/staging/lustre/lustre/obdclass/obd_mount.c 
b/drivers/staging/lustre/lustre/obdclass/obd_mount.c
index 8e0d4b1d86dc..42858ee5b444 100644
--- a/drivers/staging/lustre/lustre/obdclass/obd_mount.c
+++ b/drivers/staging/lustre/lustre/obdclass/obd_mount.c
@@ -924,12 +924,20 @@ static int lmd_parse(char *options, struct 
lustre_mount_data *lmd)
lmd->lmd_flags |= LMD_FLG_ABORT_RECOV;
clear++;
} else if (strncmp(s1, "recovery_time_soft=", 19) == 0) {
-   lmd->lmd_recovery_time_soft = max_t(int,
-   simple_strtoul(s1 + 19, NULL, 10), time_min);
+   int res;
+
+   rc = kstrtoint(s1 + 19, 10, );
+   if (rc)
+   goto invalid;
+   lmd->lmd_recovery_time_soft = max_t(int, res, time_min);
clear++;
} else if (strncmp(s1, "recovery_time_hard=", 19) == 0) {
-   lmd->lmd_recovery_time_hard = max_t(int,
-   simple_strtoul(s1 + 19, NULL, 10), time_min);
+   int res;
+
+   rc = kstrtoint(s1 + 19, 10, );
+   if (rc)
+   goto invalid;
+   lmd->lmd_recovery_time_hard = max_t(int, res, time_min);
clear++;
} else if (strncmp(s1, "noir", 4) == 0) {
lmd->lmd_flags |= LMD_FLG_NOIR; /* test purpose only. */
-- 
2.11.1

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH] staging: lustre: replace simple_strtoul with kstrtoint

2017-03-12 Thread Marcin Ciupak
On Sun, Mar 12, 2017 at 02:36:47PM +0100, Greg Kroah-Hartman wrote:
> On Thu, Mar 09, 2017 at 03:53:00PM +0100, Marcin Ciupak wrote:
> > Replace simple_strtoul with kstrtoint.
> 
> Why?
Because  
> > simple_strtoul is marked for obsoletion.
as reported by checkpatch.pl.
> > 
> > Signed-off-by: Marcin Ciupak <marcin.s.ciu...@gmail.com>
> > ---
> >  drivers/staging/lustre/lustre/obdclass/obd_mount.c | 20 
> > 
> >  1 file changed, 16 insertions(+), 4 deletions(-)
> > 
> > diff --git a/drivers/staging/lustre/lustre/obdclass/obd_mount.c 
> > b/drivers/staging/lustre/lustre/obdclass/obd_mount.c
> > index 8e0d4b1d86dc..4a604e9b3e49 100644
> > --- a/drivers/staging/lustre/lustre/obdclass/obd_mount.c
> > +++ b/drivers/staging/lustre/lustre/obdclass/obd_mount.c
> > @@ -924,12 +924,24 @@ static int lmd_parse(char *options, struct 
> > lustre_mount_data *lmd)
> > lmd->lmd_flags |= LMD_FLG_ABORT_RECOV;
> > clear++;
> > } else if (strncmp(s1, "recovery_time_soft=", 19) == 0) {
> > -   lmd->lmd_recovery_time_soft = max_t(int,
> > -   simple_strtoul(s1 + 19, NULL, 10), time_min);
> > +   int res;
> > +
> > +   rc = kstrtoint(s1 + 19, 10, );
> > +   if (rc)
> > +   lmd->lmd_recovery_time_soft = time_min;
> > +   else
> > +   lmd->lmd_recovery_time_soft = max_t(int, res,
> > +   time_min);
> 
> Are you sure this is correct?  Do you really want to use max_t()?  Why
> is time_min used if there is an error?  Can't this all be written a lot
> simpler to actually make it semi-sane?
> 
> thanks,
> 
> greg k-h

max_t() and time_min were already used in the original code, I did not want to 
change
that.

Regarding error handling, I saw two options here:
1. update variable with some fail-safe value and time_min looked good
for that or,
2. do not update anything and do nothing or "goto invalid:" but I was not sure
about that, so selected first option.

If first option is not the best one, what would be better in case of error 
handling?

Thanks,
Marcin
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH] staging: lustre: replace simple_strtoul with kstrtoint

2017-03-09 Thread Marcin Ciupak
Replace simple_strtoul with kstrtoint.
simple_strtoul is marked for obsoletion.

Signed-off-by: Marcin Ciupak <marcin.s.ciu...@gmail.com>
---
 drivers/staging/lustre/lustre/obdclass/obd_mount.c | 20 
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/drivers/staging/lustre/lustre/obdclass/obd_mount.c 
b/drivers/staging/lustre/lustre/obdclass/obd_mount.c
index 8e0d4b1d86dc..4a604e9b3e49 100644
--- a/drivers/staging/lustre/lustre/obdclass/obd_mount.c
+++ b/drivers/staging/lustre/lustre/obdclass/obd_mount.c
@@ -924,12 +924,24 @@ static int lmd_parse(char *options, struct 
lustre_mount_data *lmd)
lmd->lmd_flags |= LMD_FLG_ABORT_RECOV;
clear++;
} else if (strncmp(s1, "recovery_time_soft=", 19) == 0) {
-   lmd->lmd_recovery_time_soft = max_t(int,
-   simple_strtoul(s1 + 19, NULL, 10), time_min);
+   int res;
+
+   rc = kstrtoint(s1 + 19, 10, );
+   if (rc)
+   lmd->lmd_recovery_time_soft = time_min;
+   else
+   lmd->lmd_recovery_time_soft = max_t(int, res,
+   time_min);
clear++;
} else if (strncmp(s1, "recovery_time_hard=", 19) == 0) {
-   lmd->lmd_recovery_time_hard = max_t(int,
-   simple_strtoul(s1 + 19, NULL, 10), time_min);
+   int res;
+
+   rc = kstrtoint(s1 + 19, 10, );
+   if (rc)
+   lmd->lmd_recovery_time_hard = time_min;
+   else
+   lmd->lmd_recovery_time_hard = max_t(int, res,
+   time_min);
clear++;
} else if (strncmp(s1, "noir", 4) == 0) {
lmd->lmd_flags |= LMD_FLG_NOIR; /* test purpose only. */
-- 
2.11.1

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH] staging: speakup: replace simple_strtoul with kstrtou8

2017-03-03 Thread Marcin Ciupak
On Thu, Mar 02, 2017 at 04:17:12PM +0100, Samuel Thibault wrote:
> Marcin Ciupak, on jeu. 02 mars 2017 15:28:23 +0100, wrote:
> > -   int val;
> > +   int ret;
> >  
> > -   val = simple_strtoul(skip_spaces(start), , 10);
> > +   ret = kstrtou8(skip_spaces(start), 10, dest);
> 
> This is not the same, you need to have start properly move, since it's
> used below:
> 
> > if (*start == ',')
> > start++;
> > -   *dest = (u_char)val;
> > return start;
> 
> Samuel

You are right, start is not updated by kstrtou8 like it is by
simple_strtoul.

If I understand it correctly simple_strtoul cannot be replaced by
kstrtou8 here.

Please discard this patch.

Marcin

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH] staging: speakup: replace simple_strtoul with kstrtou8

2017-03-02 Thread Marcin Ciupak
Replace simple_strtoul with kstrtou8.
simple_strtoul is marked for obsoletion.

Signed-off-by: Marcin Ciupak <marcin.s.ciu...@gmail.com>
---
 drivers/staging/speakup/varhandlers.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/staging/speakup/varhandlers.c 
b/drivers/staging/speakup/varhandlers.c
index cc984196020f..c219db745865 100644
--- a/drivers/staging/speakup/varhandlers.c
+++ b/drivers/staging/speakup/varhandlers.c
@@ -323,11 +323,10 @@ char *spk_strlwr(char *s)
 
 char *spk_s2uchar(char *start, char *dest)
 {
-   int val;
+   int ret;
 
-   val = simple_strtoul(skip_spaces(start), , 10);
+   ret = kstrtou8(skip_spaces(start), 10, dest);
if (*start == ',')
start++;
-   *dest = (u_char)val;
return start;
 }
-- 
2.11.1

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel