[PATCH 3/3] Hal8188ERateAdaptive.c : Expression is always false because 'else if' condition matches previous condition at line 404.

2015-02-24 Thread Ameen Ali
else if at line 406 has the same condition as the else if at line 404.

Signed-off-by : Ameen Ali ameenali...@gmail.com
---
 drivers/staging/rtl8188eu/hal/Hal8188ERateAdaptive.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/staging/rtl8188eu/hal/Hal8188ERateAdaptive.c 
b/drivers/staging/rtl8188eu/hal/Hal8188ERateAdaptive.c
index 3c651d5..944cf7b 100644
--- a/drivers/staging/rtl8188eu/hal/Hal8188ERateAdaptive.c
+++ b/drivers/staging/rtl8188eu/hal/Hal8188ERateAdaptive.c
@@ -403,7 +403,7 @@ static int odm_ARFBRefresh_8188E(struct odm_dm_struct 
*dm_odm, struct odm_ra_inf
pRaInfo-PTModeSS = 3;
else if (pRaInfo-HighestRate  0x0b)
pRaInfo-PTModeSS = 2;
-   else if (pRaInfo-HighestRate  0x0b)
+   else if (pRaInfo-HighestRate  0x5)
pRaInfo-PTModeSS = 1;
else
pRaInfo-PTModeSS = 0;
-- 
2.1.0

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


[PATCH 2/2] iio: jsa1212: Constify struct regmap_config

2015-02-24 Thread Krzysztof Kozlowski
The regmap_config struct may be const because it is not modified by the
driver and regmap_init() accepts pointer to const.

Signed-off-by: Krzysztof Kozlowski k.kozlow...@samsung.com
---
 drivers/iio/light/jsa1212.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/iio/light/jsa1212.c b/drivers/iio/light/jsa1212.c
index 29de7e7d9562..3a3af89beaf9 100644
--- a/drivers/iio/light/jsa1212.c
+++ b/drivers/iio/light/jsa1212.c
@@ -308,7 +308,7 @@ static bool jsa1212_is_volatile_reg(struct device *dev, 
unsigned int reg)
}
 }
 
-static struct regmap_config jsa1212_regmap_config = {
+static const struct regmap_config jsa1212_regmap_config = {
.name =  JSA1212_REGMAP_NAME,
.reg_bits = 8,
.val_bits = 8,
-- 
1.9.1

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


[PATCH 1/2] staging:iio:hmc5843: Constify register tables and struct regmap_config

2015-02-24 Thread Krzysztof Kozlowski
The regmap_access_table and regmap_config structures may be const
because they are not modified by the driver and regmap_init() accepts
pointer to const.

Signed-off-by: Krzysztof Kozlowski k.kozlow...@samsung.com
---
 drivers/staging/iio/magnetometer/hmc5843_i2c.c | 8 
 drivers/staging/iio/magnetometer/hmc5843_spi.c | 8 
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/drivers/staging/iio/magnetometer/hmc5843_i2c.c 
b/drivers/staging/iio/magnetometer/hmc5843_i2c.c
index 6acd614cdbc6..8346cf81fc2e 100644
--- a/drivers/staging/iio/magnetometer/hmc5843_i2c.c
+++ b/drivers/staging/iio/magnetometer/hmc5843_i2c.c
@@ -22,7 +22,7 @@ static const struct regmap_range hmc5843_readable_ranges[] = {
regmap_reg_range(0, HMC5843_ID_END),
 };
 
-static struct regmap_access_table hmc5843_readable_table = {
+static const struct regmap_access_table hmc5843_readable_table = {
.yes_ranges = hmc5843_readable_ranges,
.n_yes_ranges = ARRAY_SIZE(hmc5843_readable_ranges),
 };
@@ -31,7 +31,7 @@ static const struct regmap_range hmc5843_writable_ranges[] = {
regmap_reg_range(0, HMC5843_MODE_REG),
 };
 
-static struct regmap_access_table hmc5843_writable_table = {
+static const struct regmap_access_table hmc5843_writable_table = {
.yes_ranges = hmc5843_writable_ranges,
.n_yes_ranges = ARRAY_SIZE(hmc5843_writable_ranges),
 };
@@ -40,12 +40,12 @@ static const struct regmap_range hmc5843_volatile_ranges[] 
= {
regmap_reg_range(HMC5843_DATA_OUT_MSB_REGS, HMC5843_STATUS_REG),
 };
 
-static struct regmap_access_table hmc5843_volatile_table = {
+static const struct regmap_access_table hmc5843_volatile_table = {
.yes_ranges = hmc5843_volatile_ranges,
.n_yes_ranges = ARRAY_SIZE(hmc5843_volatile_ranges),
 };
 
-static struct regmap_config hmc5843_i2c_regmap_config = {
+static const struct regmap_config hmc5843_i2c_regmap_config = {
.reg_bits = 8,
.val_bits = 8,
 
diff --git a/drivers/staging/iio/magnetometer/hmc5843_spi.c 
b/drivers/staging/iio/magnetometer/hmc5843_spi.c
index 98c4b57101c9..8e658f736e1f 100644
--- a/drivers/staging/iio/magnetometer/hmc5843_spi.c
+++ b/drivers/staging/iio/magnetometer/hmc5843_spi.c
@@ -19,7 +19,7 @@ static const struct regmap_range hmc5843_readable_ranges[] = {
regmap_reg_range(0, HMC5843_ID_END),
 };
 
-static struct regmap_access_table hmc5843_readable_table = {
+static const struct regmap_access_table hmc5843_readable_table = {
.yes_ranges = hmc5843_readable_ranges,
.n_yes_ranges = ARRAY_SIZE(hmc5843_readable_ranges),
 };
@@ -28,7 +28,7 @@ static const struct regmap_range hmc5843_writable_ranges[] = {
regmap_reg_range(0, HMC5843_MODE_REG),
 };
 
-static struct regmap_access_table hmc5843_writable_table = {
+static const struct regmap_access_table hmc5843_writable_table = {
.yes_ranges = hmc5843_writable_ranges,
.n_yes_ranges = ARRAY_SIZE(hmc5843_writable_ranges),
 };
@@ -37,12 +37,12 @@ static const struct regmap_range hmc5843_volatile_ranges[] 
= {
regmap_reg_range(HMC5843_DATA_OUT_MSB_REGS, HMC5843_STATUS_REG),
 };
 
-static struct regmap_access_table hmc5843_volatile_table = {
+static const struct regmap_access_table hmc5843_volatile_table = {
.yes_ranges = hmc5843_volatile_ranges,
.n_yes_ranges = ARRAY_SIZE(hmc5843_volatile_ranges),
 };
 
-static struct regmap_config hmc5843_spi_regmap_config = {
+static const struct regmap_config hmc5843_spi_regmap_config = {
.reg_bits = 8,
.val_bits = 8,
 
-- 
1.9.1

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


Re: [PATCH] staging: comedi: vmk80xx: remove firmware version kernel messages

2015-02-24 Thread Ian Abbott

On 23/02/15 22:13, H Hartley Sweeten wrote:

During the attach of this driver a couple commands are sent to the hardware
with usb_bulk_msg() to read the firmware version information. This information
is then dumped as dev_info() kernel messages. Thee messages are just added
noise and don't effect the operation of the driver.

For simplicity, remove the messages as well as the then unused functions
vmk80xx_read_eeprom() and vmk80xx_check_data_link().

This also fixes an issue reported by coverity about an out-of-bounds write
in vmk80xx_read_eeprom().

Reported-by: coverity (CID 711413)
Signed-off-by: H Hartley Sweeten hswee...@visionengravers.com
Cc: Ian Abbott abbo...@mev.co.uk
Cc: Greg Kroah-Hartman gre...@linuxfoundation.org
---
Originally posted as [PATCH 1/4] staging: comedi: vmk80xx: fix out-of-bounds 
write
Ian Abbott has some comments on that patch. It's cleaner to just remove the 
kernel
messages completely.

  drivers/staging/comedi/drivers/vmk80xx.c | 71 
  1 file changed, 71 deletions(-)


Reviewed-by: Ian Abbott abbo...@mev.co.uk

--
-=( Ian Abbott @ MEV Ltd.E-mail: abbo...@mev.co.uk )=-
-=(  Web: http://www.mev.co.uk/  )=-
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH] staging: android: ion: fix wrong init of dma_buf_export_info

2015-02-24 Thread Sumit Semwal
Fixes: 817bd7253291 (dma-buf: cleanup dma_buf_export() to make it
easily extensible)

Stupid copy-paste from me in the above patch leads to the following static
checker warning:

drivers/staging/android/ion/ion.c:1112 ion_share_dma_buf()
error: potentially dereferencing uninitialized 'buffer'.

drivers/staging/android/ion/ion.c
  1103  struct dma_buf *ion_share_dma_buf(struct ion_client *client,
  1104  struct
ion_handle *handle)
  1105  {
  1106  struct ion_buffer *buffer;
   ^^
  1107  struct dma_buf *dmabuf;
  1108  bool valid_handle;
  1109  DEFINE_DMA_BUF_EXPORT_INFO(exp_info);
  1110
    exp_info.ops = dma_buf_ops;
  1112  exp_info.size = buffer-size;
^^
  1113  exp_info.flags = O_RDWR;
  1114  exp_info.priv = buffer;
^^
And here also.

  1115

This patch corrects this stupidity.

Reported-by: Dan Carpenter dan.carpen...@oracle.com
Signed-off-by: Sumit Semwal sumit.sem...@linaro.org
---
 drivers/staging/android/ion/ion.c | 10 +-
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/staging/android/ion/ion.c 
b/drivers/staging/android/ion/ion.c
index a4297be8f12f..204860a36c29 100644
--- a/drivers/staging/android/ion/ion.c
+++ b/drivers/staging/android/ion/ion.c
@@ -1108,11 +1108,6 @@ struct dma_buf *ion_share_dma_buf(struct ion_client 
*client,
bool valid_handle;
DEFINE_DMA_BUF_EXPORT_INFO(exp_info);
 
-   exp_info.ops = dma_buf_ops;
-   exp_info.size = buffer-size;
-   exp_info.flags = O_RDWR;
-   exp_info.priv = buffer;
-
mutex_lock(client-lock);
valid_handle = ion_handle_validate(client, handle);
if (!valid_handle) {
@@ -1124,6 +1119,11 @@ struct dma_buf *ion_share_dma_buf(struct ion_client 
*client,
ion_buffer_get(buffer);
mutex_unlock(client-lock);
 
+   exp_info.ops = dma_buf_ops;
+   exp_info.size = buffer-size;
+   exp_info.flags = O_RDWR;
+   exp_info.priv = buffer;
+
dmabuf = dma_buf_export(exp_info);
if (IS_ERR(dmabuf)) {
ion_buffer_put(buffer);
-- 
1.9.1

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


Re: [PATCH] staging: comedi: comedi_isadma: fix stalled detect in comedi_isadma_disable_on_sample()

2015-02-24 Thread Ian Abbott

On 23/02/15 20:22, H Hartley Sweeten wrote:

The stalled variable this function is used to detect if the DMA operation
is stalled while trying to disable DMA on a full comedi sample. The reset
of this variable should only occur when the remaining bytes of the DMA
transfer does not equal the remaining bytes from the last check.

Reported-by: coverity (CID 1271132)
Signed-off-by: H Hartley Sweeten hswee...@visionengravers.com
Cc: Ian Abbott abbo...@mev.co.uk
Cc: Greg Kroah-Hartman gre...@linuxfoundation.org
---
  drivers/staging/comedi/drivers/comedi_isadma.c | 5 +++--
  1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/staging/comedi/drivers/comedi_isadma.c 
b/drivers/staging/comedi/drivers/comedi_isadma.c
index dbdea71..e856f01 100644
--- a/drivers/staging/comedi/drivers/comedi_isadma.c
+++ b/drivers/staging/comedi/drivers/comedi_isadma.c
@@ -91,9 +91,10 @@ unsigned int comedi_isadma_disable_on_sample(unsigned int 
dma_chan,
stalled++;
if (stalled  10)
break;
+   } else {
+   residue = new_residue;
+   stalled = 0;
}
-   residue = new_residue;
-   stalled = 0;
}
return residue;
  }



This fix applies to linux-4.0-rc1 too.

Reviewed-by: Ian Abbott abbo...@mev.co.uk

--
-=( Ian Abbott @ MEV Ltd.E-mail: abbo...@mev.co.uk )=-
-=(  Web: http://www.mev.co.uk/  )=-
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH v2 00/36] staging: comedi: cleanup 8254 timer code

2015-02-24 Thread Ian Abbott

On 23/02/15 21:57, H Hartley Sweeten wrote:

This series introduces a new module. comedi_8254, to support the 8254 timer
devices that are commonly found on data acquisition card. This module replaces
the current support provided by the inline functions in 8253.h and consolidates
the subdevice support code found in the comedi drivers.

v2: fix some issues pointed out by Ian Abbott

1) Patches 1, 7, 12, 13, and 26

Fix a logic error in the use of the 'regshift' variable used in the
comedi_8254 module to calculate the offsets for the registers.

As Ian Abbott pointed out, the 'regshift' is used to account for gaps
between the registers. The 'iosize' will automatically space the registers
correctly (assuming no gaps). Example:

 Register offsets
iosize  regshift = 0 regshift = 1 regshift = 2
--  ---  ---  
---
I8254_IO8 (1)   0x00 0x01 0x02 0x03  0x00 0x02 0x04 0x06  0x00 0x04 0x08 
0x0c
I8254_IO16 (2)  0x00 0x02 0x04 0x06  0x00 0x04 0x08 0x0c  0x00 0x08 0x10 
0x18
I8254_IO32 (4)  0x00 0x04 0x08 0x0c  0x00 0x08 0x10 0x18  0x00 0x10 0x20 
0x30

2) Patch 1

AND the return value of __i8254_read() with 0xff to ensure that the
returned value is valid.

H Hartley Sweeten (36):
   staging: comedi: comedi_8254: introduce module for 8254 timer support
   staging: comedi: add 'pacer' member to struct comedi_device
   staging: comedi: pcl812: convert driver to use the comedi_8254 module
   staging: comedi: pcl816: convert driver to use the comedi_8254 module
   staging: comedi: pcl818: convert driver to use the comedi_8254 module
   staging: comedi: pcl711: convert driver to use the comedi_8254 module
   staging: comedi: adl_pci9111: convert driver to use the comedi_8254 module
   staging: comedi: amplc_pci224: convert driver to use the comedi_8254 module
   staging: comedi: cb_pcidas: convert driver to use the comedi_8254 module
   staging: comedi: das800: convert driver to use the comedi_8254 module
   staging: comedi: das16m1: convert driver to use the comedi_8254 module
   staging: comedi: cb_das16_cs: convert driver to use the comedi_8254 module
   staging: comedi: adv_pci1710: convert driver to use the comedi_8254 module
   staging: comedi: amplc_pci230: convert driver to use the comedi_8254 module
   staging: comedi: das08: convert driver to use the comedi_8254 module
   staging: comedi: ni_at_ao: convert driver to use the comedi_8254 module
   staging: comedi: ni_at_a2150: convert driver to use the comedi_8254 module
   staging: comedi: das6402: convert driver to use the comedi_8254 module
   staging: comedi: das1800: convert driver to use the comedi_8254 module
   staging: comedi: adv_pci_dio: simplify counter subdevice I/O
   staging: comedi: adv_pci_dio: refactor 's8254' boardinfo
   staging: comedi: adv_pci_dio: convert driver to use the comedi_8254 module
   staging: comedi: me4000: convert driver to use the comedi_8254 module
   staging: comedi: cb_pcidas64: remove unnecessary include
   staging: comedi: das16: convert driver to use the comedi_8254 module
   staging: comedi: adl_pci9118: convert driver to use the comedi_8254 module
   staging: comedi: amplc_dio200_common: introduce DIO200_CLK_SEL() macro
   staging: comedi: amplc_dio200_common: introduce DIO200_GAT_SEL() macro
   staging: comedi: amplc_dio200_common: remove 'clk_sce_ofs' from struct 
dio200_subdev_8254
   staging: comedi: amplc_dio200_common: remove 'gat_sce_ofs' from struct 
dio200_subdev_8254
   staging: comedi: amplc_dio200_common: remove 'which' from struct 
dio200_subdev_8254
   staging: comedi: amplc_dio200_common: remove unnecessary 'counter_number' 
checks
   staging: comedi: amplc_dio200_common: remove 'spinlock' from struct 
dio200_subdev_8254
   staging: comedi: amplc_dio200_common: convert driver to use the comedi_8254 
module
   staging: comedi: ni_labpc_common: convert driver to use the comedi_8254 
module
   staging: comedi: 8253.h: remove unused header

  drivers/staging/comedi/Kconfig |  26 +
  drivers/staging/comedi/comedidev.h |   1 +
  drivers/staging/comedi/drivers.c   |   2 +
  drivers/staging/comedi/drivers/8253.h  | 347 ---
  drivers/staging/comedi/drivers/Makefile|   1 +
  drivers/staging/comedi/drivers/adl_pci9111.c   |  39 +-
  drivers/staging/comedi/drivers/adl_pci9118.c   |  93 +--
  drivers/staging/comedi/drivers/adv_pci1710.c   | 206 ++-
  drivers/staging/comedi/drivers/adv_pci_dio.c   | 135 +
  .../staging/comedi/drivers/amplc_dio200_common.c   | 304 +++---
  drivers/staging/comedi/drivers/amplc_pci224.c  |  34 +-
  drivers/staging/comedi/drivers/amplc_pci230.c  |  47 +-
  drivers/staging/comedi/drivers/cb_das16_cs.c   |  12 +-
  drivers/staging/comedi/drivers/cb_pcidas.c |  86 +--
  

Re: [PATCH v2 34/36] staging: comedi: amplc_dio200_common: convert driver to use the comedi_8254 module

2015-02-24 Thread Ian Abbott

On 23/02/15 21:58, H Hartley Sweeten wrote:

Convert this driver to use the comedi_8254 module to provide the 8254 timer 
support.

Add 'clock_src' and 'gate_src' members to the comedi_8254 data for convienence.

Signed-off-by: H Hartley Sweeten hswee...@visionengravers.com
Cc: Ian Abbott abbo...@mev.co.uk
Cc: Greg Kroah-Hartman gre...@linuxfoundation.org
---
v2: no change

  drivers/staging/comedi/Kconfig |   1 +
  .../staging/comedi/drivers/amplc_dio200_common.c   | 263 ++---
  drivers/staging/comedi/drivers/comedi_8254.h   |   4 +
  3 files changed, 72 insertions(+), 196 deletions(-)

[snip]

+static int dio200_subdev_8254_offset(struct comedi_device *dev,
+struct comedi_subdevice *s)
  {
-   const struct dio200_board *board = dev-board_ptr;
-   struct dio200_subdev_8254 *subpriv = s-private;
+   struct comedi_8254 *i8254 = s-private;

-   if (!board-has_clk_gat_sce)
-   return -1;
+   if (dev-mmio)
+   return i8254-mmio - dev-mmio;

-   return subpriv-gate_src[counter_number];
+   return i8254-iobase - dev-iobase;
  }

-static int dio200_subdev_8254_set_clock_src(struct comedi_device *dev,
+static void dio200_subdev_8254_set_gate_src(struct comedi_device *dev,
struct comedi_subdevice *s,
-   unsigned int counter_number,
-   unsigned int clock_src)
+   unsigned int chan,
+   unsigned int src)
  {
-   const struct dio200_board *board = dev-board_ptr;
-   struct dio200_subdev_8254 *subpriv = s-private;
-   unsigned char byte;
+   unsigned int offset = dio200_subdev_8254_offset(dev, s);

-   if (!board-has_clk_gat_sce)
-   return -1;
-   if (clock_src  (board-is_pcie ? 31 : 7))
-   return -1;
-
-   subpriv-clock_src[counter_number] = clock_src;
-   byte = clk_sce((subpriv-ofs  2)  1, counter_number, clock_src);
-   dio200_write8(dev, DIO200_CLK_SCE(subpriv-ofs  3), byte);
-
-   return 0;
+   dio200_write8(dev, DIO200_GAT_SCE(offset  3),
+ gat_sce((offset  2)  1, chan, src));
  }

-static int dio200_subdev_8254_get_clock_src(struct comedi_device *dev,
-   struct comedi_subdevice *s,
-   unsigned int counter_number,
-   unsigned int *period_ns)
+static void dio200_subdev_8254_set_clock_src(struct comedi_device *dev,
+struct comedi_subdevice *s,
+unsigned int chan,
+unsigned int src)
  {
-   const struct dio200_board *board = dev-board_ptr;
-   struct dio200_subdev_8254 *subpriv = s-private;
-   unsigned clock_src;
-
-   if (!board-has_clk_gat_sce)
-   return -1;
+   unsigned int offset = dio200_subdev_8254_offset(dev, s);

-   clock_src = subpriv-clock_src[counter_number];
-   *period_ns = clock_period[clock_src];
-   return clock_src;
+   dio200_write8(dev, DIO200_CLK_SCE(offset  3),
+ clk_sce((offset  2)  1, chan, src));
  }

[snip]

@@ -686,28 +551,34 @@ static int dio200_subdev_8254_init(struct comedi_device 
*dev,
   unsigned int offset)
  {
const struct dio200_board *board = dev-board_ptr;
-   struct dio200_subdev_8254 *subpriv;
-   unsigned int chan;
+   struct comedi_8254 *i8254;
+   unsigned int regshift;
+   int chan;

-   subpriv = comedi_alloc_spriv(s, sizeof(*subpriv));
-   if (!subpriv)
+   regshift = (board-is_pcie) ? 3 : 0;
+
+   if (dev-mmio)
+   i8254 = comedi_8254_mm_init(dev-mmio + offset,
+   0, I8254_IO8, regshift);
+   else
+   i8254 = comedi_8254_init(dev-iobase + offset,
+0, I8254_IO8, regshift);
+   if (!i8254)
return -ENOMEM;

-   s-type = COMEDI_SUBD_COUNTER;
-   s-subdev_flags = SDF_WRITABLE | SDF_READABLE;
-   s-n_chan = 3;
-   s-maxdata = 0x;
-   s-insn_read = dio200_subdev_8254_read;
-   s-insn_write = dio200_subdev_8254_write;
-   s-insn_config = dio200_subdev_8254_config;
+   comedi_8254_subdevice_init(s, i8254);

-   subpriv-ofs = offset;
+   i8254-insn_config = dio200_subdev_8254_config;
+
+   /*
+* Set the runflag bit so that the core will autmatically
+* kfree(s-private) when the driver is detached.
+*/
+   s-runflags |= COMEDI_SRF_FREE_SPRIV;

/* Initialize channels. */
-   for (chan = 0; chan  3; chan++) {
-   dio200_subdev_8254_set_mode(dev, 

[PATCH] Staging: fbtft: fix style errors

2015-02-24 Thread Matteo Semenzato
From: Matteo Semenzato mattew8...@gmail.com

This patch fixes the following errors:
Code indent should use tabs where possible
Space prohibited before that ','

Signed-off-by: Matteo Semenzato mattew8...@gmail.com
---
 drivers/staging/fbtft/fbtft-core.c | 2 +-
 drivers/staging/fbtft/fbtft.h  | 8 
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/staging/fbtft/fbtft-core.c 
b/drivers/staging/fbtft/fbtft-core.c
index 37dcf7e..ac4287f 100644
--- a/drivers/staging/fbtft/fbtft-core.c
+++ b/drivers/staging/fbtft/fbtft-core.c
@@ -49,7 +49,7 @@ extern int fbtft_gamma_parse_str(struct fbtft_par *par, 
unsigned long *curves,
const char *str, int size);
 
 static unsigned long debug;
-module_param(debug, ulong , 0);
+module_param(debug, ulong, 0);
 MODULE_PARM_DESC(debug, override device debug level);
 
 static bool dma = true;
diff --git a/drivers/staging/fbtft/fbtft.h b/drivers/staging/fbtft/fbtft.h
index 0dbf3f9..36ecf02 100644
--- a/drivers/staging/fbtft/fbtft.h
+++ b/drivers/staging/fbtft/fbtft.h
@@ -326,8 +326,8 @@ static int fbtft_driver_remove_pdev(struct platform_device 
*pdev)  \
 }  \
   \
 static const struct of_device_id dt_ids[] = {  \
-{ .compatible = _compatible }, \
-{},\
+   { .compatible = _compatible }, \
+   {},\
 }; \
   \
 MODULE_DEVICE_TABLE(of, dt_ids);   \
@@ -337,7 +337,7 @@ static struct spi_driver fbtft_driver_spi_driver = {
   \
.driver = {\
.name   = _name,   \
.owner  = THIS_MODULE, \
-.of_match_table = of_match_ptr(dt_ids),\
+   .of_match_table = of_match_ptr(dt_ids),\
}, \
.probe  = fbtft_driver_probe_spi,  \
.remove = fbtft_driver_remove_spi, \
@@ -347,7 +347,7 @@ static struct platform_driver fbtft_driver_platform_driver 
= { \
.driver = {\
.name   = _name,   \
.owner  = THIS_MODULE, \
-.of_match_table = of_match_ptr(dt_ids),\
+   .of_match_table = of_match_ptr(dt_ids),\
}, \
.probe  = fbtft_driver_probe_pdev, \
.remove = fbtft_driver_remove_pdev,\
-- 
2.3.0

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


[PATCH] Staging: fbtft remove C99 style comments

2015-02-24 Thread Matteo Semenzato
From: Matteo Semenzato mattew8...@gmail.com

This patch fixes the following error:
Do not use C99 // comments

Signed-off-by: Matteo Semenzato mattew8...@gmail.com
---
 drivers/staging/fbtft/fb_ssd1331.c | 30 +++---
 1 file changed, 15 insertions(+), 15 deletions(-)

diff --git a/drivers/staging/fbtft/fb_ssd1331.c 
b/drivers/staging/fbtft/fb_ssd1331.c
index da7464f..cdb18b3 100644
--- a/drivers/staging/fbtft/fb_ssd1331.c
+++ b/drivers/staging/fbtft/fb_ssd1331.c
@@ -29,24 +29,24 @@ static int init_display(struct fbtft_par *par)
 
write_reg(par, 0xae); /* Display Off */
write_reg(par, 0xa0, 0x70 | (par-bgr  2)); /* Set Colour Depth */
-   write_reg(par, 0x72); // RGB colour
+   write_reg(par, 0x72); /* RGB colour */
write_reg(par, 0xa1, 0x00); /* Set Display Start Line */
write_reg(par, 0xa2, 0x00); /* Set Display Offset */
write_reg(par, 0xa4); /* NORMALDISPLAY */
-   write_reg(par, 0xa8, 0x3f); // Set multiplex
-   write_reg(par, 0xad, 0x8e); // Set master
-   // write_reg(par, 0xb0, 0x0b); // Set power mode
-   write_reg(par, 0xb1, 0x31); // Precharge
-   write_reg(par, 0xb3, 0xf0); // Clock div
-   write_reg(par, 0x8a, 0x64); // Precharge A
-   write_reg(par, 0x8b, 0x78); // Precharge B
-   write_reg(par, 0x8c, 0x64); // Precharge C
-   write_reg(par, 0xbb, 0x3a); // Precharge level
-   write_reg(par, 0xbe, 0x3e); // vcomh
-   write_reg(par, 0x87, 0x06); // Master current
-   write_reg(par, 0x81, 0x91); // Contrast A
-   write_reg(par, 0x82, 0x50); // Contrast B
-   write_reg(par, 0x83, 0x7d); // Contrast C
+   write_reg(par, 0xa8, 0x3f); /* Set multiplex */
+   write_reg(par, 0xad, 0x8e); /* Set master */
+   /* write_reg(par, 0xb0, 0x0b); Set power mode */
+   write_reg(par, 0xb1, 0x31); /* Precharge */
+   write_reg(par, 0xb3, 0xf0); /* Clock div */
+   write_reg(par, 0x8a, 0x64); /* Precharge A */
+   write_reg(par, 0x8b, 0x78); /* Precharge B */
+   write_reg(par, 0x8c, 0x64); /* Precharge C */
+   write_reg(par, 0xbb, 0x3a); /* Precharge level */
+   write_reg(par, 0xbe, 0x3e); /* vcomh */
+   write_reg(par, 0x87, 0x06); /* Master current */
+   write_reg(par, 0x81, 0x91); /* Contrast A */
+   write_reg(par, 0x82, 0x50); /* Contrast B */
+   write_reg(par, 0x83, 0x7d); /* Contrast C */
write_reg(par, 0xaf); /* Set Sleep Mode Display On */
 
return 0;
-- 
2.3.0

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


RE: [PATCH v2 34/36] staging: comedi: amplc_dio200_common: convert driver to use the comedi_8254 module

2015-02-24 Thread Hartley Sweeten
On Tuesday, February 24, 2015 6:20 AM, Ian Abbott wrote:
 On 23/02/15 21:58, H Hartley Sweeten wrote:
 Convert this driver to use the comedi_8254 module to provide the 8254 timer 
 support.

 Add 'clock_src' and 'gate_src' members to the comedi_8254 data for 
 convienence.

 Signed-off-by: H Hartley Sweeten hswee...@visionengravers.com
 Cc: Ian Abbott abbo...@mev.co.uk
 Cc: Greg Kroah-Hartman gre...@linuxfoundation.org
 ---
 v2: no change

   drivers/staging/comedi/Kconfig |   1 +
   .../staging/comedi/drivers/amplc_dio200_common.c   | 263 
 ++---
   drivers/staging/comedi/drivers/comedi_8254.h   |   4 +
   3 files changed, 72 insertions(+), 196 deletions(-)
 [snip]
 +static int dio200_subdev_8254_offset(struct comedi_device *dev,
 + struct comedi_subdevice *s)
   {
 -const struct dio200_board *board = dev-board_ptr;
 -struct dio200_subdev_8254 *subpriv = s-private;
 +struct comedi_8254 *i8254 = s-private;

 -if (!board-has_clk_gat_sce)
 -return -1;
 +if (dev-mmio)
 +return i8254-mmio - dev-mmio;

 -return subpriv-gate_src[counter_number];
 +return i8254-iobase - dev-iobase;
   }

 -static int dio200_subdev_8254_set_clock_src(struct comedi_device *dev,
 +static void dio200_subdev_8254_set_gate_src(struct comedi_device *dev,
  struct comedi_subdevice *s,
 -unsigned int counter_number,
 -unsigned int clock_src)
 +unsigned int chan,
 +unsigned int src)
   {
 -const struct dio200_board *board = dev-board_ptr;
 -struct dio200_subdev_8254 *subpriv = s-private;
 -unsigned char byte;
 +unsigned int offset = dio200_subdev_8254_offset(dev, s);

 -if (!board-has_clk_gat_sce)
 -return -1;
 -if (clock_src  (board-is_pcie ? 31 : 7))
 -return -1;
 -
 -subpriv-clock_src[counter_number] = clock_src;
 -byte = clk_sce((subpriv-ofs  2)  1, counter_number, clock_src);
 -dio200_write8(dev, DIO200_CLK_SCE(subpriv-ofs  3), byte);
 -
 -return 0;
 +dio200_write8(dev, DIO200_GAT_SCE(offset  3),
 +  gat_sce((offset  2)  1, chan, src));
   }

 -static int dio200_subdev_8254_get_clock_src(struct comedi_device *dev,
 -struct comedi_subdevice *s,
 -unsigned int counter_number,
 -unsigned int *period_ns)
 +static void dio200_subdev_8254_set_clock_src(struct comedi_device *dev,
 + struct comedi_subdevice *s,
 + unsigned int chan,
 + unsigned int src)
   {
 -const struct dio200_board *board = dev-board_ptr;
 -struct dio200_subdev_8254 *subpriv = s-private;
 -unsigned clock_src;
 -
 -if (!board-has_clk_gat_sce)
 -return -1;
 +unsigned int offset = dio200_subdev_8254_offset(dev, s);

 -clock_src = subpriv-clock_src[counter_number];
 -*period_ns = clock_period[clock_src];
 -return clock_src;
 +dio200_write8(dev, DIO200_CLK_SCE(offset  3),
 +  clk_sce((offset  2)  1, chan, src));
   }
 [snip]
 @@ -686,28 +551,34 @@ static int dio200_subdev_8254_init(struct 
 comedi_device *dev,
 unsigned int offset)
   {
  const struct dio200_board *board = dev-board_ptr;
 -struct dio200_subdev_8254 *subpriv;
 -unsigned int chan;
 +struct comedi_8254 *i8254;
 +unsigned int regshift;
 +int chan;

 -subpriv = comedi_alloc_spriv(s, sizeof(*subpriv));
 -if (!subpriv)
 +regshift = (board-is_pcie) ? 3 : 0;
 +
 +if (dev-mmio)
 +i8254 = comedi_8254_mm_init(dev-mmio + offset,
 +0, I8254_IO8, regshift);
 +else
 +i8254 = comedi_8254_init(dev-iobase + offset,
 + 0, I8254_IO8, regshift);
 +if (!i8254)
  return -ENOMEM;

 -s-type = COMEDI_SUBD_COUNTER;
 -s-subdev_flags = SDF_WRITABLE | SDF_READABLE;
 -s-n_chan = 3;
 -s-maxdata = 0x;
 -s-insn_read = dio200_subdev_8254_read;
 -s-insn_write = dio200_subdev_8254_write;
 -s-insn_config = dio200_subdev_8254_config;
 +comedi_8254_subdevice_init(s, i8254);

 -subpriv-ofs = offset;
 +i8254-insn_config = dio200_subdev_8254_config;
 +
 +/*
 + * Set the runflag bit so that the core will autmatically
 + * kfree(s-private) when the driver is detached.
 + */
 +s-runflags |= COMEDI_SRF_FREE_SPRIV;

  /* Initialize channels. */
 -for (chan = 0; chan  3; chan++) {
 -dio200_subdev_8254_set_mode(dev, s, chan,
 -I8254_MODE0 | 

[PATCH v3 34/36] staging: comedi: amplc_dio200_common: convert driver to use the comedi_8254 module

2015-02-24 Thread H Hartley Sweeten
Convert this driver to use the comedi_8254 module to provide the 8254 timer 
support.

Add 'clock_src' and 'gate_src' members to the comedi_8254 data for convienence.

Signed-off-by: H Hartley Sweeten hswee...@visionengravers.com
Cc: Ian Abbott abbo...@mev.co.uk
Cc: Greg Kroah-Hartman gre...@linuxfoundation.org
---
v3: As pointed out by Ian Abbott, fix the 'offset' used for the timer on PCIe 
boards.
No change to the rest of the series.

 drivers/staging/comedi/Kconfig |   1 +
 .../staging/comedi/drivers/amplc_dio200_common.c   | 295 +++--
 drivers/staging/comedi/drivers/comedi_8254.h   |   4 +
 3 files changed, 99 insertions(+), 201 deletions(-)

diff --git a/drivers/staging/comedi/Kconfig b/drivers/staging/comedi/Kconfig
index 6ee50b4..ebda03c 100644
--- a/drivers/staging/comedi/Kconfig
+++ b/drivers/staging/comedi/Kconfig
@@ -1275,6 +1275,7 @@ config COMEDI_KCOMEDILIB
  called kcomedilib.
 
 config COMEDI_AMPLC_DIO200
+   select COMEDI_8254
tristate
 
 config COMEDI_AMPLC_PC236
diff --git a/drivers/staging/comedi/drivers/amplc_dio200_common.c 
b/drivers/staging/comedi/drivers/amplc_dio200_common.c
index 08dab1f..0101e92 100644
--- a/drivers/staging/comedi/drivers/amplc_dio200_common.c
+++ b/drivers/staging/comedi/drivers/amplc_dio200_common.c
@@ -26,7 +26,7 @@
 
 #include amplc_dio200.h
 #include comedi_fc.h
-#include 8253.h
+#include comedi_8254.h
 #include 8255.h  /* only for register defines */
 
 /* 200 series registers */
@@ -97,12 +97,6 @@ static const unsigned int 
ts_clock_period[TS_CONFIG_MAX_CLK_SRC + 1] = {
100,/* 1 millisecond. */
 };
 
-struct dio200_subdev_8254 {
-   unsigned int ofs;   /* Counter base offset */
-   unsigned int clock_src[3];  /* Current clock sources */
-   unsigned int gate_src[3];   /* Current gate sources */
-};
-
 struct dio200_subdev_8255 {
unsigned int ofs;   /* DIO base offset */
 };
@@ -169,6 +163,27 @@ static void dio200_write32(struct comedi_device *dev,
outl(val, dev-iobase + offset);
 }
 
+static unsigned int dio200_subdev_8254_offset(struct comedi_device *dev,
+ struct comedi_subdevice *s)
+{
+   const struct dio200_board *board = dev-board_ptr;
+   struct comedi_8254 *i8254 = s-private;
+   unsigned int offset;
+
+   /* get the offset that was passed to comedi_8254_*_init() */
+   if (dev-mmio)
+   offset = i8254-mmio - dev-mmio;
+   else
+   offset = i8254-iobase - dev-iobase;
+
+   /* remove the shift that was added for PCIe boards */
+   if (board-is_pcie)
+   offset = 3;
+
+   /* this offset now works for the dio200_{read,write} helpers */
+   return offset;
+}
+
 static int dio200_subdev_intr_insn_bits(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
@@ -474,159 +489,26 @@ static irqreturn_t dio200_interrupt(int irq, void *d)
return IRQ_RETVAL(handled);
 }
 
-static unsigned int dio200_subdev_8254_read_chan(struct comedi_device *dev,
-struct comedi_subdevice *s,
-unsigned int chan)
-{
-   struct dio200_subdev_8254 *subpriv = s-private;
-   unsigned int val;
-
-   /* latch counter */
-   val = chan  6;
-   dio200_write8(dev, subpriv-ofs + i8254_control_reg, val);
-   /* read lsb, msb */
-   val = dio200_read8(dev, subpriv-ofs + chan);
-   val += dio200_read8(dev, subpriv-ofs + chan)  8;
-   return val;
-}
-
-static void dio200_subdev_8254_write_chan(struct comedi_device *dev,
- struct comedi_subdevice *s,
- unsigned int chan,
- unsigned int count)
-{
-   struct dio200_subdev_8254 *subpriv = s-private;
-
-   /* write lsb, msb */
-   dio200_write8(dev, subpriv-ofs + chan, count  0xff);
-   dio200_write8(dev, subpriv-ofs + chan, (count  8)  0xff);
-}
-
-static void dio200_subdev_8254_set_mode(struct comedi_device *dev,
-   struct comedi_subdevice *s,
-   unsigned int chan,
-   unsigned int mode)
-{
-   struct dio200_subdev_8254 *subpriv = s-private;
-   unsigned int byte;
-
-   byte = chan  6;
-   byte |= 0x30;   /* access order: lsb, msb */
-   byte |= (mode  0xf);   /* counter mode and BCD|binary */
-   dio200_write8(dev, subpriv-ofs + i8254_control_reg, byte);
-}
-
-static unsigned int dio200_subdev_8254_status(struct comedi_device *dev,
- struct comedi_subdevice *s,
-   

Re: [PATCH] Staging: wlan-ng: hfa384x: Added a new line to fix coding style issue

2015-02-24 Thread Greg KH
On Tue, Feb 24, 2015 at 05:53:55PM +, Daniel Lockyer wrote:
 Fixed a coding style issue.
 
 Signed-off-by: Daniel Lockyer thisisdaniellock...@gmail.com
 ---
  drivers/staging/wlan-ng/hfa384x.h | 1 +
  1 file changed, 1 insertion(+)
 
 diff --git a/drivers/staging/wlan-ng/hfa384x.h 
 b/drivers/staging/wlan-ng/hfa384x.h
 index 8f20910..3bb8c1b 100644
 --- a/drivers/staging/wlan-ng/hfa384x.h
 +++ b/drivers/staging/wlan-ng/hfa384x.h
 @@ -1166,6 +1166,7 @@ typedef struct hfa384x_usbctlx {
   CTLX_STATE state;   /* Tracks running state */
  
   struct completion done;
 +
   volatile int reapable;  /* Food for the reaper task */
  
   ctlx_cmdcb_t cmdcb; /* Async command callback */

What coding style issue does this fix?  It looks wrong to me.

thanks,

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


[PATCH] Staging: wlan-ng: hfa384x: Added a new line to fix coding style issue

2015-02-24 Thread Daniel Lockyer
Fixed a coding style issue.

Signed-off-by: Daniel Lockyer thisisdaniellock...@gmail.com
---
 drivers/staging/wlan-ng/hfa384x.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/staging/wlan-ng/hfa384x.h 
b/drivers/staging/wlan-ng/hfa384x.h
index 8f20910..3bb8c1b 100644
--- a/drivers/staging/wlan-ng/hfa384x.h
+++ b/drivers/staging/wlan-ng/hfa384x.h
@@ -1166,6 +1166,7 @@ typedef struct hfa384x_usbctlx {
CTLX_STATE state;   /* Tracks running state */
 
struct completion done;
+
volatile int reapable;  /* Food for the reaper task */
 
ctlx_cmdcb_t cmdcb; /* Async command callback */
-- 
2.1.0

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


Re: [PATCH] staging: unisys: Rework Kconfig dependencies

2015-02-24 Thread Romer, Benjamin M
On Sat, 2015-02-21 at 13:16 +0100, Jean Delvare wrote:
 Signed-off-by: Jean Delvare jdelv...@suse.de
 Cc: Benjamin Romer benjamin.ro...@unisys.com
 Cc: David Kershner david.kersh...@unisys.com
 Cc: Greg Kroah-Hartman gre...@linuxfoundation.org
 ---
 This is an humble proposal if you like it. I don't use the driver
 myself, I don't even know what it is for ;-)
 

I like this idea a lot. Thanks!! :)

-- Ben

Signed-off-by: Benjamin Romer benjamin.ro...@unisys.com
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH] Staging: wlan-ng: hfa384x: Added a new line to fix coding style issue

2015-02-24 Thread Daniel Lockyer
On Tue, Feb 24, 2015 at 09:56:39AM -0800, Greg KH wrote:
 On Tue, Feb 24, 2015 at 05:53:55PM +, Daniel Lockyer wrote:
  Fixed a coding style issue.
  
  Signed-off-by: Daniel Lockyer thisisdaniellock...@gmail.com
  ---
   drivers/staging/wlan-ng/hfa384x.h | 1 +
   1 file changed, 1 insertion(+)
  
  diff --git a/drivers/staging/wlan-ng/hfa384x.h 
  b/drivers/staging/wlan-ng/hfa384x.h
  index 8f20910..3bb8c1b 100644
  --- a/drivers/staging/wlan-ng/hfa384x.h
  +++ b/drivers/staging/wlan-ng/hfa384x.h
  @@ -1166,6 +1166,7 @@ typedef struct hfa384x_usbctlx {
  CTLX_STATE state;   /* Tracks running state */
   
  struct completion done;
  +
  volatile int reapable;  /* Food for the reaper task */
   
  ctlx_cmdcb_t cmdcb; /* Async command callback */
 
 What coding style issue does this fix?  It looks wrong to me.
 
 thanks,
 
 greg k-h

I used checkpatch.pl on the file and it returns WARNING: Missing a blank line 
after declarations.

I can't see anything specific in the CodingStyle file. Is this an error on 
checkpatch.pl's behalf?

Thanks,

Daniel L

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


Re: [PATCH] Staging: wlan-ng: hfa384x: Added a new line to fix coding style issue

2015-02-24 Thread Greg KH
On Tue, Feb 24, 2015 at 07:15:11PM +, Daniel Lockyer wrote:
 On Tue, Feb 24, 2015 at 09:56:39AM -0800, Greg KH wrote:
  On Tue, Feb 24, 2015 at 05:53:55PM +, Daniel Lockyer wrote:
   Fixed a coding style issue.
   
   Signed-off-by: Daniel Lockyer thisisdaniellock...@gmail.com
   ---
drivers/staging/wlan-ng/hfa384x.h | 1 +
1 file changed, 1 insertion(+)
   
   diff --git a/drivers/staging/wlan-ng/hfa384x.h 
   b/drivers/staging/wlan-ng/hfa384x.h
   index 8f20910..3bb8c1b 100644
   --- a/drivers/staging/wlan-ng/hfa384x.h
   +++ b/drivers/staging/wlan-ng/hfa384x.h
   @@ -1166,6 +1166,7 @@ typedef struct hfa384x_usbctlx {
 CTLX_STATE state;   /* Tracks running state */

 struct completion done;
   +
 volatile int reapable;  /* Food for the reaper task */

 ctlx_cmdcb_t cmdcb; /* Async command callback */
  
  What coding style issue does this fix?  It looks wrong to me.
  
  thanks,
  
  greg k-h
 
 I used checkpatch.pl on the file and it returns WARNING: Missing a
 blank line after declarations.
 
 I can't see anything specific in the CodingStyle file. Is this an
 error on checkpatch.pl's behalf?

Yes, older versions of checkpatch couldn't understand 'volatile', newer
versions should properly tell you that you need to delete the line after
reapable, not add one before.

Use your brain when reading checkpatch results, it's not always the
smartest thing, it's a perl script :)

thanks,

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


Re: [PATCH] Staging: wlan-ng: hfa384x: Added a new line to fix coding style issue

2015-02-24 Thread Daniel Lockyer
On Tue, Feb 24, 2015 at 11:21:37AM -0800, Greg KH wrote:
 On Tue, Feb 24, 2015 at 07:15:11PM +, Daniel Lockyer wrote:
  On Tue, Feb 24, 2015 at 09:56:39AM -0800, Greg KH wrote:
   On Tue, Feb 24, 2015 at 05:53:55PM +, Daniel Lockyer wrote:
Fixed a coding style issue.

Signed-off-by: Daniel Lockyer thisisdaniellock...@gmail.com
---
 drivers/staging/wlan-ng/hfa384x.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/staging/wlan-ng/hfa384x.h 
b/drivers/staging/wlan-ng/hfa384x.h
index 8f20910..3bb8c1b 100644
--- a/drivers/staging/wlan-ng/hfa384x.h
+++ b/drivers/staging/wlan-ng/hfa384x.h
@@ -1166,6 +1166,7 @@ typedef struct hfa384x_usbctlx {
CTLX_STATE state;   /* Tracks running state */
 
struct completion done;
+
volatile int reapable;  /* Food for the reaper task */
 
ctlx_cmdcb_t cmdcb; /* Async command callback */
   
   What coding style issue does this fix?  It looks wrong to me.
   
   thanks,
   
   greg k-h
  
  I used checkpatch.pl on the file and it returns WARNING: Missing a
  blank line after declarations.
  
  I can't see anything specific in the CodingStyle file. Is this an
  error on checkpatch.pl's behalf?
 
 Yes, older versions of checkpatch couldn't understand 'volatile', newer
 versions should properly tell you that you need to delete the line after
 reapable, not add one before.
 
 Use your brain when reading checkpatch results, it's not always the
 smartest thing, it's a perl script :)

Ah okay, I understand now! This was my first time sending a patch, I'll check 
it out more carefully next time. :)

Thanks for your help,
Daniel
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH v3 1/9] mfd: rtsx: replace TAB by SPC after #define

2015-02-24 Thread micky_ching
From: Micky Ching micky_ch...@realsil.com.cn

Re-format coding-style, using uniform SPC after #define keyword
instead of mixing using TAB and SPC.

Signed-off-by: Micky Ching micky_ch...@realsil.com.cn
Acked-by: Lee Jones lee.jo...@linaro.org
---
 include/linux/mfd/rtsx_pci.h | 254 +--
 1 file changed, 127 insertions(+), 127 deletions(-)

diff --git a/include/linux/mfd/rtsx_pci.h b/include/linux/mfd/rtsx_pci.h
index 0c12628..a9c2a14 100644
--- a/include/linux/mfd/rtsx_pci.h
+++ b/include/linux/mfd/rtsx_pci.h
@@ -175,9 +175,9 @@
 /* CARD_SHARE_MODE */
 #define CARD_SHARE_MASK0x0F
 #define CARD_SHARE_MULTI_LUN   0x00
-#defineCARD_SHARE_NORMAL   0x00
-#defineCARD_SHARE_48_SD0x04
-#defineCARD_SHARE_48_MS0x08
+#define CARD_SHARE_NORMAL  0x00
+#define CARD_SHARE_48_SD   0x04
+#define CARD_SHARE_48_MS   0x08
 /* CARD_SHARE_MODE for barossa */
 #define CARD_SHARE_BAROSSA_SD  0x01
 #define CARD_SHARE_BAROSSA_MS  0x02
@@ -249,76 +249,76 @@
 #define CD_AUTO_DISABLE0x40
 
 /* SD_STAT1 */
-#defineSD_CRC7_ERR 0x80
-#defineSD_CRC16_ERR0x40
-#defineSD_CRC_WRITE_ERR0x20
-#defineSD_CRC_WRITE_ERR_MASK   0x1C
-#defineGET_CRC_TIME_OUT0x02
-#defineSD_TUNING_COMPARE_ERR   0x01
+#define SD_CRC7_ERR0x80
+#define SD_CRC16_ERR   0x40
+#define SD_CRC_WRITE_ERR   0x20
+#define SD_CRC_WRITE_ERR_MASK  0x1C
+#define GET_CRC_TIME_OUT   0x02
+#define SD_TUNING_COMPARE_ERR  0x01
 
 /* SD_STAT2 */
-#defineSD_RSP_80CLK_TIMEOUT0x01
+#define SD_RSP_80CLK_TIMEOUT   0x01
 
 /* SD_BUS_STAT */
-#defineSD_CLK_TOGGLE_EN0x80
-#defineSD_CLK_FORCE_STOP   0x40
-#defineSD_DAT3_STATUS  0x10
-#defineSD_DAT2_STATUS  0x08
-#defineSD_DAT1_STATUS  0x04
-#defineSD_DAT0_STATUS  0x02
-#defineSD_CMD_STATUS   0x01
+#define SD_CLK_TOGGLE_EN   0x80
+#define SD_CLK_FORCE_STOP  0x40
+#define SD_DAT3_STATUS 0x10
+#define SD_DAT2_STATUS 0x08
+#define SD_DAT1_STATUS 0x04
+#define SD_DAT0_STATUS 0x02
+#define SD_CMD_STATUS  0x01
 
 /* SD_PAD_CTL */
-#defineSD_IO_USING_1V8 0x80
-#defineSD_IO_USING_3V3 0x7F
-#defineTYPE_A_DRIVING  0x00
-#defineTYPE_B_DRIVING  0x01
-#defineTYPE_C_DRIVING  0x02
-#defineTYPE_D_DRIVING  0x03
+#define SD_IO_USING_1V80x80
+#define SD_IO_USING_3V30x7F
+#define TYPE_A_DRIVING 0x00
+#define TYPE_B_DRIVING 0x01
+#define TYPE_C_DRIVING 0x02
+#define TYPE_D_DRIVING 0x03
 
 /* SD_SAMPLE_POINT_CTL */
-#defineDDR_FIX_RX_DAT  0x00
-#defineDDR_VAR_RX_DAT  0x80
-#defineDDR_FIX_RX_DAT_EDGE 0x00
-#defineDDR_FIX_RX_DAT_14_DELAY 0x40
-#defineDDR_FIX_RX_CMD  0x00
-#defineDDR_VAR_RX_CMD  0x20
-#defineDDR_FIX_RX_CMD_POS_EDGE 0x00
-#defineDDR_FIX_RX_CMD_14_DELAY 0x10
-#defineSD20_RX_POS_EDGE0x00
-#defineSD20_RX_14_DELAY0x08
+#define DDR_FIX_RX_DAT 0x00
+#define DDR_VAR_RX_DAT 0x80
+#define DDR_FIX_RX_DAT_EDGE0x00
+#define DDR_FIX_RX_DAT_14_DELAY0x40
+#define DDR_FIX_RX_CMD 0x00
+#define DDR_VAR_RX_CMD 0x20
+#define DDR_FIX_RX_CMD_POS_EDGE0x00
+#define DDR_FIX_RX_CMD_14_DELAY0x10
+#define SD20_RX_POS_EDGE   0x00
+#define SD20_RX_14_DELAY   0x08
 #define SD20_RX_SEL_MASK   0x08
 
 /* SD_PUSH_POINT_CTL */
-#defineDDR_FIX_TX_CMD_DAT  0x00
-#defineDDR_VAR_TX_CMD_DAT  0x80
-#defineDDR_FIX_TX_DAT_14_TSU   0x00
-#defineDDR_FIX_TX_DAT_12_TSU   0x40
-#defineDDR_FIX_TX_CMD_NEG_EDGE 0x00
-#defineDDR_FIX_TX_CMD_14_AHEAD 0x20
-#defineSD20_TX_NEG_EDGE0x00
-#defineSD20_TX_14_AHEAD0x10
+#define DDR_FIX_TX_CMD_DAT 0x00
+#define DDR_VAR_TX_CMD_DAT 0x80
+#define DDR_FIX_TX_DAT_14_TSU  0x00
+#define DDR_FIX_TX_DAT_12_TSU  0x40
+#define DDR_FIX_TX_CMD_NEG_EDGE

[PATCH v3 3/9] mfd: rtsx: update PETXCFG address

2015-02-24 Thread micky_ching
From: Micky Ching micky_ch...@realsil.com.cn

PETXCFG is defined at 0xFF03, the old 0xFE49 not used any more.

Signed-off-by: Micky Ching micky_ch...@realsil.com.cn
Acked-by: Lee Jones lee.jo...@linaro.org
---
 drivers/mfd/rts5227.c| 6 ++
 drivers/mfd/rts5249.c| 6 ++
 include/linux/mfd/rtsx_pci.h | 2 +-
 3 files changed, 5 insertions(+), 9 deletions(-)

diff --git a/drivers/mfd/rts5227.c b/drivers/mfd/rts5227.c
index 3240740..1f387d4 100644
--- a/drivers/mfd/rts5227.c
+++ b/drivers/mfd/rts5227.c
@@ -118,11 +118,9 @@ static int rts5227_extra_init_hw(struct rtsx_pcr *pcr)
rts5227_fill_driving(pcr, OUTPUT_3V3);
/* Configure force_clock_req */
if (pcr-flags  PCR_REVERSE_SOCKET)
-   rtsx_pci_add_cmd(pcr, WRITE_REG_CMD,
-   AUTOLOAD_CFG_BASE + 3, 0xB8, 0xB8);
+   rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PETXCFG, 0xB8, 0xB8);
else
-   rtsx_pci_add_cmd(pcr, WRITE_REG_CMD,
-   AUTOLOAD_CFG_BASE + 3, 0xB8, 0x88);
+   rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PETXCFG, 0xB8, 0x88);
rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PM_CTRL3, 0x10, 0x00);
 
return rtsx_pci_send_cmd(pcr, 100);
diff --git a/drivers/mfd/rts5249.c b/drivers/mfd/rts5249.c
index cf425cc..225ad55 100644
--- a/drivers/mfd/rts5249.c
+++ b/drivers/mfd/rts5249.c
@@ -116,11 +116,9 @@ static int rts5249_extra_init_hw(struct rtsx_pcr *pcr)
/* Configure driving */
rts5249_fill_driving(pcr, OUTPUT_3V3);
if (pcr-flags  PCR_REVERSE_SOCKET)
-   rtsx_pci_add_cmd(pcr, WRITE_REG_CMD,
-   AUTOLOAD_CFG_BASE + 3, 0xB0, 0xB0);
+   rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PETXCFG, 0xB0, 0xB0);
else
-   rtsx_pci_add_cmd(pcr, WRITE_REG_CMD,
-   AUTOLOAD_CFG_BASE + 3, 0xB0, 0x80);
+   rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PETXCFG, 0xB0, 0x80);
rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PM_CTRL3, 0x10, 0x00);
 
return rtsx_pci_send_cmd(pcr, 100);
diff --git a/include/linux/mfd/rtsx_pci.h b/include/linux/mfd/rtsx_pci.h
index e81f2bb..87cff60 100644
--- a/include/linux/mfd/rtsx_pci.h
+++ b/include/linux/mfd/rtsx_pci.h
@@ -572,7 +572,6 @@
 #define MSGTXDATA2 0xFE46
 #define MSGTXDATA3 0xFE47
 #define MSGTXCTL   0xFE48
-#define PETXCFG0xFE49
 #define LTR_CTL0xFE4A
 #define OBFF_CFG   0xFE4C
 
@@ -606,6 +605,7 @@
 #define DUMMY_REG_RESET_0  0xFE90
 
 #define AUTOLOAD_CFG_BASE  0xFF00
+#define PETXCFG0xFF03
 
 #define PM_CTRL1   0xFF44
 #define PM_CTRL2   0xFF45
-- 
1.9.1

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


[PATCH v3 4/9] mfd: rtsx: update driving settings

2015-02-24 Thread micky_ching
From: Micky Ching micky_ch...@realsil.com.cn

update card drive settings, This setting can be used for rts5249
rts524A and rts525A.

Signed-off-by: Micky Ching micky_ch...@realsil.com.cn
Acked-by: Lee Jones lee.jo...@linaro.org
---
 drivers/mfd/rts5249.c | 12 ++--
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/mfd/rts5249.c b/drivers/mfd/rts5249.c
index 225ad55..2fe2854 100644
--- a/drivers/mfd/rts5249.c
+++ b/drivers/mfd/rts5249.c
@@ -36,16 +36,16 @@ static u8 rts5249_get_ic_version(struct rtsx_pcr *pcr)
 static void rts5249_fill_driving(struct rtsx_pcr *pcr, u8 voltage)
 {
u8 driving_3v3[4][3] = {
-   {0x11, 0x11, 0x11},
+   {0x11, 0x11, 0x18},
{0x55, 0x55, 0x5C},
-   {0x99, 0x99, 0x92},
-   {0x99, 0x99, 0x92},
+   {0xFF, 0xFF, 0xFF},
+   {0x96, 0x96, 0x96},
};
u8 driving_1v8[4][3] = {
+   {0xC4, 0xC4, 0xC4},
{0x3C, 0x3C, 0x3C},
-   {0xB3, 0xB3, 0xB3},
{0xFE, 0xFE, 0xFE},
-   {0xC4, 0xC4, 0xC4},
+   {0xB3, 0xB3, 0xB3},
};
u8 (*driving)[3], drive_sel;
 
@@ -341,7 +341,7 @@ void rts5249_init_params(struct rtsx_pcr *pcr)
 
pcr-flags = 0;
pcr-card_drive_sel = RTSX_CARD_DRIVE_DEFAULT;
-   pcr-sd30_drive_sel_1v8 = CFG_DRIVER_TYPE_C;
+   pcr-sd30_drive_sel_1v8 = CFG_DRIVER_TYPE_B;
pcr-sd30_drive_sel_3v3 = CFG_DRIVER_TYPE_B;
pcr-aspm_en = ASPM_L1_EN;
pcr-tx_initial_phase = SET_CLOCK_PHASE(1, 29, 16);
-- 
1.9.1

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


[PATCH v3 2/9] mfd: rtsx: place register address and values togather

2015-02-24 Thread micky_ching
From: Micky Ching micky_ch...@realsil.com.cn

It is more readable to place register address and values define
togather. The values define add two leading space indicate belong
to the register address defined above.

Signed-off-by: Micky Ching micky_ch...@realsil.com.cn
Acked-by: Lee Jones lee.jo...@linaro.org
---
 include/linux/mfd/rtsx_pci.h | 836 +++
 1 file changed, 369 insertions(+), 467 deletions(-)

diff --git a/include/linux/mfd/rtsx_pci.h b/include/linux/mfd/rtsx_pci.h
index a9c2a14..e81f2bb 100644
--- a/include/linux/mfd/rtsx_pci.h
+++ b/include/linux/mfd/rtsx_pci.h
@@ -28,74 +28,72 @@
 
 #define MAX_RW_REG_CNT 1024
 
-/* PCI Operation Register Address */
 #define RTSX_HCBAR 0x00
 #define RTSX_HCBCTLR   0x04
+#define   STOP_CMD (0x01  28)
+#define   READ_REG_CMD 0
+#define   WRITE_REG_CMD1
+#define   CHECK_REG_CMD2
+
 #define RTSX_HDBAR 0x08
+#define   SG_INT   0x04
+#define   SG_END   0x02
+#define   SG_VALID 0x01
+#define   SG_NO_OP 0x00
+#define   SG_TRANS_DATA(0x02  4)
+#define   SG_LINK_DESC (0x03  4)
 #define RTSX_HDBCTLR   0x0C
+#define   SDMA_MODE0x00
+#define   ADMA_MODE(0x02  26)
+#define   STOP_DMA (0x01  28)
+#define   TRIG_DMA (0x01  31)
+
 #define RTSX_HAIMR 0x10
-#define RTSX_BIPR  0x14
-#define RTSX_BIER  0x18
+#define   HAIMR_TRANS_START(0x01  31)
+#define   HAIMR_READ   0x00
+#define   HAIMR_WRITE  (0x01  30)
+#define   HAIMR_READ_START (HAIMR_TRANS_START | HAIMR_READ)
+#define   HAIMR_WRITE_START(HAIMR_TRANS_START | HAIMR_WRITE)
+#define   HAIMR_TRANS_END  (HAIMR_TRANS_START)
 
-/* Host command buffer control register */
-#define STOP_CMD   (0x01  28)
-
-/* Host data buffer control register */
-#define SDMA_MODE  0x00
-#define ADMA_MODE  (0x02  26)
-#define STOP_DMA   (0x01  28)
-#define TRIG_DMA   (0x01  31)
-
-/* Host access internal memory register */
-#define HAIMR_TRANS_START  (0x01  31)
-#define HAIMR_READ 0x00
-#define HAIMR_WRITE(0x01  30)
-#define HAIMR_READ_START   (HAIMR_TRANS_START | HAIMR_READ)
-#define HAIMR_WRITE_START  (HAIMR_TRANS_START | HAIMR_WRITE)
-#define HAIMR_TRANS_END(HAIMR_TRANS_START)
-
-/* Bus interrupt pending register */
-#define CMD_DONE_INT   (1  31)
-#define DATA_DONE_INT  (1  30)
-#define TRANS_OK_INT   (1  29)
-#define TRANS_FAIL_INT (1  28)
-#define XD_INT (1  27)
-#define MS_INT (1  26)
-#define SD_INT (1  25)
-#define GPIO0_INT  (1  24)
-#define OC_INT (1  23)
-#define SD_WRITE_PROTECT   (1  19)
-#define XD_EXIST   (1  18)
-#define MS_EXIST   (1  17)
-#define SD_EXIST   (1  16)
-#define DELINK_INT GPIO0_INT
-#define MS_OC_INT  (1  23)
-#define SD_OC_INT  (1  22)
+#define RTSX_BIPR  0x14
+#define   CMD_DONE_INT (1  31)
+#define   DATA_DONE_INT(1  30)
+#define   TRANS_OK_INT (1  29)
+#define   TRANS_FAIL_INT   (1  28)
+#define   XD_INT   (1  27)
+#define   MS_INT   (1  26)
+#define   SD_INT   (1  25)
+#define   GPIO0_INT(1  24)
+#define   OC_INT   (1  23)
+#define   SD_WRITE_PROTECT (1  19)
+#define   XD_EXIST (1  18)
+#define   MS_EXIST (1  17)
+#define   SD_EXIST (1  16)
+#define   DELINK_INT   GPIO0_INT
+#define   MS_OC_INT(1  23)
+#define   SD_OC_INT(1  22)
 
 #define CARD_INT   (XD_INT | MS_INT | SD_INT)
 #define NEED_COMPLETE_INT  (DATA_DONE_INT | TRANS_OK_INT | TRANS_FAIL_INT)
 #define RTSX_INT   (CMD_DONE_INT | NEED_COMPLETE_INT | \
CARD_INT | GPIO0_INT | OC_INT)
-
 #define CARD_EXIST (XD_EXIST | MS_EXIST | SD_EXIST)
 
-/* Bus interrupt enable register */
-#define CMD_DONE_INT_EN(1  31)
-#define DATA_DONE_INT_EN   (1  30)
-#define TRANS_OK_INT_EN(1  29)

[PATCH v3 6/9] mfd: rtsx: remove LCTLR defination

2015-02-24 Thread micky_ching
From: Micky Ching micky_ch...@realsil.com.cn

To enable/disable ASPM we should find LINK CONTROL register
in PCI config space. All old chip use 0x80 address, but new
chip may use another address, so we using pci_find_capability()
to get LINK CONTROL address.

rtsx_gops.c was removed, we consider to put some common operations
to this file, but the actual thing is, only a group of chips
are in common ops1, and another group of chips in common ops2,
it is hard to decide put which ops into generic ops file.

Signed-off-by: Micky Ching micky_ch...@realsil.com.cn
Acked-by: Lee Jones lee.jo...@linaro.org
---
 drivers/mfd/Makefile |  2 +-
 drivers/mfd/rts5227.c|  2 +-
 drivers/mfd/rts5249.c|  3 +--
 drivers/mfd/rtsx_gops.c  | 37 -
 drivers/mfd/rtsx_pcr.c   | 22 +-
 include/linux/mfd/rtsx_pci.h | 10 +-
 6 files changed, 21 insertions(+), 55 deletions(-)
 delete mode 100644 drivers/mfd/rtsx_gops.c

diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile
index 53467e2..2cd7e74 100644
--- a/drivers/mfd/Makefile
+++ b/drivers/mfd/Makefile
@@ -13,7 +13,7 @@ obj-$(CONFIG_MFD_CROS_EC) += cros_ec.o
 obj-$(CONFIG_MFD_CROS_EC_I2C)  += cros_ec_i2c.o
 obj-$(CONFIG_MFD_CROS_EC_SPI)  += cros_ec_spi.o
 
-rtsx_pci-objs  := rtsx_pcr.o rtsx_gops.o rts5209.o rts5229.o 
rtl8411.o rts5227.o rts5249.o
+rtsx_pci-objs  := rtsx_pcr.o rts5209.o rts5229.o rtl8411.o 
rts5227.o rts5249.o
 obj-$(CONFIG_MFD_RTSX_PCI) += rtsx_pci.o
 obj-$(CONFIG_MFD_RTSX_USB) += rtsx_usb.o
 
diff --git a/drivers/mfd/rts5227.c b/drivers/mfd/rts5227.c
index 1f387d4..0c02831 100644
--- a/drivers/mfd/rts5227.c
+++ b/drivers/mfd/rts5227.c
@@ -130,7 +130,7 @@ static int rts5227_optimize_phy(struct rtsx_pcr *pcr)
 {
int err;
 
-   err = rtsx_gops_pm_reset(pcr);
+   err = rtsx_pci_write_register(pcr, PM_CTRL3, D3_DELINK_MODE_EN, 0x00);
if (err  0)
return err;
 
diff --git a/drivers/mfd/rts5249.c b/drivers/mfd/rts5249.c
index 8de8220..3c77058 100644
--- a/drivers/mfd/rts5249.c
+++ b/drivers/mfd/rts5249.c
@@ -119,7 +119,6 @@ static int rts5249_extra_init_hw(struct rtsx_pcr *pcr)
rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PETXCFG, 0xB0, 0xB0);
else
rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PETXCFG, 0xB0, 0x80);
-   rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PM_CTRL3, 0x10, 0x00);
 
return rtsx_pci_send_cmd(pcr, 100);
 }
@@ -128,7 +127,7 @@ static int rts5249_optimize_phy(struct rtsx_pcr *pcr)
 {
int err;
 
-   err = rtsx_gops_pm_reset(pcr);
+   err = rtsx_pci_write_register(pcr, PM_CTRL3, D3_DELINK_MODE_EN, 0x00);
if (err  0)
return err;
 
diff --git a/drivers/mfd/rtsx_gops.c b/drivers/mfd/rtsx_gops.c
deleted file mode 100644
index b1a98c6..000
--- a/drivers/mfd/rtsx_gops.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Driver for Realtek PCI-Express card reader
- *
- * Copyright(c) 2009-2013 Realtek Semiconductor Corp. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2, or (at your option) any
- * later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, see http://www.gnu.org/licenses/.
- *
- * Author:
- *   Micky Ching micky_ch...@realsil.com.cn
- */
-
-#include linux/mfd/rtsx_pci.h
-#include rtsx_pcr.h
-
-int rtsx_gops_pm_reset(struct rtsx_pcr *pcr)
-{
-   int err;
-
-   /* init aspm */
-   rtsx_pci_write_register(pcr, ASPM_FORCE_CTL, 0xFF, 0x00);
-   err = rtsx_pci_update_cfg_byte(pcr, LCTLR, ~LCTLR_ASPM_CTL_MASK, 0x00);
-   if (err  0)
-   return err;
-
-   /* reset PM_CTRL3 before send buffer cmd */
-   return rtsx_pci_write_register(pcr, PM_CTRL3, D3_DELINK_MODE_EN, 0x00);
-}
diff --git a/drivers/mfd/rtsx_pcr.c b/drivers/mfd/rtsx_pcr.c
index 30f7ca8..81b9c2c 100644
--- a/drivers/mfd/rtsx_pcr.c
+++ b/drivers/mfd/rtsx_pcr.c
@@ -63,6 +63,18 @@ static const struct pci_device_id rtsx_pci_ids[] = {
 
 MODULE_DEVICE_TABLE(pci, rtsx_pci_ids);
 
+static inline void rtsx_pci_enable_aspm(struct rtsx_pcr *pcr)
+{
+   rtsx_pci_update_cfg_byte(pcr, pcr-pcie_cap + PCI_EXP_LNKCTL,
+   0xFC, pcr-aspm_en);
+}
+
+static inline void rtsx_pci_disable_aspm(struct rtsx_pcr *pcr)
+{
+   rtsx_pci_update_cfg_byte(pcr, pcr-pcie_cap + PCI_EXP_LNKCTL,
+   0xFC, 0);
+}
+
 void rtsx_pci_start_run(struct rtsx_pcr *pcr)
 {
/* If pci device removed, don't queue idle work any more */
@@ -75,7 

[PATCH v3 9/9] mfd: rtsx: using pcr_dbg replace dev_dbg

2015-02-24 Thread micky_ching
From: Micky Ching micky_ch...@realsil.com.cn

pcr_dbg is a wrapper of dev_dbg, which can save some code,
and help to enable/disable debug message static.

Signed-off-by: Micky Ching micky_ch...@realsil.com.cn
Acked-by: Lee Jones lee.jo...@linaro.org
---
 drivers/mfd/rtl8411.c  | 11 +--
 drivers/mfd/rts5209.c  |  4 ++--
 drivers/mfd/rts5227.c  |  4 ++--
 drivers/mfd/rts5229.c  |  4 ++--
 drivers/mfd/rts5249.c  |  4 ++--
 drivers/mfd/rtsx_pcr.c | 49 ++---
 6 files changed, 35 insertions(+), 41 deletions(-)

diff --git a/drivers/mfd/rtl8411.c b/drivers/mfd/rtl8411.c
index fdd34c8..b3ae659 100644
--- a/drivers/mfd/rtl8411.c
+++ b/drivers/mfd/rtl8411.c
@@ -53,7 +53,7 @@ static void rtl8411_fetch_vendor_settings(struct rtsx_pcr 
*pcr)
u8 reg3 = 0;
 
rtsx_pci_read_config_dword(pcr, PCR_SETTING_REG1, reg1);
-   dev_dbg((pcr-pci-dev), Cfg 0x%x: 0x%x\n, PCR_SETTING_REG1, reg1);
+   pcr_dbg(pcr, Cfg 0x%x: 0x%x\n, PCR_SETTING_REG1, reg1);
 
if (!rtsx_vendor_setting_valid(reg1))
return;
@@ -65,7 +65,7 @@ static void rtl8411_fetch_vendor_settings(struct rtsx_pcr 
*pcr)
pcr-card_drive_sel |= rtsx_reg_to_card_drive_sel(reg1);
 
rtsx_pci_read_config_byte(pcr, PCR_SETTING_REG3, reg3);
-   dev_dbg((pcr-pci-dev), Cfg 0x%x: 0x%x\n, PCR_SETTING_REG3, reg3);
+   pcr_dbg(pcr, Cfg 0x%x: 0x%x\n, PCR_SETTING_REG3, reg3);
pcr-sd30_drive_sel_3v3 = rtl8411_reg_to_sd30_drive_sel_3v3(reg3);
 }
 
@@ -74,7 +74,7 @@ static void rtl8411b_fetch_vendor_settings(struct rtsx_pcr 
*pcr)
u32 reg = 0;
 
rtsx_pci_read_config_dword(pcr, PCR_SETTING_REG1, reg);
-   dev_dbg((pcr-pci-dev), Cfg 0x%x: 0x%x\n, PCR_SETTING_REG1, reg);
+   pcr_dbg(pcr, Cfg 0x%x: 0x%x\n, PCR_SETTING_REG1, reg);
 
if (!rtsx_vendor_setting_valid(reg))
return;
@@ -260,9 +260,8 @@ static unsigned int rtl8411_cd_deglitch(struct rtsx_pcr 
*pcr)
rtsx_pci_write_register(pcr, CARD_PWR_CTL,
BPP_POWER_MASK, BPP_POWER_OFF);
 
-   dev_dbg((pcr-pci-dev),
-   After CD deglitch, card_exist = 0x%x\n,
-   card_exist);
+   pcr_dbg(pcr, After CD deglitch, card_exist = 0x%x\n,
+   card_exist);
}
 
if (card_exist  MS_EXIST) {
diff --git a/drivers/mfd/rts5209.c b/drivers/mfd/rts5209.c
index cb04174..373e253 100644
--- a/drivers/mfd/rts5209.c
+++ b/drivers/mfd/rts5209.c
@@ -38,7 +38,7 @@ static void rts5209_fetch_vendor_settings(struct rtsx_pcr 
*pcr)
u32 reg;
 
rtsx_pci_read_config_dword(pcr, PCR_SETTING_REG1, reg);
-   dev_dbg((pcr-pci-dev), Cfg 0x%x: 0x%x\n, PCR_SETTING_REG1, reg);
+   pcr_dbg(pcr, Cfg 0x%x: 0x%x\n, PCR_SETTING_REG1, reg);
 
if (rts5209_vendor_setting1_valid(reg)) {
if (rts5209_reg_check_ms_pmos(reg))
@@ -47,7 +47,7 @@ static void rts5209_fetch_vendor_settings(struct rtsx_pcr 
*pcr)
}
 
rtsx_pci_read_config_dword(pcr, PCR_SETTING_REG2, reg);
-   dev_dbg((pcr-pci-dev), Cfg 0x%x: 0x%x\n, PCR_SETTING_REG2, reg);
+   pcr_dbg(pcr, Cfg 0x%x: 0x%x\n, PCR_SETTING_REG2, reg);
 
if (rts5209_vendor_setting2_valid(reg)) {
pcr-sd30_drive_sel_1v8 =
diff --git a/drivers/mfd/rts5227.c b/drivers/mfd/rts5227.c
index 0c02831..ce012d7 100644
--- a/drivers/mfd/rts5227.c
+++ b/drivers/mfd/rts5227.c
@@ -63,7 +63,7 @@ static void rts5227_fetch_vendor_settings(struct rtsx_pcr 
*pcr)
u32 reg;
 
rtsx_pci_read_config_dword(pcr, PCR_SETTING_REG1, reg);
-   dev_dbg((pcr-pci-dev), Cfg 0x%x: 0x%x\n, PCR_SETTING_REG1, reg);
+   pcr_dbg(pcr, Cfg 0x%x: 0x%x\n, PCR_SETTING_REG1, reg);
 
if (!rtsx_vendor_setting_valid(reg))
return;
@@ -74,7 +74,7 @@ static void rts5227_fetch_vendor_settings(struct rtsx_pcr 
*pcr)
pcr-card_drive_sel |= rtsx_reg_to_card_drive_sel(reg);
 
rtsx_pci_read_config_dword(pcr, PCR_SETTING_REG2, reg);
-   dev_dbg((pcr-pci-dev), Cfg 0x%x: 0x%x\n, PCR_SETTING_REG2, reg);
+   pcr_dbg(pcr, Cfg 0x%x: 0x%x\n, PCR_SETTING_REG2, reg);
pcr-sd30_drive_sel_3v3 = rtsx_reg_to_sd30_drive_sel_3v3(reg);
if (rtsx_reg_check_reverse_socket(reg))
pcr-flags |= PCR_REVERSE_SOCKET;
diff --git a/drivers/mfd/rts5229.c b/drivers/mfd/rts5229.c
index 6353f5d..ace4538 100644
--- a/drivers/mfd/rts5229.c
+++ b/drivers/mfd/rts5229.c
@@ -38,7 +38,7 @@ static void rts5229_fetch_vendor_settings(struct rtsx_pcr 
*pcr)
u32 reg;
 
rtsx_pci_read_config_dword(pcr, PCR_SETTING_REG1, reg);
-   dev_dbg((pcr-pci-dev), Cfg 0x%x: 0x%x\n, PCR_SETTING_REG1, reg);
+   pcr_dbg(pcr, Cfg 0x%x: 0x%x\n, PCR_SETTING_REG1, reg);
 
if (!rtsx_vendor_setting_valid(reg))
return;
@@ -50,7 +50,7 @@ static void rts5229_fetch_vendor_settings(struct rtsx_pcr 
*pcr)

[PATCH v3 7/9] mfd: rtsx: add support for rts524A

2015-02-24 Thread micky_ching
From: Micky Ching micky_ch...@realsil.com.cn

add support for new chip rts524A.

Signed-off-by: Micky Ching micky_ch...@realsil.com.cn
---
 drivers/mfd/rts5249.c| 186 ---
 drivers/mfd/rtsx_pcr.c   |  25 +-
 drivers/mfd/rtsx_pcr.h   |   7 ++
 include/linux/mfd/rtsx_pci.h | 132 +-
 4 files changed, 318 insertions(+), 32 deletions(-)

diff --git a/drivers/mfd/rts5249.c b/drivers/mfd/rts5249.c
index 3c77058..32be803 100644
--- a/drivers/mfd/rts5249.c
+++ b/drivers/mfd/rts5249.c
@@ -65,15 +65,17 @@ static void rts5249_fill_driving(struct rtsx_pcr *pcr, u8 
voltage)
0xFF, driving[drive_sel][2]);
 }
 
-static void rts5249_fetch_vendor_settings(struct rtsx_pcr *pcr)
+static void rtsx_base_fetch_vendor_settings(struct rtsx_pcr *pcr)
 {
u32 reg;
 
rtsx_pci_read_config_dword(pcr, PCR_SETTING_REG1, reg);
dev_dbg((pcr-pci-dev), Cfg 0x%x: 0x%x\n, PCR_SETTING_REG1, reg);
 
-   if (!rtsx_vendor_setting_valid(reg))
+   if (!rtsx_vendor_setting_valid(reg)) {
+   pcr_dbg(pcr, skip fetch vendor setting\n);
return;
+   }
 
pcr-aspm_en = rtsx_reg_to_aspm(reg);
pcr-sd30_drive_sel_1v8 = rtsx_reg_to_sd30_drive_sel_1v8(reg);
@@ -87,7 +89,7 @@ static void rts5249_fetch_vendor_settings(struct rtsx_pcr 
*pcr)
pcr-flags |= PCR_REVERSE_SOCKET;
 }
 
-static void rts5249_force_power_down(struct rtsx_pcr *pcr, u8 pm_state)
+static void rtsx_base_force_power_down(struct rtsx_pcr *pcr, u8 pm_state)
 {
/* Set relink_time to 0 */
rtsx_pci_write_register(pcr, AUTOLOAD_CFG_BASE + 1, 0xFF, 0);
@@ -95,7 +97,8 @@ static void rts5249_force_power_down(struct rtsx_pcr *pcr, u8 
pm_state)
rtsx_pci_write_register(pcr, AUTOLOAD_CFG_BASE + 3, 0x01, 0);
 
if (pm_state == HOST_ENTER_S3)
-   rtsx_pci_write_register(pcr, PM_CTRL3, 0x10, 0x10);
+   rtsx_pci_write_register(pcr, pcr-reg_pm_ctrl3,
+   D3_DELINK_MODE_EN, D3_DELINK_MODE_EN);
 
rtsx_pci_write_register(pcr, FPDCTL, 0x03, 0x03);
 }
@@ -104,6 +107,8 @@ static int rts5249_extra_init_hw(struct rtsx_pcr *pcr)
 {
rtsx_pci_init_cmd(pcr);
 
+   /* Rest L1SUB Config */
+   rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, L1SUB_CONFIG3, 0xFF, 0x00);
/* Configure GPIO as output */
rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, GPIO_CTL, 0x02, 0x02);
/* Reset ASPM state to default value */
@@ -189,27 +194,27 @@ static int rts5249_optimize_phy(struct rtsx_pcr *pcr)
PHY_TUNE_TUNED12 | PHY_TUNE_TUNEA12);
 }
 
-static int rts5249_turn_on_led(struct rtsx_pcr *pcr)
+static int rtsx_base_turn_on_led(struct rtsx_pcr *pcr)
 {
return rtsx_pci_write_register(pcr, GPIO_CTL, 0x02, 0x02);
 }
 
-static int rts5249_turn_off_led(struct rtsx_pcr *pcr)
+static int rtsx_base_turn_off_led(struct rtsx_pcr *pcr)
 {
return rtsx_pci_write_register(pcr, GPIO_CTL, 0x02, 0x00);
 }
 
-static int rts5249_enable_auto_blink(struct rtsx_pcr *pcr)
+static int rtsx_base_enable_auto_blink(struct rtsx_pcr *pcr)
 {
return rtsx_pci_write_register(pcr, OLT_LED_CTL, 0x08, 0x08);
 }
 
-static int rts5249_disable_auto_blink(struct rtsx_pcr *pcr)
+static int rtsx_base_disable_auto_blink(struct rtsx_pcr *pcr)
 {
return rtsx_pci_write_register(pcr, OLT_LED_CTL, 0x08, 0x00);
 }
 
-static int rts5249_card_power_on(struct rtsx_pcr *pcr, int card)
+static int rtsx_base_card_power_on(struct rtsx_pcr *pcr, int card)
 {
int err;
 
@@ -236,7 +241,7 @@ static int rts5249_card_power_on(struct rtsx_pcr *pcr, int 
card)
return 0;
 }
 
-static int rts5249_card_power_off(struct rtsx_pcr *pcr, int card)
+static int rtsx_base_card_power_off(struct rtsx_pcr *pcr, int card)
 {
rtsx_pci_init_cmd(pcr);
rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_PWR_CTL,
@@ -246,22 +251,35 @@ static int rts5249_card_power_off(struct rtsx_pcr *pcr, 
int card)
return rtsx_pci_send_cmd(pcr, 100);
 }
 
-static int rts5249_switch_output_voltage(struct rtsx_pcr *pcr, u8 voltage)
+static int rtsx_base_switch_output_voltage(struct rtsx_pcr *pcr, u8 voltage)
 {
int err;
+   u16 append;
 
-   if (voltage == OUTPUT_3V3) {
-   err = rtsx_pci_write_phy_register(pcr, PHY_TUNE, 0x4FC0 | 0x24);
+   switch (voltage) {
+   case OUTPUT_3V3:
+   err = rtsx_pci_update_phy(pcr, PHY_TUNE, PHY_TUNE_VOLTAGE_MASK,
+   PHY_TUNE_VOLTAGE_3V3);
if (err  0)
return err;
-   } else if (voltage == OUTPUT_1V8) {
-   err = rtsx_pci_write_phy_register(pcr, PHY_BACR, 0x3C02);
+   break;
+   case OUTPUT_1V8:
+   append = PHY_TUNE_D18_1V8;
+   if (CHK_PCI_PID(pcr, 0x5249)) {
+   err = rtsx_pci_update_phy(pcr, PHY_BACR,
+   

[PATCH v3 5/9] mfd: rtsx: update phy register

2015-02-24 Thread micky_ching
From: Micky Ching micky_ch...@realsil.com.cn

Update some phy register name and value for rts5249,
the updated value makes chip more stable on some platform.

Signed-off-by: Micky Ching micky_ch...@realsil.com.cn
---
 drivers/mfd/rts5249.c|  29 +++-
 include/linux/mfd/rtsx_pci.h | 109 ++-
 2 files changed, 72 insertions(+), 66 deletions(-)

diff --git a/drivers/mfd/rts5249.c b/drivers/mfd/rts5249.c
index 2fe2854..8de8220 100644
--- a/drivers/mfd/rts5249.c
+++ b/drivers/mfd/rts5249.c
@@ -132,11 +132,12 @@ static int rts5249_optimize_phy(struct rtsx_pcr *pcr)
if (err  0)
return err;
 
-   err = rtsx_pci_write_phy_register(pcr, PHY_REG_REV,
-   PHY_REG_REV_RESV | PHY_REG_REV_RXIDLE_LATCHED |
-   PHY_REG_REV_P1_EN | PHY_REG_REV_RXIDLE_EN |
-   PHY_REG_REV_RX_PWST | PHY_REG_REV_CLKREQ_DLY_TIMER_1_0 |
-   PHY_REG_REV_STOP_CLKRD | PHY_REG_REV_STOP_CLKWR);
+   err = rtsx_pci_write_phy_register(pcr, PHY_REV,
+   PHY_REV_RESV | PHY_REV_RXIDLE_LATCHED |
+   PHY_REV_P1_EN | PHY_REV_RXIDLE_EN |
+   PHY_REV_CLKREQ_TX_EN | PHY_REV_RX_PWST |
+   PHY_REV_CLKREQ_DT_1_0 | PHY_REV_STOP_CLKRD |
+   PHY_REV_STOP_CLKWR);
if (err  0)
return err;
 
@@ -147,19 +148,21 @@ static int rts5249_optimize_phy(struct rtsx_pcr *pcr)
PHY_BPCR_IB_FILTER | PHY_BPCR_CMIRROR_EN);
if (err  0)
return err;
+
err = rtsx_pci_write_phy_register(pcr, PHY_PCR,
PHY_PCR_FORCE_CODE | PHY_PCR_OOBS_CALI_50 |
PHY_PCR_OOBS_VCM_08 | PHY_PCR_OOBS_SEN_90 |
-   PHY_PCR_RSSI_EN);
+   PHY_PCR_RSSI_EN | PHY_PCR_RX10K);
if (err  0)
return err;
+
err = rtsx_pci_write_phy_register(pcr, PHY_RCR2,
PHY_RCR2_EMPHASE_EN | PHY_RCR2_NADJR |
-   PHY_RCR2_CDR_CP_10 | PHY_RCR2_CDR_SR_2 |
-   PHY_RCR2_FREQSEL_12 | PHY_RCR2_CPADJEN |
-   PHY_RCR2_CDR_SC_8 | PHY_RCR2_CALIB_LATE);
+   PHY_RCR2_CDR_SR_2 | PHY_RCR2_FREQSEL_12 |
+   PHY_RCR2_CDR_SC_12P | PHY_RCR2_CALIB_LATE);
if (err  0)
return err;
+
err = rtsx_pci_write_phy_register(pcr, PHY_FLD4,
PHY_FLD4_FLDEN_SEL | PHY_FLD4_REQ_REF |
PHY_FLD4_RXAMP_OFF | PHY_FLD4_REQ_ADDA |
@@ -167,11 +170,12 @@ static int rts5249_optimize_phy(struct rtsx_pcr *pcr)
PHY_FLD4_BER_CHK_EN);
if (err  0)
return err;
-   err = rtsx_pci_write_phy_register(pcr, PHY_RDR, PHY_RDR_RXDSEL_1_9);
+   err = rtsx_pci_write_phy_register(pcr, PHY_RDR,
+   PHY_RDR_RXDSEL_1_9 | PHY_SSC_AUTO_PWD);
if (err  0)
return err;
err = rtsx_pci_write_phy_register(pcr, PHY_RCR1,
-   PHY_RCR1_ADP_TIME | PHY_RCR1_VCO_COARSE);
+   PHY_RCR1_ADP_TIME_4 | PHY_RCR1_VCO_COARSE);
if (err  0)
return err;
err = rtsx_pci_write_phy_register(pcr, PHY_FLD3,
@@ -179,10 +183,11 @@ static int rts5249_optimize_phy(struct rtsx_pcr *pcr)
PHY_FLD3_RXDELINK);
if (err  0)
return err;
+
return rtsx_pci_write_phy_register(pcr, PHY_TUNE,
PHY_TUNE_TUNEREF_1_0 | PHY_TUNE_VBGSEL_1252 |
PHY_TUNE_SDBUS_33 | PHY_TUNE_TUNED18 |
-   PHY_TUNE_TUNED12);
+   PHY_TUNE_TUNED12 | PHY_TUNE_TUNEA12);
 }
 
 static int rts5249_turn_on_led(struct rtsx_pcr *pcr)
diff --git a/include/linux/mfd/rtsx_pci.h b/include/linux/mfd/rtsx_pci.h
index 87cff60..0103210 100644
--- a/include/linux/mfd/rtsx_pci.h
+++ b/include/linux/mfd/rtsx_pci.h
@@ -630,16 +630,47 @@
 
 /* Phy register */
 #define PHY_PCR0x00
+#define   PHY_PCR_FORCE_CODE   0xB000
+#define   PHY_PCR_OOBS_CALI_50 0x0800
+#define   PHY_PCR_OOBS_VCM_08  0x0200
+#define   PHY_PCR_OOBS_SEN_90  0x0040
+#define   PHY_PCR_RSSI_EN  0x0002
+#define   PHY_PCR_RX10K0x0001
+
 #define PHY_RCR0   0x01
 #define PHY_RCR1   0x02
+#define   PHY_RCR1_ADP_TIME_4  0x0400
+#define   PHY_RCR1_VCO_COARSE  0x001F
+
 #define PHY_RCR2   0x03
+#define   PHY_RCR2_EMPHASE_EN  0x8000
+#define   PHY_RCR2_NADJR   0x4000
+#define   PHY_RCR2_CDR_SR_20x0100
+#define   PHY_RCR2_FREQSEL_12  0x0040
+#define   PHY_RCR2_CDR_SC_12P  0x0010
+#define   PHY_RCR2_CALIB_LATE  0x0002
+
 #define PHY_RTCR  

[PATCH v3 8/9] mfd: rtsx: add support for rts525A

2015-02-24 Thread micky_ching
From: Micky Ching micky_ch...@realsil.com.cn

add support for new chip rts525A.

Signed-off-by: Micky Ching micky_ch...@realsil.com.cn
---
 drivers/mfd/rts5249.c| 103 +++
 drivers/mfd/rtsx_pcr.c   |  13 --
 drivers/mfd/rtsx_pcr.h   |   1 +
 include/linux/mfd/rtsx_pci.h |  15 +++
 4 files changed, 129 insertions(+), 3 deletions(-)

diff --git a/drivers/mfd/rts5249.c b/drivers/mfd/rts5249.c
index 32be803..d1ff32f 100644
--- a/drivers/mfd/rts5249.c
+++ b/drivers/mfd/rts5249.c
@@ -487,3 +487,106 @@ void rts524a_init_params(struct rtsx_pcr *pcr)
pcr-ops = rts524a_pcr_ops;
 }
 
+static int rts525a_card_power_on(struct rtsx_pcr *pcr, int card)
+{
+   rtsx_pci_write_register(pcr, LDO_VCC_CFG1,
+   LDO_VCC_TUNE_MASK, LDO_VCC_3V3);
+   return rtsx_base_card_power_on(pcr, card);
+}
+
+static int rts525a_switch_output_voltage(struct rtsx_pcr *pcr, u8 voltage)
+{
+   switch (voltage) {
+   case OUTPUT_3V3:
+   rtsx_pci_write_register(pcr, LDO_CONFIG2,
+   LDO_D3318_MASK, LDO_D3318_33V);
+   rtsx_pci_write_register(pcr, SD_PAD_CTL, SD_IO_USING_1V8, 0);
+   break;
+   case OUTPUT_1V8:
+   rtsx_pci_write_register(pcr, LDO_CONFIG2,
+   LDO_D3318_MASK, LDO_D3318_18V);
+   rtsx_pci_write_register(pcr, SD_PAD_CTL, SD_IO_USING_1V8,
+   SD_IO_USING_1V8);
+   break;
+   default:
+   return -EINVAL;
+   }
+
+   rtsx_pci_init_cmd(pcr);
+   rts5249_fill_driving(pcr, voltage);
+   return rtsx_pci_send_cmd(pcr, 100);
+}
+
+static int rts525a_optimize_phy(struct rtsx_pcr *pcr)
+{
+   int err;
+
+   err = rtsx_pci_write_register(pcr, RTS524A_PM_CTRL3,
+   D3_DELINK_MODE_EN, 0x00);
+   if (err  0)
+   return err;
+
+   rtsx_pci_write_phy_register(pcr, _PHY_FLD0,
+   _PHY_FLD0_CLK_REQ_20C | _PHY_FLD0_RX_IDLE_EN |
+   _PHY_FLD0_BIT_ERR_RSTN | _PHY_FLD0_BER_COUNT |
+   _PHY_FLD0_BER_TIMER | _PHY_FLD0_CHECK_EN);
+
+   rtsx_pci_write_phy_register(pcr, _PHY_ANA03,
+   _PHY_ANA03_TIMER_MAX | _PHY_ANA03_OOBS_DEB_EN |
+   _PHY_CMU_DEBUG_EN);
+
+   if (is_version(pcr, 0x525A, IC_VER_A))
+   rtsx_pci_write_phy_register(pcr, _PHY_REV0,
+   _PHY_REV0_FILTER_OUT | _PHY_REV0_CDR_BYPASS_PFD |
+   _PHY_REV0_CDR_RX_IDLE_BYPASS);
+
+   return 0;
+}
+
+static int rts525a_extra_init_hw(struct rtsx_pcr *pcr)
+{
+   rts5249_extra_init_hw(pcr);
+
+   rtsx_pci_write_register(pcr, PCLK_CTL, PCLK_MODE_SEL, PCLK_MODE_SEL);
+   if (is_version(pcr, 0x525A, IC_VER_A)) {
+   rtsx_pci_write_register(pcr, L1SUB_CONFIG2,
+   L1SUB_AUTO_CFG, L1SUB_AUTO_CFG);
+   rtsx_pci_write_register(pcr, RREF_CFG,
+   RREF_VBGSEL_MASK, RREF_VBGSEL_1V25);
+   rtsx_pci_write_register(pcr, LDO_VIO_CFG,
+   LDO_VIO_TUNE_MASK, LDO_VIO_1V7);
+   rtsx_pci_write_register(pcr, LDO_DV12S_CFG,
+   LDO_D12_TUNE_MASK, LDO_D12_TUNE_DF);
+   rtsx_pci_write_register(pcr, LDO_AV12S_CFG,
+   LDO_AV12S_TUNE_MASK, LDO_AV12S_TUNE_DF);
+   rtsx_pci_write_register(pcr, LDO_VCC_CFG0,
+   LDO_VCC_LMTVTH_MASK, LDO_VCC_LMTVTH_2A);
+   rtsx_pci_write_register(pcr, OOBS_CONFIG,
+   OOBS_AUTOK_DIS | OOBS_VAL_MASK, 0x89);
+   }
+
+   return 0;
+}
+
+static const struct pcr_ops rts525a_pcr_ops = {
+   .fetch_vendor_settings = rtsx_base_fetch_vendor_settings,
+   .extra_init_hw = rts525a_extra_init_hw,
+   .optimize_phy = rts525a_optimize_phy,
+   .turn_on_led = rtsx_base_turn_on_led,
+   .turn_off_led = rtsx_base_turn_off_led,
+   .enable_auto_blink = rtsx_base_enable_auto_blink,
+   .disable_auto_blink = rtsx_base_disable_auto_blink,
+   .card_power_on = rts525a_card_power_on,
+   .card_power_off = rtsx_base_card_power_off,
+   .switch_output_voltage = rts525a_switch_output_voltage,
+   .force_power_down = rtsx_base_force_power_down,
+};
+
+void rts525a_init_params(struct rtsx_pcr *pcr)
+{
+   rts5249_init_params(pcr);
+
+   pcr-reg_pm_ctrl3 = RTS524A_PM_CTRL3;
+   pcr-ops = rts525a_pcr_ops;
+}
+
diff --git a/drivers/mfd/rtsx_pcr.c b/drivers/mfd/rtsx_pcr.c
index e6d97ad..433cb41 100644
--- a/drivers/mfd/rtsx_pcr.c
+++ b/drivers/mfd/rtsx_pcr.c
@@ -59,6 +59,7 @@ static const struct pci_device_id rtsx_pci_ids[] = {
{ PCI_DEVICE(0x10EC, 0x5287), PCI_CLASS_OTHERS  16, 0xFF },
{ PCI_DEVICE(0x10EC, 0x5286), PCI_CLASS_OTHERS  16, 0xFF },
{ PCI_DEVICE(0x10EC, 0x524A), PCI_CLASS_OTHERS  16, 0xFF },
+   { PCI_DEVICE(0x10EC, 0x525A), PCI_CLASS_OTHERS  16, 0xFF },
   

[PATCH v3 0/9] mfd: rtsx: add support for new rts524A and rts525A

2015-02-24 Thread micky_ching
From: Micky Ching micky_ch...@realsil.com.cn

v3:
- define member pcr-reg_pm_ctrl3 for PM_CTRL3 address
- update phy register without change the indent
- define macro for switch output voltage

resend:
- add lee jones ack for some patch.
v2:
- remove debug info when access failed.
- using macro list for phy register init.
- rename function for multi chip prefix with rtsx_base_
- save pcie_cap offset when init chip, not calling pci_find_capacity()
  every time.
- add pcr-ops: write_phy/read_phy for special chip.

This patchset including re-format some coding-style and add two new chip
rts524A and rts525A.

Micky Ching (9):
  mfd: rtsx: replace TAB by SPC after #define
  mfd: rtsx: place register address and values togather
  mfd: rtsx: update PETXCFG address
  mfd: rtsx: update driving settings
  mfd: rtsx: update phy register
  mfd: rtsx: remove LCTLR defination
  mfd: rtsx: add support for rts524A
  mfd: rtsx: add support for rts525A
  mfd: rtsx: using pcr_dbg replace dev_dbg

 drivers/mfd/Makefile |2 +-
 drivers/mfd/rtl8411.c|   11 +-
 drivers/mfd/rts5209.c|4 +-
 drivers/mfd/rts5227.c|   12 +-
 drivers/mfd/rts5229.c|4 +-
 drivers/mfd/rts5249.c|  343 +++--
 drivers/mfd/rtsx_gops.c  |   37 --
 drivers/mfd/rtsx_pcr.c   |  109 +++--
 drivers/mfd/rtsx_pcr.h   |8 +
 include/linux/mfd/rtsx_pci.h | 1116 ++
 10 files changed, 961 insertions(+), 685 deletions(-)
 delete mode 100644 drivers/mfd/rtsx_gops.c

-- 
1.9.1

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


Re: [RESEND PATCH v2 7/9] mfd: rtsx: add support for rts524A

2015-02-24 Thread Lee Jones
On Wed, 25 Feb 2015, 敬锐 wrote:

 
 On 02/16/2015 10:28 PM, Lee Jones wrote:
 
  +static int rts524a_optimize_phy(struct rtsx_pcr *pcr)
  +{
  +   int err;
  +
  +   err = rtsx_pci_write_register(pcr, RTS524A_PM_CTRL3,
  +   D3_DELINK_MODE_EN, 0x00);
  +   if (err  0)
  +   return err;
  +
  +   rtsx_pci_write_phy_register(pcr, PHY_PCR,
  +   PHY_PCR_FORCE_CODE | PHY_PCR_OOBS_CALI_50 |
  +   PHY_PCR_OOBS_VCM_08 | PHY_PCR_OOBS_SEN_90 | PHY_PCR_RSSI_EN);
  +   rtsx_pci_write_phy_register(pcr, PHY_SSCCR3,
  +   PHY_SSCCR3_STEP_IN | PHY_SSCCR3_CHECK_DELAY);
  +
  +   if (is_version(pcr, 0x524A, IC_VER_A)) {
  +   rtsx_pci_write_phy_register(pcr, PHY_SSCCR3,
  +   PHY_SSCCR3_STEP_IN | PHY_SSCCR3_CHECK_DELAY);
  +   rtsx_pci_write_phy_register(pcr, PHY_SSCCR2,
  +   PHY_SSCCR2_PLL_NCODE | PHY_SSCCR2_TIME0 |
  +   PHY_SSCCR2_TIME2_WIDTH);
  +   rtsx_pci_write_phy_register(pcr, PHY_ANA1A,
  +   PHY_ANA1A_TXR_LOOPBACK | PHY_ANA1A_RXT_BIST |
  +   PHY_ANA1A_TXR_BIST | PHY_ANA1A_REV);
  +   rtsx_pci_write_phy_register(pcr, PHY_ANA1D,
  +   PHY_ANA1D_DEBUG_ADDR);
  +   rtsx_pci_write_phy_register(pcr, PHY_DIG1E,
  +   PHY_DIG1E_REV | PHY_DIG1E_D0_X_D1 |
  +   PHY_DIG1E_RX_ON_HOST | PHY_DIG1E_RCLK_REF_HOST |
  +   PHY_DIG1E_RCLK_TX_EN_KEEP |
  +   PHY_DIG1E_RCLK_TX_TERM_KEEP |
  +   PHY_DIG1E_RCLK_RX_EIDLE_ON | PHY_DIG1E_TX_TERM_KEEP |
  +   PHY_DIG1E_RX_TERM_KEEP | PHY_DIG1E_TX_EN_KEEP |
  +   PHY_DIG1E_RX_EN_KEEP);
  +   }
  +
  +   rtsx_pci_write_phy_register(pcr, PHY_ANA08,
  +   PHY_ANA08_RX_EQ_DCGAIN | PHY_ANA08_SEL_RX_EN |
  +   PHY_ANA08_RX_EQ_VAL | PHY_ANA08_SCP | PHY_ANA08_SEL_IPI);
  To the uninitiated this function is mostly randomness.  How about some
  nice comments to illuminate?
 I'm not clear with these setting either, it is used to fix some phy 
 setting, the default phy setting
 it not stable on some special platform, so we have to modify them by driver,
 newer version of chip will change its default value to more stable 
 configure, so some value is
 no need to setting for Version B/C...

That doesn't help me in any way.  Use the datasheet, look-up the
values and insert a nice, succinct explanation of what you're doing
and why it's required please.

-- 
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH 3/3] Hal8188ERateAdaptive.c : Expression is always false because 'else if' condition matches previous condition at line 404.

2015-02-24 Thread Dan Carpenter
On Tue, Feb 24, 2015 at 11:00:31PM +0200, Ameen Ali wrote:
 else if at line 406 has the same condition as the else if at line 404.
 

The changelog should really say why you think 0x5 is correct.  Could you
update and resend?

regards,
dan carpenter

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


[PATCH] staging: dgnc: use min_t instead of min

2015-02-24 Thread Salah Triki
This fixes the following checkpatch.pl warnings:
WARNING: min() should probably be min_t()
---
 drivers/staging/dgnc/dgnc_neo.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/staging/dgnc/dgnc_neo.c b/drivers/staging/dgnc/dgnc_neo.c
index c9a8a98..1268aa9 100644
--- a/drivers/staging/dgnc/dgnc_neo.c
+++ b/drivers/staging/dgnc/dgnc_neo.c
@@ -1203,7 +1203,7 @@ static void neo_copy_data_from_uart_to_queue(struct 
channel_t *ch)
 * IBM pSeries platform.
 * 15 bytes max appears to be the magic number.
 */
-   n = min((uint) n, (uint) 12);
+   n = min_t(uint, n, 12);
 
/*
 * Since we are grabbing the linestatus register, which
-- 
1.9.1

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


Re: [RESEND PATCH v2 7/9] mfd: rtsx: add support for rts524A

2015-02-24 Thread 敬锐

On 02/16/2015 10:28 PM, Lee Jones wrote:

 +static int rts524a_optimize_phy(struct rtsx_pcr *pcr)
 +{
 + int err;
 +
 + err = rtsx_pci_write_register(pcr, RTS524A_PM_CTRL3,
 + D3_DELINK_MODE_EN, 0x00);
 + if (err  0)
 + return err;
 +
 + rtsx_pci_write_phy_register(pcr, PHY_PCR,
 + PHY_PCR_FORCE_CODE | PHY_PCR_OOBS_CALI_50 |
 + PHY_PCR_OOBS_VCM_08 | PHY_PCR_OOBS_SEN_90 | PHY_PCR_RSSI_EN);
 + rtsx_pci_write_phy_register(pcr, PHY_SSCCR3,
 + PHY_SSCCR3_STEP_IN | PHY_SSCCR3_CHECK_DELAY);
 +
 + if (is_version(pcr, 0x524A, IC_VER_A)) {
 + rtsx_pci_write_phy_register(pcr, PHY_SSCCR3,
 + PHY_SSCCR3_STEP_IN | PHY_SSCCR3_CHECK_DELAY);
 + rtsx_pci_write_phy_register(pcr, PHY_SSCCR2,
 + PHY_SSCCR2_PLL_NCODE | PHY_SSCCR2_TIME0 |
 + PHY_SSCCR2_TIME2_WIDTH);
 + rtsx_pci_write_phy_register(pcr, PHY_ANA1A,
 + PHY_ANA1A_TXR_LOOPBACK | PHY_ANA1A_RXT_BIST |
 + PHY_ANA1A_TXR_BIST | PHY_ANA1A_REV);
 + rtsx_pci_write_phy_register(pcr, PHY_ANA1D,
 + PHY_ANA1D_DEBUG_ADDR);
 + rtsx_pci_write_phy_register(pcr, PHY_DIG1E,
 + PHY_DIG1E_REV | PHY_DIG1E_D0_X_D1 |
 + PHY_DIG1E_RX_ON_HOST | PHY_DIG1E_RCLK_REF_HOST |
 + PHY_DIG1E_RCLK_TX_EN_KEEP |
 + PHY_DIG1E_RCLK_TX_TERM_KEEP |
 + PHY_DIG1E_RCLK_RX_EIDLE_ON | PHY_DIG1E_TX_TERM_KEEP |
 + PHY_DIG1E_RX_TERM_KEEP | PHY_DIG1E_TX_EN_KEEP |
 + PHY_DIG1E_RX_EN_KEEP);
 + }
 +
 + rtsx_pci_write_phy_register(pcr, PHY_ANA08,
 + PHY_ANA08_RX_EQ_DCGAIN | PHY_ANA08_SEL_RX_EN |
 + PHY_ANA08_RX_EQ_VAL | PHY_ANA08_SCP | PHY_ANA08_SEL_IPI);
 To the uninitiated this function is mostly randomness.  How about some
 nice comments to illuminate?
I'm not clear with these setting either, it is used to fix some phy 
setting, the default phy setting
it not stable on some special platform, so we have to modify them by driver,
newer version of chip will change its default value to more stable 
configure, so some value is
no need to setting for Version B/C...


 diff --git a/drivers/mfd/rtsx_pcr.h b/drivers/mfd/rtsx_pcr.h
 index fe2bbb6..e7daf6f 100644
 --- a/drivers/mfd/rtsx_pcr.h
 +++ b/drivers/mfd/rtsx_pcr.h
 @@ -27,12 +27,19 @@
   #define MIN_DIV_N_PCR  80
   #define MAX_DIV_N_PCR  208
   
 +#define RTS524A_PME_FORCE_CTL   0xFF78
 +#define RTS524A_PM_CTRL30xFF7E
 +
 +int __rtsx_pci_write_phy_register(struct rtsx_pcr *pcr, u8 addr, u16 val);
 +int __rtsx_pci_read_phy_register(struct rtsx_pcr *pcr, u8 addr, u16 *val);
 +
   void rts5209_init_params(struct rtsx_pcr *pcr);
   void rts5229_init_params(struct rtsx_pcr *pcr);
   void rtl8411_init_params(struct rtsx_pcr *pcr);
   void rtl8402_init_params(struct rtsx_pcr *pcr);
   void rts5227_init_params(struct rtsx_pcr *pcr);
   void rts5249_init_params(struct rtsx_pcr *pcr);
 +void rts524a_init_params(struct rtsx_pcr *pcr);
   void rtl8411b_init_params(struct rtsx_pcr *pcr);
   
   static inline u8 map_sd_drive(int idx)
 diff --git a/include/linux/mfd/rtsx_pci.h b/include/linux/mfd/rtsx_pci.h
 index 33cc63c..a392546 100644
 --- a/include/linux/mfd/rtsx_pci.h
 +++ b/include/linux/mfd/rtsx_pci.h
 @@ -577,8 +577,16 @@

   
   #define PCR_SETTING_REG1   0x724
 @@ -729,6 +831,8 @@ struct pcr_handle {
   };
   
   struct pcr_ops {
 +int (*write_phy)(struct rtsx_pcr *pcr, u8 addr, u16 val);
 +int (*read_phy)(struct rtsx_pcr *pcr, u8 addr, u16 *val);
  int (*extra_init_hw)(struct rtsx_pcr *pcr);
  int (*optimize_phy)(struct rtsx_pcr *pcr);
  int (*turn_on_led)(struct rtsx_pcr *pcr);
 @@ -830,6 +934,10 @@ struct rtsx_pcr {
   #define CHK_PCI_PID(pcr, pid)  ((pcr)-pci-device == (pid))
   #define PCI_VID(pcr)   ((pcr)-pci-vendor)
   #define PCI_PID(pcr)   ((pcr)-pci-device)
 +#define is_version(pcr, pid, ver)   \
 +(CHK_PCI_PID(pcr, pid)  (pcr)-ic_version == (ver))
 +#define pcr_dbg(pcr, fmt, arg...)   \
 +dev_dbg((pcr)-pci-dev, fmt, ##arg)
   
   #define SDR104_PHASE(val)  ((val)  0xFF)
   #define SDR50_PHASE(val)   (((val)  8)  0xFF)
 @@ -899,4 +1007,17 @@ static inline void rtsx_pci_write_be32(struct rtsx_pcr 
 *pcr, u16 reg, u32 val)
  rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, reg + 3, 0xFF, val);
   }
   
 +static inline int rtsx_pci_update_phy(struct rtsx_pcr *pcr, u8 addr,
 +u16 mask, u16 append)
 +{
 +int err;
 +u16 val;
 +
 +err = rtsx_pci_read_phy_register(pcr, addr, val);
 +if (err  0)
 +return err;
 +
 +return rtsx_pci_write_phy_register(pcr, addr, (val  mask) | append);
 

[PATCH] comedi: Change error return code for if statement in the function, cb_pcimdas_ai_rinsn

2015-02-24 Thread Nicholas Krause
This changes us using the incorrect error,-ETIMEOUT when checking if
the channel we are allocating to on the device structure pointer passed 
to this function is greater then the maximum available channels for this 
device to the correct error for a channel being out of range,-ECHRNG.

Signed-off-by: Nicholas Krause xerofo...@gmail.com
---
 drivers/staging/comedi/drivers/cb_pcimdas.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/staging/comedi/drivers/cb_pcimdas.c 
b/drivers/staging/comedi/drivers/cb_pcimdas.c
index 70dd2c9..d91a6f3 100644
--- a/drivers/staging/comedi/drivers/cb_pcimdas.c
+++ b/drivers/staging/comedi/drivers/cb_pcimdas.c
@@ -121,7 +121,7 @@ static int cb_pcimdas_ai_rinsn(struct comedi_device *dev,
maxchans = s-n_chan;
 
if (chan  (maxchans - 1))
-   return -ETIMEDOUT;  /* *** Wrong error code. Fixme. */
+   return -ECHRNG;
 
/* configure for sw initiated read */
d = inb(devpriv-BADR3 + 5);
-- 
2.1.0

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


Re: [PATCH] staging: emxx_udc: Replace GFP_KERNEL with GFP_ATOMIC

2015-02-24 Thread Greg KH
On Fri, Feb 20, 2015 at 06:43:53PM +0530, Tapasweni Pathak wrote:
 To avoid deadlock, do not call blocking functions with spinlocks held.
 
 Replace GFP_KERNEL with GFP_ATOMIC, as the latter will fail if the pile
 doesn't have enough free pages but will not sleep and hence deadlock can
 be avoided.
 
 Found by Coccinelle.
 
 Signed-off-by: Tapasweni Pathak tapaswenipat...@gmail.com
 ---
 Is there any other way this can be fixed as it is better to avoid GFP_ATOMIC?

No, this is fine, nice fix.

thanks,

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


[PATCH] drivers: staging: lustre: Fix space prohibited between function name and open parenthesis errors

2015-02-24 Thread Adrien Descamps
Fix checkpatch.ph errors space prohibited between function name and
open parenthesis in socklnd.h

Signed-off-by: Adrien Descamps adrien.desca...@gmail.com
---
 .../staging/lustre/lnet/klnds/socklnd/socklnd.h| 130 ++---
 1 file changed, 65 insertions(+), 65 deletions(-)

diff --git a/drivers/staging/lustre/lnet/klnds/socklnd/socklnd.h 
b/drivers/staging/lustre/lnet/klnds/socklnd/socklnd.h
index 03488d2..c54c995 100644
--- a/drivers/staging/lustre/lnet/klnds/socklnd/socklnd.h
+++ b/drivers/staging/lustre/lnet/klnds/socklnd/socklnd.h
@@ -406,7 +406,7 @@ ksocknal_route_mask(void)
 }
 
 static inline struct list_head *
-ksocknal_nid2peerlist (lnet_nid_t nid)
+ksocknal_nid2peerlist(lnet_nid_t nid)
 {
unsigned int hash = ((unsigned int)nid) % 
ksocknal_data.ksnd_peer_hash_size;
 
@@ -414,25 +414,25 @@ ksocknal_nid2peerlist (lnet_nid_t nid)
 }
 
 static inline void
-ksocknal_conn_addref (ksock_conn_t *conn)
+ksocknal_conn_addref(ksock_conn_t *conn)
 {
-   LASSERT (atomic_read(conn-ksnc_conn_refcount)  0);
+   LASSERT(atomic_read(conn-ksnc_conn_refcount)  0);
atomic_inc(conn-ksnc_conn_refcount);
 }
 
-extern void ksocknal_queue_zombie_conn (ksock_conn_t *conn);
+extern void ksocknal_queue_zombie_conn(ksock_conn_t *conn);
 extern void ksocknal_finalize_zcreq(ksock_conn_t *conn);
 
 static inline void
-ksocknal_conn_decref (ksock_conn_t *conn)
+ksocknal_conn_decref(ksock_conn_t *conn)
 {
-   LASSERT (atomic_read(conn-ksnc_conn_refcount)  0);
+   LASSERT(atomic_read(conn-ksnc_conn_refcount)  0);
if (atomic_dec_and_test(conn-ksnc_conn_refcount))
ksocknal_queue_zombie_conn(conn);
 }
 
 static inline int
-ksocknal_connsock_addref (ksock_conn_t *conn)
+ksocknal_connsock_addref(ksock_conn_t *conn)
 {
int   rc = -ESHUTDOWN;
 
@@ -448,11 +448,11 @@ ksocknal_connsock_addref (ksock_conn_t *conn)
 }
 
 static inline void
-ksocknal_connsock_decref (ksock_conn_t *conn)
+ksocknal_connsock_decref(ksock_conn_t *conn)
 {
-   LASSERT (atomic_read(conn-ksnc_sock_refcount)  0);
+   LASSERT(atomic_read(conn-ksnc_sock_refcount)  0);
if (atomic_dec_and_test(conn-ksnc_sock_refcount)) {
-   LASSERT (conn-ksnc_closing);
+   LASSERT(conn-ksnc_closing);
libcfs_sock_release(conn-ksnc_sock);
conn-ksnc_sock = NULL;
ksocknal_finalize_zcreq(conn);
@@ -460,61 +460,61 @@ ksocknal_connsock_decref (ksock_conn_t *conn)
 }
 
 static inline void
-ksocknal_tx_addref (ksock_tx_t *tx)
+ksocknal_tx_addref(ksock_tx_t *tx)
 {
-   LASSERT (atomic_read(tx-tx_refcount)  0);
+   LASSERT(atomic_read(tx-tx_refcount)  0);
atomic_inc(tx-tx_refcount);
 }
 
-extern void ksocknal_tx_prep (ksock_conn_t *, ksock_tx_t *tx);
-extern void ksocknal_tx_done (lnet_ni_t *ni, ksock_tx_t *tx);
+extern void ksocknal_tx_prep(ksock_conn_t *, ksock_tx_t *tx);
+extern void ksocknal_tx_done(lnet_ni_t *ni, ksock_tx_t *tx);
 
 static inline void
-ksocknal_tx_decref (ksock_tx_t *tx)
+ksocknal_tx_decref(ksock_tx_t *tx)
 {
-   LASSERT (atomic_read(tx-tx_refcount)  0);
+   LASSERT(atomic_read(tx-tx_refcount)  0);
if (atomic_dec_and_test(tx-tx_refcount))
ksocknal_tx_done(NULL, tx);
 }
 
 static inline void
-ksocknal_route_addref (ksock_route_t *route)
+ksocknal_route_addref(ksock_route_t *route)
 {
-   LASSERT (atomic_read(route-ksnr_refcount)  0);
+   LASSERT(atomic_read(route-ksnr_refcount)  0);
atomic_inc(route-ksnr_refcount);
 }
 
-extern void ksocknal_destroy_route (ksock_route_t *route);
+extern void ksocknal_destroy_route(ksock_route_t *route);
 
 static inline void
-ksocknal_route_decref (ksock_route_t *route)
+ksocknal_route_decref(ksock_route_t *route)
 {
-   LASSERT (atomic_read (route-ksnr_refcount)  0);
+   LASSERT(atomic_read(route-ksnr_refcount)  0);
if (atomic_dec_and_test(route-ksnr_refcount))
-   ksocknal_destroy_route (route);
+   ksocknal_destroy_route(route);
 }
 
 static inline void
-ksocknal_peer_addref (ksock_peer_t *peer)
+ksocknal_peer_addref(ksock_peer_t *peer)
 {
-   LASSERT (atomic_read (peer-ksnp_refcount)  0);
+   LASSERT(atomic_read(peer-ksnp_refcount)  0);
atomic_inc(peer-ksnp_refcount);
 }
 
-extern void ksocknal_destroy_peer (ksock_peer_t *peer);
+extern void ksocknal_destroy_peer(ksock_peer_t *peer);
 
 static inline void
-ksocknal_peer_decref (ksock_peer_t *peer)
+ksocknal_peer_decref(ksock_peer_t *peer)
 {
-   LASSERT (atomic_read (peer-ksnp_refcount)  0);
+   LASSERT(atomic_read(peer-ksnp_refcount)  0);
if (atomic_dec_and_test(peer-ksnp_refcount))
-   ksocknal_destroy_peer (peer);
+   ksocknal_destroy_peer(peer);
 }
 
-int ksocknal_startup (lnet_ni_t *ni);
-void ksocknal_shutdown (lnet_ni_t *ni);
+int ksocknal_startup(lnet_ni_t *ni);
+void ksocknal_shutdown(lnet_ni_t *ni);
 int ksocknal_ctl(lnet_ni_t *ni, unsigned int cmd, void