[patch] staging: wilc1000: fix mgmt_tx()

2016-02-10 Thread Dan Carpenter
There was a missing curly brace so this function returns failure instead
of succeeding.

Fixes: 06fb9336acdc ('staging: wilc1000: wilc_wfi_cfgoperations.c: replaces 
PRINT_ER with netdev_err')
Signed-off-by: Dan Carpenter 

diff --git a/drivers/staging/wilc1000/wilc_wfi_cfgoperations.c 
b/drivers/staging/wilc1000/wilc_wfi_cfgoperations.c
index bf264d3..97d1b80 100644
--- a/drivers/staging/wilc1000/wilc_wfi_cfgoperations.c
+++ b/drivers/staging/wilc1000/wilc_wfi_cfgoperations.c
@@ -1832,9 +1832,10 @@ static int mgmt_tx(struct wiphy *wiphy,
return -EFAULT;
 
mgmt_tx->buff = kmalloc(buf_len, GFP_KERNEL);
-   if (!mgmt_tx->buff)
+   if (!mgmt_tx->buff) {
kfree(mgmt_tx);
-   return -EFAULT;
+   return -ENOMEM;
+   }
 
memcpy(mgmt_tx->buff, buf, len);
mgmt_tx->size = len;
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [patch] staging: wilc1000: fix mgmt_tx()

2016-02-10 Thread walter harms


Am 10.02.2016 10:05, schrieb Dan Carpenter:
> There was a missing curly brace so this function returns failure instead
> of succeeding.
> 
> Fixes: 06fb9336acdc ('staging: wilc1000: wilc_wfi_cfgoperations.c: replaces 
> PRINT_ER with netdev_err')
> Signed-off-by: Dan Carpenter 
> 
> diff --git a/drivers/staging/wilc1000/wilc_wfi_cfgoperations.c 
> b/drivers/staging/wilc1000/wilc_wfi_cfgoperations.c
> index bf264d3..97d1b80 100644
> --- a/drivers/staging/wilc1000/wilc_wfi_cfgoperations.c
> +++ b/drivers/staging/wilc1000/wilc_wfi_cfgoperations.c
> @@ -1832,9 +1832,10 @@ static int mgmt_tx(struct wiphy *wiphy,
>   return -EFAULT;
>  
>   mgmt_tx->buff = kmalloc(buf_len, GFP_KERNEL);
> - if (!mgmt_tx->buff)
> + if (!mgmt_tx->buff) {
>   kfree(mgmt_tx);
> - return -EFAULT;
> + return -ENOMEM;
> + }
>  
>   memcpy(mgmt_tx->buff, buf, len);
>   mgmt_tx->size = len;


perhaps this is a case for kmemdup() ?

mgmt_tx->buff = kmemdup(buf, buf_len or len ?, GFP_KERNEL);

sorry, i can not see what len from this patch.

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


Re: [PATCH net] hv_netvsc: Restore needed_headroom request

2016-02-10 Thread Vitaly Kuznetsov
Vitaly Kuznetsov  writes:

> Commit c0eb454034aa ("hv_netvsc: Don't ask for additional head room in the
> skb") got rid of needed_headroom setting for the driver. With the change I
> hit the following issue trying to use ptkgen module:
>
> [   57.522021] kernel BUG at net/core/skbuff.c:1128!
> [   57.522021] invalid opcode:  [#1] SMP DEBUG_PAGEALLOC
> ...
> [   58.721068] Call Trace:
> [   58.721068]  [] netvsc_start_xmit+0x4c6/0x8e0 [hv_netvsc]
> ...
> [   58.721068]  [] ? pktgen_finalize_skb+0x25c/0x2a0 
> [pktgen]
> [   58.721068]  [] ? __netdev_alloc_skb+0xc0/0x100
> [   58.721068]  [] pktgen_thread_worker+0x257/0x1920 
> [pktgen]
>
> Basically, we're calling skb_cow_head(skb, RNDIS_AND_PPI_SIZE) and crash on
> if (skb_shared(skb))
> BUG();
>
> We probably need to restore needed_headroom setting (but shrunk to
> RNDIS_AND_PPI_SIZE as we don't need more) to request the required headroom
> space. In theory, it should not give us performance penalty.

I'm sorry for the ping but this is kind of a regression and it would be
nice to have it fixed in 4.5.

Here is a script to trigger kernel crash:
#! /bin/sh
modprobe pktgen

echo "rem_device_all" > /proc/net/pktgen/kpktgend_0
echo "add_device eth0" > /proc/net/pktgen/kpktgend_0
echo "pkt_size 60" > /proc/net/pktgen/eth0
echo "clone_skb 100" > /proc/net/pktgen/eth0
echo "count 10" > /proc/net/pktgen/eth0
echo "dst " > /proc/net/pktgen/eth0
echo "dst_mac " > /proc/net/pktgen/eth0
echo "start" > /proc/net/pktgen/pgctrl
cat /proc/net/pktgen/eth0

Please review.

>
> Signed-off-by: Vitaly Kuznetsov 
> ---
>  drivers/net/hyperv/netvsc_drv.c | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
> index 1d3a665..98e34fe 100644
> --- a/drivers/net/hyperv/netvsc_drv.c
> +++ b/drivers/net/hyperv/netvsc_drv.c
> @@ -1089,6 +1089,9 @@ static int netvsc_probe(struct hv_device *dev,
>   net->ethtool_ops = ðtool_ops;
>   SET_NETDEV_DEV(net, &dev->device);
>
> + /* We always need headroom for rndis header */
> + net->needed_headroom = RNDIS_AND_PPI_SIZE;
> +
>   /* Notify the netvsc driver of the new device */
>   memset(&device_info, 0, sizeof(device_info));
>   device_info.ring_size = ring_size;

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


Re: [PATCH net] hv_netvsc: Restore needed_headroom request

2016-02-10 Thread David Miller
From: Vitaly Kuznetsov 
Date: Wed, 10 Feb 2016 11:05:50 +0100

> I'm sorry for the ping but this is kind of a regression and it would be
> nice to have it fixed in 4.5.

In case you can't figure it out, I'm several days backlogged and busy
conferencing, travelling, etc. so there will be up to another week of
latency in dealing with any patch or request on my part.
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 01/30] staging: sm750fb: formatPllReg: rename ulPllReg to reg

2016-02-10 Thread Mike Rapoport
Remove HungarianCamelCase notation

Signed-off-by: Mike Rapoport 
---
 drivers/staging/sm750fb/ddk750_chip.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/staging/sm750fb/ddk750_chip.c 
b/drivers/staging/sm750fb/ddk750_chip.c
index a9a8884..6ab26a9 100644
--- a/drivers/staging/sm750fb/ddk750_chip.c
+++ b/drivers/staging/sm750fb/ddk750_chip.c
@@ -355,13 +355,13 @@ unsigned int calcPllValue(unsigned int request_orig, 
pll_value_t *pll)
 
 unsigned int formatPllReg(pll_value_t *pPLL)
 {
-   unsigned int ulPllReg = 0;
+   unsigned int reg = 0;
 
 /* Note that all PLL's have the same format. Here, we just use Panel PLL 
parameter
to work out the bit fields in the register.
On returning a 32 bit number, the value can be applied to any PLL in 
the calling function.
 */
-   ulPllReg =
+   reg =
FIELD_SET(0, PANEL_PLL_CTRL, BYPASS, OFF)
| FIELD_SET(0, PANEL_PLL_CTRL, POWER,  ON)
| FIELD_SET(0, PANEL_PLL_CTRL, INPUT,  OSC)
@@ -372,7 +372,7 @@ unsigned int formatPllReg(pll_value_t *pPLL)
| FIELD_VALUE(0, PANEL_PLL_CTRL, N,  pPLL->N)
| FIELD_VALUE(0, PANEL_PLL_CTRL, M,  pPLL->M);
 
-   return ulPllReg;
+   return reg;
 }
 
 
-- 
1.9.1

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


[PATCH 02/30] staging: sm750fb: formatPllReg: fix comment formatting

2016-02-10 Thread Mike Rapoport
Fix comment alignment and formatting to follow kernel coding style

Signed-off-by: Mike Rapoport 
---
 drivers/staging/sm750fb/ddk750_chip.c | 10 ++
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/drivers/staging/sm750fb/ddk750_chip.c 
b/drivers/staging/sm750fb/ddk750_chip.c
index 6ab26a9..940c43f 100644
--- a/drivers/staging/sm750fb/ddk750_chip.c
+++ b/drivers/staging/sm750fb/ddk750_chip.c
@@ -357,10 +357,12 @@ unsigned int formatPllReg(pll_value_t *pPLL)
 {
unsigned int reg = 0;
 
-/* Note that all PLL's have the same format. Here, we just use Panel PLL 
parameter
-   to work out the bit fields in the register.
-   On returning a 32 bit number, the value can be applied to any PLL in 
the calling function.
-*/
+   /*
+* Note that all PLL's have the same format. Here, we just use
+* Panel PLL parameter to work out the bit fields in the
+* register. On returning a 32 bit number, the value can be
+* applied to any PLL in the calling function.
+*/
reg =
FIELD_SET(0, PANEL_PLL_CTRL, BYPASS, OFF)
| FIELD_SET(0, PANEL_PLL_CTRL, POWER,  ON)
-- 
1.9.1

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


[PATCH 03/30] staging: sm750fb: rename PANEL_PLL_CTRL_* fields to PLL_CTRL_*

2016-02-10 Thread Mike Rapoport
Several PLL control registers have the same layout and therefore the
field definitions may be shared for those registers. Renaming
definitions of PANEL_PLL_CTRL_* fields to more generic PLL_CTRL_* will
allow reusing these definitions for other PLL control registers.

Signed-off-by: Mike Rapoport 
---
 drivers/staging/sm750fb/ddk750_chip.c| 22 +++---
 drivers/staging/sm750fb/ddk750_display.c |  4 ++--
 drivers/staging/sm750fb/ddk750_reg.h | 28 ++--
 3 files changed, 27 insertions(+), 27 deletions(-)

diff --git a/drivers/staging/sm750fb/ddk750_chip.c 
b/drivers/staging/sm750fb/ddk750_chip.c
index 940c43f..277e5c5 100644
--- a/drivers/staging/sm750fb/ddk750_chip.c
+++ b/drivers/staging/sm750fb/ddk750_chip.c
@@ -36,10 +36,10 @@ static unsigned int get_mxclk_freq(void)
return MHz(130);
 
pll_reg = PEEK32(MXCLK_PLL_CTRL);
-   M = FIELD_GET(pll_reg, PANEL_PLL_CTRL, M);
-   N = FIELD_GET(pll_reg, PANEL_PLL_CTRL, N);
-   OD = FIELD_GET(pll_reg, PANEL_PLL_CTRL, OD);
-   POD = FIELD_GET(pll_reg, PANEL_PLL_CTRL, POD);
+   M = FIELD_GET(pll_reg, PLL_CTRL, M);
+   N = FIELD_GET(pll_reg, PLL_CTRL, N);
+   OD = FIELD_GET(pll_reg, PLL_CTRL, OD);
+   POD = FIELD_GET(pll_reg, PLL_CTRL, POD);
 
return DEFAULT_INPUT_CLOCK * M / N / (1 << OD) / (1 << POD);
 }
@@ -364,15 +364,15 @@ unsigned int formatPllReg(pll_value_t *pPLL)
 * applied to any PLL in the calling function.
 */
reg =
-   FIELD_SET(0, PANEL_PLL_CTRL, BYPASS, OFF)
-   | FIELD_SET(0, PANEL_PLL_CTRL, POWER,  ON)
-   | FIELD_SET(0, PANEL_PLL_CTRL, INPUT,  OSC)
+   FIELD_SET(0, PLL_CTRL, BYPASS, OFF)
+   | FIELD_SET(0, PLL_CTRL, POWER,  ON)
+   | FIELD_SET(0, PLL_CTRL, INPUT,  OSC)
 #ifndef VALIDATION_CHIP
-   | FIELD_VALUE(0, PANEL_PLL_CTRL, POD,pPLL->POD)
+   | FIELD_VALUE(0, PLL_CTRL, POD,pPLL->POD)
 #endif
-   | FIELD_VALUE(0, PANEL_PLL_CTRL, OD, pPLL->OD)
-   | FIELD_VALUE(0, PANEL_PLL_CTRL, N,  pPLL->N)
-   | FIELD_VALUE(0, PANEL_PLL_CTRL, M,  pPLL->M);
+   | FIELD_VALUE(0, PLL_CTRL, OD, pPLL->OD)
+   | FIELD_VALUE(0, PLL_CTRL, N,  pPLL->N)
+   | FIELD_VALUE(0, PLL_CTRL, M,  pPLL->M);
 
return reg;
 }
diff --git a/drivers/staging/sm750fb/ddk750_display.c 
b/drivers/staging/sm750fb/ddk750_display.c
index 1a29ae0..514f909 100644
--- a/drivers/staging/sm750fb/ddk750_display.c
+++ b/drivers/staging/sm750fb/ddk750_display.c
@@ -126,8 +126,8 @@ static void waitNextVerticalSync(int ctrl, int delay)
 
/* Do not wait when the Primary PLL is off or display control 
is already off.
   This will prevent the software to wait forever. */
-   if ((FIELD_GET(PEEK32(PANEL_PLL_CTRL), PANEL_PLL_CTRL, POWER) ==
-PANEL_PLL_CTRL_POWER_OFF) ||
+   if ((FIELD_GET(PEEK32(PANEL_PLL_CTRL), PLL_CTRL, POWER) ==
+PLL_CTRL_POWER_OFF) ||
(FIELD_GET(PEEK32(PANEL_DISPLAY_CTRL), 
PANEL_DISPLAY_CTRL, TIMING) ==
 PANEL_DISPLAY_CTRL_TIMING_DISABLE)) {
return;
diff --git a/drivers/staging/sm750fb/ddk750_reg.h 
b/drivers/staging/sm750fb/ddk750_reg.h
index a90b56f..1ad8d55 100644
--- a/drivers/staging/sm750fb/ddk750_reg.h
+++ b/drivers/staging/sm750fb/ddk750_reg.h
@@ -517,23 +517,23 @@
 #define PLL_CLK_COUNT_COUNTER 15:0
 
 #define PANEL_PLL_CTRL0x5C
-#define PANEL_PLL_CTRL_BYPASS 18:18
-#define PANEL_PLL_CTRL_BYPASS_OFF 0
-#define PANEL_PLL_CTRL_BYPASS_ON  1
-#define PANEL_PLL_CTRL_POWER  17:17
-#define PANEL_PLL_CTRL_POWER_OFF  0
-#define PANEL_PLL_CTRL_POWER_ON   1
-#define PANEL_PLL_CTRL_INPUT  16:16
-#define PANEL_PLL_CTRL_INPUT_OSC  0
-#define PANEL_PLL_CTRL_INPUT_TESTCLK  1
+#define PLL_CTRL_BYPASS   18:18
+#define PLL_CTRL_BYPASS_OFF   0
+#define PLL_CTRL_BYPASS_ON1
+#define PLL_CTRL_POWER17:17
+#define PLL_CTRL_POWER_OFF0
+#define PLL_CTRL_POWER_ON 1
+#define PLL_CTRL_INPUT16:16
+#define PLL_CTRL_INPUT_OSC0
+#define PLL_CTRL_INPUT_TESTCLK1
 #ifdef VALIDATION_CHIP
-#define PANEL_PLL_CTRL_OD 15:14
+#define PLL_CTRL_OD   15:14
 #else
-#define PANEL_PLL_CTRL_POD15:14
-#define PANEL_PLL_CTRL_OD 13:12
+#define PLL_CTRL_POD  15:14
+#define PLL_CTRL_OD   

[PATCH 06/30] staging: sm750fb: change defintion of PANEL_PLL_CTRL multi-bit fields

2016-02-10 Thread Mike Rapoport
Use more straight-forward definitions for multi-bit field of
PANEL_PLL_CTRL register and use open-coded implementation for register
manipulations.

Signed-off-by: Mike Rapoport 
---
 drivers/staging/sm750fb/ddk750_chip.c | 24 +++-
 drivers/staging/sm750fb/ddk750_reg.h  | 15 ++-
 2 files changed, 25 insertions(+), 14 deletions(-)

diff --git a/drivers/staging/sm750fb/ddk750_chip.c 
b/drivers/staging/sm750fb/ddk750_chip.c
index 467b858..d813cc6 100644
--- a/drivers/staging/sm750fb/ddk750_chip.c
+++ b/drivers/staging/sm750fb/ddk750_chip.c
@@ -36,10 +36,10 @@ static unsigned int get_mxclk_freq(void)
return MHz(130);
 
pll_reg = PEEK32(MXCLK_PLL_CTRL);
-   M = FIELD_GET(pll_reg, PLL_CTRL, M);
-   N = FIELD_GET(pll_reg, PLL_CTRL, N);
-   OD = FIELD_GET(pll_reg, PLL_CTRL, OD);
-   POD = FIELD_GET(pll_reg, PLL_CTRL, POD);
+   M = (pll_reg & PLL_CTRL_M_MASK) >> PLL_CTRL_M_SHIFT;
+   N = (pll_reg & PLL_CTRL_N_MASK) >> PLL_CTRL_M_SHIFT;
+   OD = (pll_reg & PLL_CTRL_OD_MASK) >> PLL_CTRL_OD_SHIFT;
+   POD = (pll_reg & PLL_CTRL_POD_MASK) >> PLL_CTRL_POD_SHIFT;
 
return DEFAULT_INPUT_CLOCK * M / N / (1 << OD) / (1 << POD);
 }
@@ -355,6 +355,12 @@ unsigned int calcPllValue(unsigned int request_orig, 
pll_value_t *pll)
 
 unsigned int formatPllReg(pll_value_t *pPLL)
 {
+#ifndef VALIDATION_CHIP
+   unsigned int POD = pPLL->POD;
+#endif
+   unsigned int OD = pPLL->OD;
+   unsigned int M = pPLL->M;
+   unsigned int N = pPLL->N;
unsigned int reg = 0;
 
/*
@@ -363,13 +369,13 @@ unsigned int formatPllReg(pll_value_t *pPLL)
 * register. On returning a 32 bit number, the value can be
 * applied to any PLL in the calling function.
 */
-   reg = PLL_CTRL_POWER
+   reg = PLL_CTRL_POWER |
 #ifndef VALIDATION_CHIP
-   | FIELD_VALUE(0, PLL_CTRL, POD,pPLL->POD)
+   ((POD << PLL_CTRL_POD_SHIFT) & PLL_CTRL_POD_MASK) |
 #endif
-   | FIELD_VALUE(0, PLL_CTRL, OD, pPLL->OD)
-   | FIELD_VALUE(0, PLL_CTRL, N,  pPLL->N)
-   | FIELD_VALUE(0, PLL_CTRL, M,  pPLL->M);
+   ((OD << PLL_CTRL_OD_SHIFT) & PLL_CTRL_OD_MASK) |
+   ((N << PLL_CTRL_N_SHIFT) & PLL_CTRL_N_MASK) |
+   ((M << PLL_CTRL_M_SHIFT) & PLL_CTRL_M_MASK);
 
return reg;
 }
diff --git a/drivers/staging/sm750fb/ddk750_reg.h 
b/drivers/staging/sm750fb/ddk750_reg.h
index d13af39..52d270d 100644
--- a/drivers/staging/sm750fb/ddk750_reg.h
+++ b/drivers/staging/sm750fb/ddk750_reg.h
@@ -521,13 +521,18 @@
 #define PLL_CTRL_POWERBIT(17)
 #define PLL_CTRL_INPUTBIT(16)
 #ifdef VALIDATION_CHIP
-#define PLL_CTRL_OD   15:14
+#define PLL_CTRL_OD_SHIFT 14
+#define PLL_CTRL_OD_MASK  (0x3 << 14)
 #else
-#define PLL_CTRL_POD  15:14
-#define PLL_CTRL_OD   13:12
+#define PLL_CTRL_POD_SHIFT14
+#define PLL_CTRL_POD_MASK (0x3 << 14)
+#define PLL_CTRL_OD_SHIFT 12
+#define PLL_CTRL_OD_MASK  (0x3 << 12)
 #endif
-#define PLL_CTRL_N11:8
-#define PLL_CTRL_M7:0
+#define PLL_CTRL_N_SHIFT  8
+#define PLL_CTRL_N_MASK   (0xf << 8)
+#define PLL_CTRL_M_SHIFT  0
+#define PLL_CTRL_M_MASK   0xff
 
 #define CRT_PLL_CTRL  0x60
 #define CRT_PLL_CTRL_BYPASS   18:18
-- 
1.9.1

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


[PATCH 07/30] staging: sm750fb: drop redundant defines for PLL_CTRL fields

2016-02-10 Thread Mike Rapoport
The PLL_CTRL fields have common defines for several PLL control
registers and re-defining the same values per register is not needed.

Signed-off-by: Mike Rapoport 
---
 drivers/staging/sm750fb/ddk750_reg.h | 64 
 1 file changed, 64 deletions(-)

diff --git a/drivers/staging/sm750fb/ddk750_reg.h 
b/drivers/staging/sm750fb/ddk750_reg.h
index 52d270d..ac3cb36 100644
--- a/drivers/staging/sm750fb/ddk750_reg.h
+++ b/drivers/staging/sm750fb/ddk750_reg.h
@@ -535,80 +535,16 @@
 #define PLL_CTRL_M_MASK   0xff
 
 #define CRT_PLL_CTRL  0x60
-#define CRT_PLL_CTRL_BYPASS   18:18
-#define CRT_PLL_CTRL_BYPASS_OFF   0
-#define CRT_PLL_CTRL_BYPASS_ON1
-#define CRT_PLL_CTRL_POWER17:17
-#define CRT_PLL_CTRL_POWER_OFF0
-#define CRT_PLL_CTRL_POWER_ON 1
-#define CRT_PLL_CTRL_INPUT16:16
-#define CRT_PLL_CTRL_INPUT_OSC0
-#define CRT_PLL_CTRL_INPUT_TESTCLK1
-#ifdef VALIDATION_CHIP
-#define CRT_PLL_CTRL_OD   15:14
-#else
-#define CRT_PLL_CTRL_POD  15:14
-#define CRT_PLL_CTRL_OD   13:12
-#endif
-#define CRT_PLL_CTRL_N11:8
-#define CRT_PLL_CTRL_M7:0
 
 #define VGA_PLL0_CTRL 0x64
-#define VGA_PLL0_CTRL_BYPASS  18:18
-#define VGA_PLL0_CTRL_BYPASS_OFF  0
-#define VGA_PLL0_CTRL_BYPASS_ON   1
-#define VGA_PLL0_CTRL_POWER   17:17
-#define VGA_PLL0_CTRL_POWER_OFF   0
-#define VGA_PLL0_CTRL_POWER_ON1
-#define VGA_PLL0_CTRL_INPUT   16:16
-#define VGA_PLL0_CTRL_INPUT_OSC   0
-#define VGA_PLL0_CTRL_INPUT_TESTCLK   1
-#ifdef VALIDATION_CHIP
-#define VGA_PLL0_CTRL_OD  15:14
-#else
-#define VGA_PLL0_CTRL_POD 15:14
-#define VGA_PLL0_CTRL_OD  13:12
-#endif
-#define VGA_PLL0_CTRL_N   11:8
-#define VGA_PLL0_CTRL_M   7:0
 
 #define VGA_PLL1_CTRL 0x68
-#define VGA_PLL1_CTRL_BYPASS  18:18
-#define VGA_PLL1_CTRL_BYPASS_OFF  0
-#define VGA_PLL1_CTRL_BYPASS_ON   1
-#define VGA_PLL1_CTRL_POWER   17:17
-#define VGA_PLL1_CTRL_POWER_OFF   0
-#define VGA_PLL1_CTRL_POWER_ON1
-#define VGA_PLL1_CTRL_INPUT   16:16
-#define VGA_PLL1_CTRL_INPUT_OSC   0
-#define VGA_PLL1_CTRL_INPUT_TESTCLK   1
-#ifdef VALIDATION_CHIP
-#define VGA_PLL1_CTRL_OD  15:14
-#else
-#define VGA_PLL1_CTRL_POD 15:14
-#define VGA_PLL1_CTRL_OD  13:12
-#endif
-#define VGA_PLL1_CTRL_N   11:8
-#define VGA_PLL1_CTRL_M   7:0
 
 #define SCRATCH_DATA  0x6c
 
 #ifndef VALIDATION_CHIP
 
 #define MXCLK_PLL_CTRL0x70
-#define MXCLK_PLL_CTRL_BYPASS 18:18
-#define MXCLK_PLL_CTRL_BYPASS_OFF 0
-#define MXCLK_PLL_CTRL_BYPASS_ON  1
-#define MXCLK_PLL_CTRL_POWER  17:17
-#define MXCLK_PLL_CTRL_POWER_OFF  0
-#define MXCLK_PLL_CTRL_POWER_ON   1
-#define MXCLK_PLL_CTRL_INPUT  16:16
-#define MXCLK_PLL_CTRL_INPUT_OSC  0
-#define MXCLK_PLL_CTRL_INPUT_TESTCLK  1
-#define MXCLK_PLL_CTRL_POD15:14
-#define MXCLK_PLL_CTRL_OD 13:12
-#define MXCLK_PLL_CTRL_N  11:8
-#define MXCLK_PLL_CTRL_M  7:0
 
 #define VGA_CONFIGURATION 0x88
 #define VGA_CONFIGURATION_USER_DEFINE 5:4
-- 
1.9.1

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


[PATCH 04/30] staging: sm750fb: use PLL_CTRL_POWER defines for CRT_PLL_CTRL

2016-02-10 Thread Mike Rapoport
Use PLL_CTRL_POWER definitions for CRT_PLL_CTRL register access

Signed-off-by: Mike Rapoport 
---
 drivers/staging/sm750fb/ddk750_display.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/staging/sm750fb/ddk750_display.c 
b/drivers/staging/sm750fb/ddk750_display.c
index 514f909..5d1f9a5 100644
--- a/drivers/staging/sm750fb/ddk750_display.c
+++ b/drivers/staging/sm750fb/ddk750_display.c
@@ -149,8 +149,8 @@ static void waitNextVerticalSync(int ctrl, int delay)
 
/* Do not wait when the Primary PLL is off or display control 
is already off.
   This will prevent the software to wait forever. */
-   if ((FIELD_GET(PEEK32(CRT_PLL_CTRL), CRT_PLL_CTRL, POWER) ==
-CRT_PLL_CTRL_POWER_OFF) ||
+   if ((FIELD_GET(PEEK32(CRT_PLL_CTRL), PLL_CTRL, POWER) ==
+PLL_CTRL_POWER_OFF) ||
(FIELD_GET(PEEK32(CRT_DISPLAY_CTRL), CRT_DISPLAY_CTRL, 
TIMING) ==
 CRT_DISPLAY_CTRL_TIMING_DISABLE)) {
return;
-- 
1.9.1

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


[PATCH 12/30] staging: sm750fb: share common bits in display control registers

2016-02-10 Thread Mike Rapoport
The display control registers for primary and secondary display share some
of the bits and those bits can be defined in a single place and then used
for manipulations of the relevant registers.

Signed-off-by: Mike Rapoport 
---
 drivers/staging/sm750fb/ddk750_chip.c|  6 +--
 drivers/staging/sm750fb/ddk750_display.c | 34 +++--
 drivers/staging/sm750fb/ddk750_mode.c| 42 +++--
 drivers/staging/sm750fb/ddk750_reg.h | 63 +---
 4 files changed, 58 insertions(+), 87 deletions(-)

diff --git a/drivers/staging/sm750fb/ddk750_chip.c 
b/drivers/staging/sm750fb/ddk750_chip.c
index 2d1128f..0031e32 100644
--- a/drivers/staging/sm750fb/ddk750_chip.c
+++ b/drivers/staging/sm750fb/ddk750_chip.c
@@ -249,17 +249,17 @@ int ddk750_initHw(initchip_param_t *pInitParam)
 
/* Disable Overlay, if a former application left it on */
reg = PEEK32(VIDEO_DISPLAY_CTRL);
-   reg = FIELD_SET(reg, VIDEO_DISPLAY_CTRL, PLANE, DISABLE);
+   reg = FIELD_SET(reg, DISPLAY_CTRL, PLANE, DISABLE);
POKE32(VIDEO_DISPLAY_CTRL, reg);
 
/* Disable video alpha, if a former application left it on */
reg = PEEK32(VIDEO_ALPHA_DISPLAY_CTRL);
-   reg = FIELD_SET(reg, VIDEO_ALPHA_DISPLAY_CTRL, PLANE, DISABLE);
+   reg = FIELD_SET(reg, DISPLAY_CTRL, PLANE, DISABLE);
POKE32(VIDEO_ALPHA_DISPLAY_CTRL, reg);
 
/* Disable alpha plane, if a former application left it on */
reg = PEEK32(ALPHA_DISPLAY_CTRL);
-   reg = FIELD_SET(reg, ALPHA_DISPLAY_CTRL, PLANE, DISABLE);
+   reg = FIELD_SET(reg, DISPLAY_CTRL, PLANE, DISABLE);
POKE32(ALPHA_DISPLAY_CTRL, reg);
 
/* Disable DMA Channel, if a former application left it on */
diff --git a/drivers/staging/sm750fb/ddk750_display.c 
b/drivers/staging/sm750fb/ddk750_display.c
index dc7060e..42da3cd0 100644
--- a/drivers/staging/sm750fb/ddk750_display.c
+++ b/drivers/staging/sm750fb/ddk750_display.c
@@ -23,12 +23,10 @@ static void setDisplayControl(int ctrl, int disp_state)
 * because changing at the same time does not guarantee 
that
 * the plane will also enabled or disabled.
 */
-   reg = FIELD_SET(reg,
-   
PANEL_DISPLAY_CTRL, TIMING, ENABLE);
+   reg = FIELD_SET(reg, DISPLAY_CTRL, TIMING, ENABLE);
POKE32(PANEL_DISPLAY_CTRL, reg);
 
-   reg = FIELD_SET(reg,
-   
PANEL_DISPLAY_CTRL, PLANE, ENABLE);
+   reg = FIELD_SET(reg, DISPLAY_CTRL, PLANE, ENABLE);
 
/* Added some masks to mask out the reserved bits.
 * Sometimes, the reserved bits are set/reset randomly 
when
@@ -57,12 +55,10 @@ static void setDisplayControl(int ctrl, int disp_state)
 * next vertical sync. Need to find out if it is 
necessary to
 * wait for 1 vsync before modifying the timing enable 
bit.
 * */
-   reg = FIELD_SET(reg,
-   
PANEL_DISPLAY_CTRL, PLANE, DISABLE);
+   reg = FIELD_SET(reg, DISPLAY_CTRL, PLANE, DISABLE);
POKE32(PANEL_DISPLAY_CTRL, reg);
 
-   reg = FIELD_SET(reg,
-   
PANEL_DISPLAY_CTRL, TIMING, DISABLE);
+   reg = FIELD_SET(reg, DISPLAY_CTRL, TIMING, DISABLE);
POKE32(PANEL_DISPLAY_CTRL, reg);
}
 
@@ -74,12 +70,10 @@ static void setDisplayControl(int ctrl, int disp_state)
/* Timing should be enabled first before enabling the 
plane because changing at the
   same time does not guarantee that the plane will 
also enabled or disabled.
   */
-   reg = FIELD_SET(reg,
-   
CRT_DISPLAY_CTRL, TIMING, ENABLE);
+   reg = FIELD_SET(reg, DISPLAY_CTRL, TIMING, ENABLE);
POKE32(CRT_DISPLAY_CTRL, reg);
 
-   reg = FIELD_SET(reg,
-   
CRT_DISPLAY_CTRL, PLANE, ENABLE);
+   reg = FIELD_SET(reg, DISPLAY_CTRL, PLANE, ENABLE);
 
/* Added some masks to mask out the reserved bits.
 * Sometimes, the reserved bits are set/reset randomly 
when
@@ -106,12 +100,10 @@ static void setDisplayControl(int ctrl, int disp_state)
 * vertical sync. Need to fi

[PATCH 05/30] staging: sm750fb: use BIT macro for PLL_CTRL single-bit fields

2016-02-10 Thread Mike Rapoport
Replace complex defintion of PLL_CTRL fields with BIT() macro and use
open-coded implementation for PLL register manipulations.

Signed-off-by: Mike Rapoport 
---
 drivers/staging/sm750fb/ddk750_chip.c|  5 +
 drivers/staging/sm750fb/ddk750_display.c |  6 ++
 drivers/staging/sm750fb/ddk750_reg.h | 12 +++-
 3 files changed, 6 insertions(+), 17 deletions(-)

diff --git a/drivers/staging/sm750fb/ddk750_chip.c 
b/drivers/staging/sm750fb/ddk750_chip.c
index 277e5c5..467b858 100644
--- a/drivers/staging/sm750fb/ddk750_chip.c
+++ b/drivers/staging/sm750fb/ddk750_chip.c
@@ -363,10 +363,7 @@ unsigned int formatPllReg(pll_value_t *pPLL)
 * register. On returning a 32 bit number, the value can be
 * applied to any PLL in the calling function.
 */
-   reg =
-   FIELD_SET(0, PLL_CTRL, BYPASS, OFF)
-   | FIELD_SET(0, PLL_CTRL, POWER,  ON)
-   | FIELD_SET(0, PLL_CTRL, INPUT,  OSC)
+   reg = PLL_CTRL_POWER
 #ifndef VALIDATION_CHIP
| FIELD_VALUE(0, PLL_CTRL, POD,pPLL->POD)
 #endif
diff --git a/drivers/staging/sm750fb/ddk750_display.c 
b/drivers/staging/sm750fb/ddk750_display.c
index 5d1f9a5..a82253c 100644
--- a/drivers/staging/sm750fb/ddk750_display.c
+++ b/drivers/staging/sm750fb/ddk750_display.c
@@ -126,8 +126,7 @@ static void waitNextVerticalSync(int ctrl, int delay)
 
/* Do not wait when the Primary PLL is off or display control 
is already off.
   This will prevent the software to wait forever. */
-   if ((FIELD_GET(PEEK32(PANEL_PLL_CTRL), PLL_CTRL, POWER) ==
-PLL_CTRL_POWER_OFF) ||
+   if (!(PEEK32(PANEL_PLL_CTRL) & PLL_CTRL_POWER) ||
(FIELD_GET(PEEK32(PANEL_DISPLAY_CTRL), 
PANEL_DISPLAY_CTRL, TIMING) ==
 PANEL_DISPLAY_CTRL_TIMING_DISABLE)) {
return;
@@ -149,8 +148,7 @@ static void waitNextVerticalSync(int ctrl, int delay)
 
/* Do not wait when the Primary PLL is off or display control 
is already off.
   This will prevent the software to wait forever. */
-   if ((FIELD_GET(PEEK32(CRT_PLL_CTRL), PLL_CTRL, POWER) ==
-PLL_CTRL_POWER_OFF) ||
+   if (!(PEEK32(CRT_PLL_CTRL) & PLL_CTRL_POWER) ||
(FIELD_GET(PEEK32(CRT_DISPLAY_CTRL), CRT_DISPLAY_CTRL, 
TIMING) ==
 CRT_DISPLAY_CTRL_TIMING_DISABLE)) {
return;
diff --git a/drivers/staging/sm750fb/ddk750_reg.h 
b/drivers/staging/sm750fb/ddk750_reg.h
index 1ad8d55..d13af39 100644
--- a/drivers/staging/sm750fb/ddk750_reg.h
+++ b/drivers/staging/sm750fb/ddk750_reg.h
@@ -517,15 +517,9 @@
 #define PLL_CLK_COUNT_COUNTER 15:0
 
 #define PANEL_PLL_CTRL0x5C
-#define PLL_CTRL_BYPASS   18:18
-#define PLL_CTRL_BYPASS_OFF   0
-#define PLL_CTRL_BYPASS_ON1
-#define PLL_CTRL_POWER17:17
-#define PLL_CTRL_POWER_OFF0
-#define PLL_CTRL_POWER_ON 1
-#define PLL_CTRL_INPUT16:16
-#define PLL_CTRL_INPUT_OSC0
-#define PLL_CTRL_INPUT_TESTCLK1
+#define PLL_CTRL_BYPASS   BIT(18)
+#define PLL_CTRL_POWERBIT(17)
+#define PLL_CTRL_INPUTBIT(16)
 #ifdef VALIDATION_CHIP
 #define PLL_CTRL_OD   15:14
 #else
-- 
1.9.1

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


[PATCH 09/30] staging: sm750fb: change definition of VGA_CONFIGURATION multi-bit field

2016-02-10 Thread Mike Rapoport
Use more straight-forward definitions for multi-bit field of
VGA_CONFIGURATION register.

Signed-off-by: Mike Rapoport 
---
 drivers/staging/sm750fb/ddk750_reg.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/staging/sm750fb/ddk750_reg.h 
b/drivers/staging/sm750fb/ddk750_reg.h
index e873a10..d1e7fc4 100644
--- a/drivers/staging/sm750fb/ddk750_reg.h
+++ b/drivers/staging/sm750fb/ddk750_reg.h
@@ -547,7 +547,7 @@
 #define MXCLK_PLL_CTRL0x70
 
 #define VGA_CONFIGURATION 0x88
-#define VGA_CONFIGURATION_USER_DEFINE 5:4
+#define VGA_CONFIGURATION_USER_DEFINE_MASK(0x3 << 4)
 #define VGA_CONFIGURATION_PLL BIT(2)
 #define VGA_CONFIGURATION_MODEBIT(1)
 
-- 
1.9.1

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


[PATCH 11/30] staging: sm750fb: setDisplayControl: rename local vairables

2016-02-10 Thread Mike Rapoport
Remove HungarianCamelCase notation.

Signed-off-by: Mike Rapoport 
---
 drivers/staging/sm750fb/ddk750_display.c | 50 
 1 file changed, 25 insertions(+), 25 deletions(-)

diff --git a/drivers/staging/sm750fb/ddk750_display.c 
b/drivers/staging/sm750fb/ddk750_display.c
index a82253c..dc7060e 100644
--- a/drivers/staging/sm750fb/ddk750_display.c
+++ b/drivers/staging/sm750fb/ddk750_display.c
@@ -9,25 +9,25 @@
 static void setDisplayControl(int ctrl, int disp_state)
 {
/* state != 0 means turn on both timing & plane en_bit */
-   unsigned long ulDisplayCtrlReg, ulReservedBits;
+   unsigned long reg, reserved;
int cnt;
 
cnt = 0;
 
/* Set the primary display control */
if (!ctrl) {
-   ulDisplayCtrlReg = PEEK32(PANEL_DISPLAY_CTRL);
+   reg = PEEK32(PANEL_DISPLAY_CTRL);
/* Turn on/off the Panel display control */
if (disp_state) {
/* Timing should be enabled first before enabling the 
plane
 * because changing at the same time does not guarantee 
that
 * the plane will also enabled or disabled.
 */
-   ulDisplayCtrlReg = FIELD_SET(ulDisplayCtrlReg,
+   reg = FIELD_SET(reg,

PANEL_DISPLAY_CTRL, TIMING, ENABLE);
-   POKE32(PANEL_DISPLAY_CTRL, ulDisplayCtrlReg);
+   POKE32(PANEL_DISPLAY_CTRL, reg);
 
-   ulDisplayCtrlReg = FIELD_SET(ulDisplayCtrlReg,
+   reg = FIELD_SET(reg,

PANEL_DISPLAY_CTRL, PLANE, ENABLE);
 
/* Added some masks to mask out the reserved bits.
@@ -35,7 +35,7 @@ static void setDisplayControl(int ctrl, int disp_state)
 * writing to the PRIMARY_DISPLAY_CTRL, therefore, the 
register
 * reserved bits are needed to be masked out.
 */
-   ulReservedBits = FIELD_SET(0, PANEL_DISPLAY_CTRL, 
RESERVED_1_MASK, ENABLE) |
+   reserved = FIELD_SET(0, PANEL_DISPLAY_CTRL, 
RESERVED_1_MASK, ENABLE) |
FIELD_SET(0, PANEL_DISPLAY_CTRL, 
RESERVED_2_MASK, ENABLE) |
FIELD_SET(0, PANEL_DISPLAY_CTRL, 
RESERVED_3_MASK, ENABLE);
 
@@ -45,9 +45,9 @@ static void setDisplayControl(int ctrl, int disp_state)
 */
do {
cnt++;
-   POKE32(PANEL_DISPLAY_CTRL, ulDisplayCtrlReg);
-   } while ((PEEK32(PANEL_DISPLAY_CTRL) & ~ulReservedBits) 
!=
-   (ulDisplayCtrlReg & ~ulReservedBits));
+   POKE32(PANEL_DISPLAY_CTRL, reg);
+   } while ((PEEK32(PANEL_DISPLAY_CTRL) & ~reserved) !=
+   (reg & ~reserved));
printk("Set Panel Plane enbit:after tried %d times\n", 
cnt);
} else {
/* When turning off, there is no rule on the programming
@@ -57,28 +57,28 @@ static void setDisplayControl(int ctrl, int disp_state)
 * next vertical sync. Need to find out if it is 
necessary to
 * wait for 1 vsync before modifying the timing enable 
bit.
 * */
-   ulDisplayCtrlReg = FIELD_SET(ulDisplayCtrlReg,
+   reg = FIELD_SET(reg,

PANEL_DISPLAY_CTRL, PLANE, DISABLE);
-   POKE32(PANEL_DISPLAY_CTRL, ulDisplayCtrlReg);
+   POKE32(PANEL_DISPLAY_CTRL, reg);
 
-   ulDisplayCtrlReg = FIELD_SET(ulDisplayCtrlReg,
+   reg = FIELD_SET(reg,

PANEL_DISPLAY_CTRL, TIMING, DISABLE);
-   POKE32(PANEL_DISPLAY_CTRL, ulDisplayCtrlReg);
+   POKE32(PANEL_DISPLAY_CTRL, reg);
}
 
} else {
/* Set the secondary display control */
-   ulDisplayCtrlReg = PEEK32(CRT_DISPLAY_CTRL);
+   reg = PEEK32(CRT_DISPLAY_CTRL);
 
if (disp_state) {
/* Timing should be enabled first before enabling the 
plane because changing at the
   same time does not guarantee that the plane will 
also enabled or disabled.
   */
-   ulDisplayCtrlReg = FIELD_SET(ulDisplayCtrlReg,
+   reg = FIELD_SET(reg,

CRT_DISPLAY_CTRL, TIMING, ENABLE);

[PATCH 08/30] staging: sm750fb: use BIT macro for VGA_CONFIGURATION single-bit fields

2016-02-10 Thread Mike Rapoport
Replace complex defintion of VGA_CONFIGURATION register fields with BIT()
macro and use open-coded implementation for VGA_CONFIGURATION
manipulations.

Signed-off-by: Mike Rapoport 
---
 drivers/staging/sm750fb/ddk750_chip.c | 3 +--
 drivers/staging/sm750fb/ddk750_reg.h  | 8 ++--
 2 files changed, 3 insertions(+), 8 deletions(-)

diff --git a/drivers/staging/sm750fb/ddk750_chip.c 
b/drivers/staging/sm750fb/ddk750_chip.c
index d813cc6..2d1128f 100644
--- a/drivers/staging/sm750fb/ddk750_chip.c
+++ b/drivers/staging/sm750fb/ddk750_chip.c
@@ -211,8 +211,7 @@ int ddk750_initHw(initchip_param_t *pInitParam)
if (getChipType() != SM750LE) {
/*  set panel pll and graphic mode via mmio_88 */
reg = PEEK32(VGA_CONFIGURATION);
-   reg = FIELD_SET(reg, VGA_CONFIGURATION, PLL, PANEL);
-   reg = FIELD_SET(reg, VGA_CONFIGURATION, MODE, GRAPHIC);
+   reg |= (VGA_CONFIGURATION_PLL | VGA_CONFIGURATION_MODE);
POKE32(VGA_CONFIGURATION, reg);
} else {
 #if defined(__i386__) || defined(__x86_64__)
diff --git a/drivers/staging/sm750fb/ddk750_reg.h 
b/drivers/staging/sm750fb/ddk750_reg.h
index ac3cb36..e873a10 100644
--- a/drivers/staging/sm750fb/ddk750_reg.h
+++ b/drivers/staging/sm750fb/ddk750_reg.h
@@ -548,12 +548,8 @@
 
 #define VGA_CONFIGURATION 0x88
 #define VGA_CONFIGURATION_USER_DEFINE 5:4
-#define VGA_CONFIGURATION_PLL 2:2
-#define VGA_CONFIGURATION_PLL_VGA 0
-#define VGA_CONFIGURATION_PLL_PANEL   1
-#define VGA_CONFIGURATION_MODE1:1
-#define VGA_CONFIGURATION_MODE_TEXT   0
-#define VGA_CONFIGURATION_MODE_GRAPHIC1
+#define VGA_CONFIGURATION_PLL BIT(2)
+#define VGA_CONFIGURATION_MODEBIT(1)
 
 #endif
 
-- 
1.9.1

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


[PATCH 14/30] staging: sm750fb: refactor setDisplayControl function

2016-02-10 Thread Mike Rapoport
The enable/disbable sequence in setDisplayControl function is duplicated
for primary and secondary display controllers. The function can be
refactored so that the common part of register access will be shared for
both controllers.

Signed-off-by: Mike Rapoport 
---
 drivers/staging/sm750fb/ddk750_display.c | 131 +++
 1 file changed, 45 insertions(+), 86 deletions(-)

diff --git a/drivers/staging/sm750fb/ddk750_display.c 
b/drivers/staging/sm750fb/ddk750_display.c
index f3f0026..ae8bb37 100644
--- a/drivers/staging/sm750fb/ddk750_display.c
+++ b/drivers/staging/sm750fb/ddk750_display.c
@@ -9,96 +9,55 @@
 static void setDisplayControl(int ctrl, int disp_state)
 {
/* state != 0 means turn on both timing & plane en_bit */
-   unsigned long reg, reserved;
-   int cnt;
+   unsigned long reg, val, reserved;
+   int cnt = 0;
 
-   cnt = 0;
-
-   /* Set the primary display control */
if (!ctrl) {
-   reg = PEEK32(PANEL_DISPLAY_CTRL);
-   /* Turn on/off the Panel display control */
-   if (disp_state) {
-   /* Timing should be enabled first before enabling the 
plane
-* because changing at the same time does not guarantee 
that
-* the plane will also enabled or disabled.
-*/
-   reg = FIELD_SET(reg, DISPLAY_CTRL, TIMING, ENABLE);
-   POKE32(PANEL_DISPLAY_CTRL, reg);
-
-   reg = FIELD_SET(reg, DISPLAY_CTRL, PLANE, ENABLE);
-
-   /* Added some masks to mask out the reserved bits.
-* Sometimes, the reserved bits are set/reset randomly 
when
-* writing to the PRIMARY_DISPLAY_CTRL, therefore, the 
register
-* reserved bits are needed to be masked out.
-*/
-   reserved = PANEL_DISPLAY_CTRL_RESERVED_MASK;
-
-   /* Somehow the register value on the plane is not set
-* until a few delay. Need to write
-* and read it a couple times
-*/
-   do {
-   cnt++;
-   POKE32(PANEL_DISPLAY_CTRL, reg);
-   } while ((PEEK32(PANEL_DISPLAY_CTRL) & ~reserved) !=
-   (reg & ~reserved));
-   printk("Set Panel Plane enbit:after tried %d times\n", 
cnt);
-   } else {
-   /* When turning off, there is no rule on the programming
-* sequence since whenever the clock is off, then it 
does not
-* matter whether the plane is enabled or disabled.
-* Note: Modifying the plane bit will take effect on the
-* next vertical sync. Need to find out if it is 
necessary to
-* wait for 1 vsync before modifying the timing enable 
bit.
-* */
-   reg = FIELD_SET(reg, DISPLAY_CTRL, PLANE, DISABLE);
-   POKE32(PANEL_DISPLAY_CTRL, reg);
-
-   reg = FIELD_SET(reg, DISPLAY_CTRL, TIMING, DISABLE);
-   POKE32(PANEL_DISPLAY_CTRL, reg);
-   }
-
+   reg = PANEL_DISPLAY_CTRL;
+   reserved = PANEL_DISPLAY_CTRL_RESERVED_MASK;
} else {
-   /* Set the secondary display control */
-   reg = PEEK32(CRT_DISPLAY_CTRL);
+   reg = CRT_DISPLAY_CTRL;
+   reserved = CRT_DISPLAY_CTRL_RESERVED_MASK;
+   }
 
-   if (disp_state) {
-   /* Timing should be enabled first before enabling the 
plane because changing at the
-  same time does not guarantee that the plane will 
also enabled or disabled.
-  */
-   reg = FIELD_SET(reg, DISPLAY_CTRL, TIMING, ENABLE);
-   POKE32(CRT_DISPLAY_CTRL, reg);
-
-   reg = FIELD_SET(reg, DISPLAY_CTRL, PLANE, ENABLE);
-
-   /* Added some masks to mask out the reserved bits.
-* Sometimes, the reserved bits are set/reset randomly 
when
-* writing to the PRIMARY_DISPLAY_CTRL, therefore, the 
register
-* reserved bits are needed to be masked out.
-*/
-   reserved = CRT_DISPLAY_CTRL_RESERVED_MASK;
-   do {
-   cnt++;
-   POKE32(CRT_DISPLAY_CTRL, reg);
-   } while ((PEEK32(CRT_DISPLAY_CTRL) & ~reserved) !=
-   (reg & ~reserved));
-   printk("Set Crt Plane enbit:after tried

[PATCH 13/30] staging: sm750fb: merge reserved bits of PANEL/CRT_DISPLAY_CTRL registers

2016-02-10 Thread Mike Rapoport
Use single mask for reserved bits in PANEL_DISPLAY_CTRL and
CRT_DISPLAY_CTRL registers.

Signed-off-by: Mike Rapoport 
---
 drivers/staging/sm750fb/ddk750_display.c | 11 ++-
 drivers/staging/sm750fb/ddk750_mode.c|  7 ++-
 drivers/staging/sm750fb/ddk750_reg.h | 29 ++---
 3 files changed, 6 insertions(+), 41 deletions(-)

diff --git a/drivers/staging/sm750fb/ddk750_display.c 
b/drivers/staging/sm750fb/ddk750_display.c
index 42da3cd0..f3f0026 100644
--- a/drivers/staging/sm750fb/ddk750_display.c
+++ b/drivers/staging/sm750fb/ddk750_display.c
@@ -33,9 +33,7 @@ static void setDisplayControl(int ctrl, int disp_state)
 * writing to the PRIMARY_DISPLAY_CTRL, therefore, the 
register
 * reserved bits are needed to be masked out.
 */
-   reserved = FIELD_SET(0, PANEL_DISPLAY_CTRL, 
RESERVED_1_MASK, ENABLE) |
-   FIELD_SET(0, PANEL_DISPLAY_CTRL, 
RESERVED_2_MASK, ENABLE) |
-   FIELD_SET(0, PANEL_DISPLAY_CTRL, 
RESERVED_3_MASK, ENABLE);
+   reserved = PANEL_DISPLAY_CTRL_RESERVED_MASK;
 
/* Somehow the register value on the plane is not set
 * until a few delay. Need to write
@@ -80,12 +78,7 @@ static void setDisplayControl(int ctrl, int disp_state)
 * writing to the PRIMARY_DISPLAY_CTRL, therefore, the 
register
 * reserved bits are needed to be masked out.
 */
-
-   reserved = FIELD_SET(0, CRT_DISPLAY_CTRL, 
RESERVED_1_MASK, ENABLE) |
-   FIELD_SET(0, CRT_DISPLAY_CTRL, RESERVED_2_MASK, 
ENABLE) |
-   FIELD_SET(0, CRT_DISPLAY_CTRL, RESERVED_3_MASK, 
ENABLE) |
-   FIELD_SET(0, CRT_DISPLAY_CTRL, RESERVED_4_MASK, 
ENABLE);
-
+   reserved = CRT_DISPLAY_CTRL_RESERVED_MASK;
do {
cnt++;
POKE32(CRT_DISPLAY_CTRL, reg);
diff --git a/drivers/staging/sm750fb/ddk750_mode.c 
b/drivers/staging/sm750fb/ddk750_mode.c
index f81e053..a618e86 100644
--- a/drivers/staging/sm750fb/ddk750_mode.c
+++ b/drivers/staging/sm750fb/ddk750_mode.c
@@ -152,11 +152,8 @@ static int programModeRegisters(mode_parameter_t 
*pModeParam, pll_value_t *pll)
FIELD_SET(0, DISPLAY_CTRL, TIMING, ENABLE) |
FIELD_SET(0, DISPLAY_CTRL, PLANE, ENABLE);
 
-   reserved = FIELD_SET(0, PANEL_DISPLAY_CTRL, RESERVED_1_MASK,
-ENABLE) |
-FIELD_SET(0, PANEL_DISPLAY_CTRL, 
RESERVED_2_MASK, ENABLE) |
-FIELD_SET(0, PANEL_DISPLAY_CTRL, 
RESERVED_3_MASK, ENABLE) |
-FIELD_SET(0, PANEL_DISPLAY_CTRL, VSYNC, 
ACTIVE_LOW);
+   reserved = PANEL_DISPLAY_CTRL_RESERVED_MASK |
+   FIELD_SET(0, PANEL_DISPLAY_CTRL, VSYNC, ACTIVE_LOW);
 
reg = (PEEK32(PANEL_DISPLAY_CTRL) & ~reserved)
& FIELD_CLEAR(DISPLAY_CTRL, CLOCK_PHASE)
diff --git a/drivers/staging/sm750fb/ddk750_reg.h 
b/drivers/staging/sm750fb/ddk750_reg.h
index 4d66f61..dac087f 100644
--- a/drivers/staging/sm750fb/ddk750_reg.h
+++ b/drivers/staging/sm750fb/ddk750_reg.h
@@ -782,9 +782,7 @@
 
 
 #define PANEL_DISPLAY_CTRL0x08
-#define PANEL_DISPLAY_CTRL_RESERVED_1_MASK31:30
-#define PANEL_DISPLAY_CTRL_RESERVED_1_MASK_DISABLE0
-#define PANEL_DISPLAY_CTRL_RESERVED_1_MASK_ENABLE 3
+#define PANEL_DISPLAY_CTRL_RESERVED_MASK  0xc0f08000
 #define PANEL_DISPLAY_CTRL_SELECT 29:28
 #define PANEL_DISPLAY_CTRL_SELECT_PANEL   0
 #define PANEL_DISPLAY_CTRL_SELECT_VGA 1
@@ -801,9 +799,6 @@
 #define PANEL_DISPLAY_CTRL_FPVDDEN24:24
 #define PANEL_DISPLAY_CTRL_FPVDDEN_LOW0
 #define PANEL_DISPLAY_CTRL_FPVDDEN_HIGH   1
-#define PANEL_DISPLAY_CTRL_RESERVED_2_MASK23:20
-#define PANEL_DISPLAY_CTRL_RESERVED_2_MASK_DISABLE0
-#define PANEL_DISPLAY_CTRL_RESERVED_2_MASK_ENABLE 15
 
 #define PANEL_DISPLAY_CTRL_TFT_DISP 19:18
 #define PANEL_DISPLAY_CTRL_TFT_DISP_24 0
@@ -822,9 +817,6 @@
 #define PANEL_DISPLAY_CTRL_FIFO_3 1
 #define PANEL_DISPLAY_CTRL_FIFO_7 2
 #define PANEL_DISPLAY_CTRL_FIFO_113
-#define PANEL_DISPLAY_CTRL_RESERVED_3_MASK15:15
-#define PANEL_DISPLAY_CTRL_RESERVED_3_MASK_DISABLE0
-#define PANEL_DISPLAY_CTRL_RESERVED_3_MASK_ENABLE 1
 #define DISPLAY_CTRL_CLOCK_PHASE  14:14
 #define DISPLAY_CTRL_CLOCK_PHASE_ACTIVE_HIGH  0
 #define DISPLAY_CTRL_CLOCK_PHASE_ACTIVE_LOW   1
@@

[PATCH 15/30] staging: sm750fb: hw_sm750_setBLANK: reduce printk verbosity

2016-02-10 Thread Mike Rapoport
pr_debug would be enough

Signed-off-by: Mike Rapoport 
---
 drivers/staging/sm750fb/sm750_hw.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/staging/sm750fb/sm750_hw.c 
b/drivers/staging/sm750fb/sm750_hw.c
index c0c2f1c..52fd250 100644
--- a/drivers/staging/sm750fb/sm750_hw.c
+++ b/drivers/staging/sm750fb/sm750_hw.c
@@ -414,13 +414,13 @@ int hw_sm750_setBLANK(struct lynxfb_output *output, int 
blank)
 
switch (blank) {
case FB_BLANK_UNBLANK:
-   pr_info("flag = FB_BLANK_UNBLANK\n");
+   pr_debug("flag = FB_BLANK_UNBLANK\n");
dpms = SYSTEM_CTRL_DPMS_VPHP;
pps = PANEL_DISPLAY_CTRL_DATA_ENABLE;
crtdb = CRT_DISPLAY_CTRL_BLANK_OFF;
break;
case FB_BLANK_NORMAL:
-   pr_info("flag = FB_BLANK_NORMAL\n");
+   pr_debug("flag = FB_BLANK_NORMAL\n");
dpms = SYSTEM_CTRL_DPMS_VPHP;
pps = PANEL_DISPLAY_CTRL_DATA_DISABLE;
crtdb = CRT_DISPLAY_CTRL_BLANK_ON;
-- 
1.9.1

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


[PATCH 17/30] staging: sm750fb: remove PANEL_DISPLAY_CTRL_TFT_DISP defines

2016-02-10 Thread Mike Rapoport
The PANEL_DISPLAY_CTRL_TFT_DISP definitions artificially encode
PANEL_DISPLAY_CTRL_DUAL_DISPLAY and PANEL_DISPLAY_CTRL_DOUBLE_PIXEL bits
combinations. Replace the PANEL_DISPLAY_CTRL_TFT_DISP usage with direct use
of the bits defined in the datasheet.

Signed-off-by: Mike Rapoport 
---
 drivers/staging/sm750fb/ddk750_reg.h |  6 --
 drivers/staging/sm750fb/sm750_hw.c   | 17 ++---
 2 files changed, 10 insertions(+), 13 deletions(-)

diff --git a/drivers/staging/sm750fb/ddk750_reg.h 
b/drivers/staging/sm750fb/ddk750_reg.h
index 6753384..6df3827 100644
--- a/drivers/staging/sm750fb/ddk750_reg.h
+++ b/drivers/staging/sm750fb/ddk750_reg.h
@@ -791,12 +791,6 @@
 #define PANEL_DISPLAY_CTRL_VBIASENBIT(26)
 #define PANEL_DISPLAY_CTRL_DATA   BIT(25)
 #define PANEL_DISPLAY_CTRL_FPVDDENBIT(24)
-
-#define PANEL_DISPLAY_CTRL_TFT_DISP 19:18
-#define PANEL_DISPLAY_CTRL_TFT_DISP_24 0
-#define PANEL_DISPLAY_CTRL_TFT_DISP_36 1
-#define PANEL_DISPLAY_CTRL_TFT_DISP_18 2
-
 #define PANEL_DISPLAY_CTRL_DUAL_DISPLAY   BIT(19)
 #define PANEL_DISPLAY_CTRL_DOUBLE_PIXEL   BIT(18)
 #define PANEL_DISPLAY_CTRL_FIFO   17:16
diff --git a/drivers/staging/sm750fb/sm750_hw.c 
b/drivers/staging/sm750fb/sm750_hw.c
index 3849891..d965954 100644
--- a/drivers/staging/sm750fb/sm750_hw.c
+++ b/drivers/staging/sm750fb/sm750_hw.c
@@ -130,17 +130,20 @@ int hw_sm750_inithw(struct sm750_dev *sm750_dev, struct 
pci_dev *pdev)
POKE32(SYSTEM_CTRL, val);
}
 
+   val = PEEK32(PANEL_DISPLAY_CTRL) &
+   ~(PANEL_DISPLAY_CTRL_DUAL_DISPLAY |
+ PANEL_DISPLAY_CTRL_DOUBLE_PIXEL);
switch (sm750_dev->pnltype) {
-   case sm750_doubleTFT:
case sm750_24TFT:
+   break;
+   case sm750_doubleTFT:
+   val |= PANEL_DISPLAY_CTRL_DOUBLE_PIXEL;
+   break;
case sm750_dualTFT:
-   POKE32(PANEL_DISPLAY_CTRL,
-   FIELD_VALUE(PEEK32(PANEL_DISPLAY_CTRL),
-   PANEL_DISPLAY_CTRL,
-   TFT_DISP,
-   sm750_dev->pnltype));
-   break;
+   val |= PANEL_DISPLAY_CTRL_DUAL_DISPLAY;
+   break;
}
+   POKE32(PANEL_DISPLAY_CTRL, val);
} else {
/* for 750LE ,no DVI chip initialization makes Monitor no 
signal */
/* Set up GPIO for software I2C to program DVI chip in the
-- 
1.9.1

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


[PATCH 18/30] staging: sm750fb: change definition of PANEL_DISPLAY_CTRL multi-bit fields

2016-02-10 Thread Mike Rapoport
Use more straight-forward definitions for multi-bit fields of
PANEL_DISPLAY_CTRL register and use open-coded implementation for register
manipulation

Signed-off-by: Mike Rapoport 
---
 drivers/staging/sm750fb/ddk750_display.c |  4 +++-
 drivers/staging/sm750fb/ddk750_reg.h | 27 ++-
 drivers/staging/sm750fb/sm750_hw.c   |  6 +-
 3 files changed, 18 insertions(+), 19 deletions(-)

diff --git a/drivers/staging/sm750fb/ddk750_display.c 
b/drivers/staging/sm750fb/ddk750_display.c
index f0e0444..fb5523c 100644
--- a/drivers/staging/sm750fb/ddk750_display.c
+++ b/drivers/staging/sm750fb/ddk750_display.c
@@ -144,7 +144,9 @@ void ddk750_setLogicalDispOut(disp_output_t output)
if (output & PNL_2_USAGE) {
/* set panel path controller select */
reg = PEEK32(PANEL_DISPLAY_CTRL);
-   reg = FIELD_VALUE(reg, PANEL_DISPLAY_CTRL, SELECT, (output & 
PNL_2_MASK)>>PNL_2_OFFSET);
+   reg &= ~PANEL_DISPLAY_CTRL_SELECT_MASK;
+   reg |= (((output & PNL_2_MASK) >> PNL_2_OFFSET) <<
+   PANEL_DISPLAY_CTRL_SELECT_SHIFT);
POKE32(PANEL_DISPLAY_CTRL, reg);
}
 
diff --git a/drivers/staging/sm750fb/ddk750_reg.h 
b/drivers/staging/sm750fb/ddk750_reg.h
index 6df3827..cdc5867 100644
--- a/drivers/staging/sm750fb/ddk750_reg.h
+++ b/drivers/staging/sm750fb/ddk750_reg.h
@@ -783,21 +783,22 @@
 
 #define PANEL_DISPLAY_CTRL0x08
 #define PANEL_DISPLAY_CTRL_RESERVED_MASK  0xc0f08000
-#define PANEL_DISPLAY_CTRL_SELECT 29:28
-#define PANEL_DISPLAY_CTRL_SELECT_PANEL   0
-#define PANEL_DISPLAY_CTRL_SELECT_VGA 1
-#define PANEL_DISPLAY_CTRL_SELECT_CRT 2
+#define PANEL_DISPLAY_CTRL_SELECT_SHIFT   28
+#define PANEL_DISPLAY_CTRL_SELECT_MASK(0x3 << 28)
+#define PANEL_DISPLAY_CTRL_SELECT_PANEL   (0x0 << 28)
+#define PANEL_DISPLAY_CTRL_SELECT_VGA (0x1 << 28)
+#define PANEL_DISPLAY_CTRL_SELECT_CRT (0x2 << 28)
 #define PANEL_DISPLAY_CTRL_FPEN   BIT(27)
 #define PANEL_DISPLAY_CTRL_VBIASENBIT(26)
 #define PANEL_DISPLAY_CTRL_DATA   BIT(25)
 #define PANEL_DISPLAY_CTRL_FPVDDENBIT(24)
 #define PANEL_DISPLAY_CTRL_DUAL_DISPLAY   BIT(19)
 #define PANEL_DISPLAY_CTRL_DOUBLE_PIXEL   BIT(18)
-#define PANEL_DISPLAY_CTRL_FIFO   17:16
-#define PANEL_DISPLAY_CTRL_FIFO_1 0
-#define PANEL_DISPLAY_CTRL_FIFO_3 1
-#define PANEL_DISPLAY_CTRL_FIFO_7 2
-#define PANEL_DISPLAY_CTRL_FIFO_113
+#define PANEL_DISPLAY_CTRL_FIFO   (0x3 << 16)
+#define PANEL_DISPLAY_CTRL_FIFO_1 (0x0 << 16)
+#define PANEL_DISPLAY_CTRL_FIFO_3 (0x1 << 16)
+#define PANEL_DISPLAY_CTRL_FIFO_7 (0x2 << 16)
+#define PANEL_DISPLAY_CTRL_FIFO_11(0x3 << 16)
 #define DISPLAY_CTRL_CLOCK_PHASE  BIT(14)
 #define DISPLAY_CTRL_VSYNC_PHASE  BIT(13)
 #define DISPLAY_CTRL_HSYNC_PHASE  BIT(12)
@@ -811,10 +812,10 @@
 #define PANEL_DISPLAY_CTRL_HORIZONTAL_PAN BIT(4)
 #define DISPLAY_CTRL_GAMMABIT(3)
 #define DISPLAY_CTRL_PLANEBIT(2)
-#define PANEL_DISPLAY_CTRL_FORMAT 1:0
-#define PANEL_DISPLAY_CTRL_FORMAT_8   0
-#define PANEL_DISPLAY_CTRL_FORMAT_16  1
-#define PANEL_DISPLAY_CTRL_FORMAT_32  2
+#define PANEL_DISPLAY_CTRL_FORMAT (0x3 << 0)
+#define PANEL_DISPLAY_CTRL_FORMAT_8   (0x0 << 0)
+#define PANEL_DISPLAY_CTRL_FORMAT_16  (0x1 << 0)
+#define PANEL_DISPLAY_CTRL_FORMAT_32  (0x2 << 0)
 
 #define PANEL_PAN_CTRL0x080004
 #define PANEL_PAN_CTRL_VERTICAL_PAN   31:24
diff --git a/drivers/staging/sm750fb/sm750_hw.c 
b/drivers/staging/sm750fb/sm750_hw.c
index d965954..964c5f0 100644
--- a/drivers/staging/sm750fb/sm750_hw.c
+++ b/drivers/staging/sm750fb/sm750_hw.c
@@ -336,11 +336,7 @@ int hw_sm750_crtc_setMode(struct lynxfb_crtc *crtc,
 
/* set pixel format */
reg = PEEK32(PANEL_DISPLAY_CTRL);
-   POKE32(PANEL_DISPLAY_CTRL,
-   FIELD_VALUE(reg,
-   PANEL_DISPLAY_CTRL, FORMAT,
-   (var->bits_per_pixel >> 4)
-   ));
+   POKE32(PANEL_DISPLAY_CTRL, reg | (var->bits_per_pixel >> 4));
} else {
/* not implemented now */
POKE32(CRT_FB_ADDRESS, crtc->oScreen);
-- 
1.9.1

___
devel mailing list
de...@linuxd

[PATCH 19/30] staging: sm750fb: change definition of PANEL_FB_ADDRESS fields

2016-02-10 Thread Mike Rapoport
Use BIT() macro for single-bit fields of PANEL_FB_ADDRESS register and
define PANEL_FB_ADDRESS_ADDRESS_MASK for masking the address bits.

Signed-off-by: Mike Rapoport 
---
 drivers/staging/sm750fb/ddk750_reg.h | 10 +++---
 drivers/staging/sm750fb/sm750_hw.c   |  8 +++-
 2 files changed, 6 insertions(+), 12 deletions(-)

diff --git a/drivers/staging/sm750fb/ddk750_reg.h 
b/drivers/staging/sm750fb/ddk750_reg.h
index cdc5867..1b96af3 100644
--- a/drivers/staging/sm750fb/ddk750_reg.h
+++ b/drivers/staging/sm750fb/ddk750_reg.h
@@ -828,13 +828,9 @@
 #define PANEL_COLOR_KEY_VALUE 15:0
 
 #define PANEL_FB_ADDRESS  0x08000C
-#define PANEL_FB_ADDRESS_STATUS   31:31
-#define PANEL_FB_ADDRESS_STATUS_CURRENT   0
-#define PANEL_FB_ADDRESS_STATUS_PENDING   1
-#define PANEL_FB_ADDRESS_EXT  27:27
-#define PANEL_FB_ADDRESS_EXT_LOCAL0
-#define PANEL_FB_ADDRESS_EXT_EXTERNAL 1
-#define PANEL_FB_ADDRESS_ADDRESS  25:0
+#define PANEL_FB_ADDRESS_STATUS   BIT(31)
+#define PANEL_FB_ADDRESS_EXT  BIT(27)
+#define PANEL_FB_ADDRESS_ADDRESS_MASK 0x1ff
 
 #define PANEL_FB_WIDTH0x080010
 #define PANEL_FB_WIDTH_WIDTH  29:16
diff --git a/drivers/staging/sm750fb/sm750_hw.c 
b/drivers/staging/sm750fb/sm750_hw.c
index 964c5f0..938ea72 100644
--- a/drivers/staging/sm750fb/sm750_hw.c
+++ b/drivers/staging/sm750fb/sm750_hw.c
@@ -308,9 +308,7 @@ int hw_sm750_crtc_setMode(struct lynxfb_crtc *crtc,
if (crtc->channel != sm750_secondary) {
/* set pitch, offset ,width,start address ,etc... */
POKE32(PANEL_FB_ADDRESS,
-   FIELD_SET(0, PANEL_FB_ADDRESS, STATUS, CURRENT)|
-   FIELD_SET(0, PANEL_FB_ADDRESS, EXT, LOCAL)|
-   FIELD_VALUE(0, PANEL_FB_ADDRESS, ADDRESS, 
crtc->oScreen));
+  crtc->oScreen & PANEL_FB_ADDRESS_ADDRESS_MASK);
 
reg = var->xres * (var->bits_per_pixel >> 3);
/* crtc->channel is not equal to par->index on numeric,be aware 
of that */
@@ -538,8 +536,8 @@ int hw_sm750_pan_display(struct lynxfb_crtc *crtc,
total += crtc->oScreen;
if (crtc->channel == sm750_primary) {
POKE32(PANEL_FB_ADDRESS,
-   FIELD_VALUE(PEEK32(PANEL_FB_ADDRESS),
-   PANEL_FB_ADDRESS, ADDRESS, total));
+  PEEK32(PANEL_FB_ADDRESS) |
+  (total & PANEL_FB_ADDRESS_ADDRESS_MASK));
} else {
POKE32(CRT_FB_ADDRESS,
FIELD_VALUE(PEEK32(CRT_FB_ADDRESS),
-- 
1.9.1

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


[PATCH 20/30] staging: sm750fb: change definition of PANEL_FB_WIDTH fields

2016-02-10 Thread Mike Rapoport
Use stratight-forward defintion of PANEL_FB_WIDTH register fields and use
open-coded implementation for register manipulations

Signed-off-by: Mike Rapoport 
---
 drivers/staging/sm750fb/ddk750_reg.h | 5 +++--
 drivers/staging/sm750fb/sm750_hw.c   | 8 
 2 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/drivers/staging/sm750fb/ddk750_reg.h 
b/drivers/staging/sm750fb/ddk750_reg.h
index 1b96af3..7e0cc95 100644
--- a/drivers/staging/sm750fb/ddk750_reg.h
+++ b/drivers/staging/sm750fb/ddk750_reg.h
@@ -833,8 +833,9 @@
 #define PANEL_FB_ADDRESS_ADDRESS_MASK 0x1ff
 
 #define PANEL_FB_WIDTH0x080010
-#define PANEL_FB_WIDTH_WIDTH  29:16
-#define PANEL_FB_WIDTH_OFFSET 13:0
+#define PANEL_FB_WIDTH_WIDTH_SHIFT16
+#define PANEL_FB_WIDTH_WIDTH_MASK (0x3fff << 16)
+#define PANEL_FB_WIDTH_OFFSET_MASK0x3fff
 
 #define PANEL_WINDOW_WIDTH0x080014
 #define PANEL_WINDOW_WIDTH_WIDTH  27:16
diff --git a/drivers/staging/sm750fb/sm750_hw.c 
b/drivers/staging/sm750fb/sm750_hw.c
index 938ea72..9e350b4 100644
--- a/drivers/staging/sm750fb/sm750_hw.c
+++ b/drivers/staging/sm750fb/sm750_hw.c
@@ -313,10 +313,10 @@ int hw_sm750_crtc_setMode(struct lynxfb_crtc *crtc,
reg = var->xres * (var->bits_per_pixel >> 3);
/* crtc->channel is not equal to par->index on numeric,be aware 
of that */
reg = ALIGN(reg, crtc->line_pad);
-
-   POKE32(PANEL_FB_WIDTH,
-   FIELD_VALUE(0, PANEL_FB_WIDTH, WIDTH, reg)|
-   FIELD_VALUE(0, PANEL_FB_WIDTH, OFFSET, 
fix->line_length));
+   reg = (reg << PANEL_FB_WIDTH_WIDTH_SHIFT) &
+  PANEL_FB_WIDTH_WIDTH_MASK;
+   reg |= (fix->line_length & PANEL_FB_WIDTH_OFFSET_MASK);
+   POKE32(PANEL_FB_WIDTH, reg);
 
POKE32(PANEL_WINDOW_WIDTH,
FIELD_VALUE(0, PANEL_WINDOW_WIDTH, WIDTH, var->xres - 
1)|
-- 
1.9.1

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


[PATCH 24/30] staging: sm750fb: change definition of PANEL_PLANE_BR fields

2016-02-10 Thread Mike Rapoport
Use stratight-forward defintion of PANEL_PLANE_BR register fields and
use open-coded implementation for register manipulations

Signed-off-by: Mike Rapoport 
---
 drivers/staging/sm750fb/ddk750_reg.h | 5 +++--
 drivers/staging/sm750fb/sm750_hw.c   | 7 ---
 2 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/drivers/staging/sm750fb/ddk750_reg.h 
b/drivers/staging/sm750fb/ddk750_reg.h
index b8460a5..6551098 100644
--- a/drivers/staging/sm750fb/ddk750_reg.h
+++ b/drivers/staging/sm750fb/ddk750_reg.h
@@ -853,8 +853,9 @@
 #define PANEL_PLANE_TL_LEFT_MASK  0xeff
 
 #define PANEL_PLANE_BR0x080020
-#define PANEL_PLANE_BR_BOTTOM 26:16
-#define PANEL_PLANE_BR_RIGHT  10:0
+#define PANEL_PLANE_BR_BOTTOM_SHIFT   16
+#define PANEL_PLANE_BR_BOTTOM_MASK(0xeff << 16)
+#define PANEL_PLANE_BR_RIGHT_MASK 0xeff
 
 #define PANEL_HORIZONTAL_TOTAL0x080024
 #define PANEL_HORIZONTAL_TOTAL_TOTAL  27:16
diff --git a/drivers/staging/sm750fb/sm750_hw.c 
b/drivers/staging/sm750fb/sm750_hw.c
index 0ea3106..5951d1a 100644
--- a/drivers/staging/sm750fb/sm750_hw.c
+++ b/drivers/staging/sm750fb/sm750_hw.c
@@ -331,9 +331,10 @@ int hw_sm750_crtc_setMode(struct lynxfb_crtc *crtc,
 
POKE32(PANEL_PLANE_TL, 0);
 
-   POKE32(PANEL_PLANE_BR,
-   FIELD_VALUE(0, PANEL_PLANE_BR, BOTTOM, var->yres - 1)|
-   FIELD_VALUE(0, PANEL_PLANE_BR, RIGHT, var->xres - 1));
+   reg = ((var->yres - 1) << PANEL_PLANE_BR_BOTTOM_SHIFT) &
+  PANEL_PLANE_BR_BOTTOM_MASK;
+   reg |= ((var->xres - 1) & PANEL_PLANE_BR_RIGHT_MASK);
+   POKE32(PANEL_PLANE_BR, reg);
 
/* set pixel format */
reg = PEEK32(PANEL_DISPLAY_CTRL);
-- 
1.9.1

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


[PATCH 23/30] staging: sm750fb: change definition of PANEL_PLANE_TL fields

2016-02-10 Thread Mike Rapoport
Use stratight-forward defintion of PANEL_PLANE_TL register fields

Signed-off-by: Mike Rapoport 
---
 drivers/staging/sm750fb/ddk750_reg.h | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/staging/sm750fb/ddk750_reg.h 
b/drivers/staging/sm750fb/ddk750_reg.h
index d3359c5..b8460a5 100644
--- a/drivers/staging/sm750fb/ddk750_reg.h
+++ b/drivers/staging/sm750fb/ddk750_reg.h
@@ -848,8 +848,9 @@
 #define PANEL_WINDOW_HEIGHT_Y_MASK0xfff
 
 #define PANEL_PLANE_TL0x08001C
-#define PANEL_PLANE_TL_TOP26:16
-#define PANEL_PLANE_TL_LEFT   10:0
+#define PANEL_PLANE_TL_TOP_SHIFT  16
+#define PANEL_PLANE_TL_TOP_MASK   (0xeff << 16)
+#define PANEL_PLANE_TL_LEFT_MASK  0xeff
 
 #define PANEL_PLANE_BR0x080020
 #define PANEL_PLANE_BR_BOTTOM 26:16
-- 
1.9.1

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


[PATCH 25/30] staging: sm750fb: use BIT macro for DMA_ABORT_INTERRUPT single-bit fields

2016-02-10 Thread Mike Rapoport
Replace complex definition of DMA_ABORT_INTERRUPT register fields with
BIT() macro and use open-coded implementation for register manipulation

Signed-off-by: Mike Rapoport 
---
 drivers/staging/sm750fb/ddk750_chip.c |  2 +-
 drivers/staging/sm750fb/ddk750_reg.h  | 20 
 2 files changed, 5 insertions(+), 17 deletions(-)

diff --git a/drivers/staging/sm750fb/ddk750_chip.c 
b/drivers/staging/sm750fb/ddk750_chip.c
index 37eae59..e53a3d1 100644
--- a/drivers/staging/sm750fb/ddk750_chip.c
+++ b/drivers/staging/sm750fb/ddk750_chip.c
@@ -264,7 +264,7 @@ int ddk750_initHw(initchip_param_t *pInitParam)
 
/* Disable DMA Channel, if a former application left it on */
reg = PEEK32(DMA_ABORT_INTERRUPT);
-   reg = FIELD_SET(reg, DMA_ABORT_INTERRUPT, ABORT_1, ABORT);
+   reg |= DMA_ABORT_INTERRUPT_ABORT_1;
POKE32(DMA_ABORT_INTERRUPT, reg);
 
/* Disable DMA Power, if a former application left it on */
diff --git a/drivers/staging/sm750fb/ddk750_reg.h 
b/drivers/staging/sm750fb/ddk750_reg.h
index 6551098..73f3c34 100644
--- a/drivers/staging/sm750fb/ddk750_reg.h
+++ b/drivers/staging/sm750fb/ddk750_reg.h
@@ -1973,22 +1973,10 @@
 #define DMA_1_SIZE_CONTROL_SIZE 23:0
 
 #define DMA_ABORT_INTERRUPT 0x0D0020
-#define DMA_ABORT_INTERRUPT_ABORT_1 5:5
-#define DMA_ABORT_INTERRUPT_ABORT_1_ENABLE  0
-#define DMA_ABORT_INTERRUPT_ABORT_1_ABORT   1
-#define DMA_ABORT_INTERRUPT_ABORT_0 4:4
-#define DMA_ABORT_INTERRUPT_ABORT_0_ENABLE  0
-#define DMA_ABORT_INTERRUPT_ABORT_0_ABORT   1
-#define DMA_ABORT_INTERRUPT_INT_1   1:1
-#define DMA_ABORT_INTERRUPT_INT_1_CLEAR 0
-#define DMA_ABORT_INTERRUPT_INT_1_FINISHED  1
-#define DMA_ABORT_INTERRUPT_INT_0   0:0
-#define DMA_ABORT_INTERRUPT_INT_0_CLEAR 0
-#define DMA_ABORT_INTERRUPT_INT_0_FINISHED  1
-
-
-
-
+#define DMA_ABORT_INTERRUPT_ABORT_1 BIT(5)
+#define DMA_ABORT_INTERRUPT_ABORT_0 BIT(4)
+#define DMA_ABORT_INTERRUPT_INT_1   BIT(1)
+#define DMA_ABORT_INTERRUPT_INT_0   BIT(0)
 
 /* Default i2c CLK and Data GPIO. These are the default i2c pins */
 #define DEFAULT_I2C_SCL 30
-- 
1.9.1

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


[PATCH 21/30] staging: sm750fb: change definition of PANEL_WINDOW_WIDTH fields

2016-02-10 Thread Mike Rapoport
Use stratight-forward defintion of PANEL_WINDOW_WIDTH register fields and
use open-coded implementation for register manipulations

Signed-off-by: Mike Rapoport 
---
 drivers/staging/sm750fb/ddk750_reg.h | 5 +++--
 drivers/staging/sm750fb/sm750_hw.c   | 7 ---
 2 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/drivers/staging/sm750fb/ddk750_reg.h 
b/drivers/staging/sm750fb/ddk750_reg.h
index 7e0cc95..6e6694d 100644
--- a/drivers/staging/sm750fb/ddk750_reg.h
+++ b/drivers/staging/sm750fb/ddk750_reg.h
@@ -838,8 +838,9 @@
 #define PANEL_FB_WIDTH_OFFSET_MASK0x3fff
 
 #define PANEL_WINDOW_WIDTH0x080014
-#define PANEL_WINDOW_WIDTH_WIDTH  27:16
-#define PANEL_WINDOW_WIDTH_X  11:0
+#define PANEL_WINDOW_WIDTH_WIDTH_SHIFT16
+#define PANEL_WINDOW_WIDTH_WIDTH_MASK (0xfff << 16)
+#define PANEL_WINDOW_WIDTH_X_MASK 0xfff
 
 #define PANEL_WINDOW_HEIGHT   0x080018
 #define PANEL_WINDOW_HEIGHT_HEIGHT27:16
diff --git a/drivers/staging/sm750fb/sm750_hw.c 
b/drivers/staging/sm750fb/sm750_hw.c
index 9e350b4..a0d7214 100644
--- a/drivers/staging/sm750fb/sm750_hw.c
+++ b/drivers/staging/sm750fb/sm750_hw.c
@@ -318,9 +318,10 @@ int hw_sm750_crtc_setMode(struct lynxfb_crtc *crtc,
reg |= (fix->line_length & PANEL_FB_WIDTH_OFFSET_MASK);
POKE32(PANEL_FB_WIDTH, reg);
 
-   POKE32(PANEL_WINDOW_WIDTH,
-   FIELD_VALUE(0, PANEL_WINDOW_WIDTH, WIDTH, var->xres - 
1)|
-   FIELD_VALUE(0, PANEL_WINDOW_WIDTH, X, var->xoffset));
+   reg = ((var->xres - 1) << PANEL_WINDOW_WIDTH_WIDTH_SHIFT) &
+  PANEL_WINDOW_WIDTH_WIDTH_MASK;
+   reg |= (var->xoffset & PANEL_WINDOW_WIDTH_X_MASK);
+   POKE32(PANEL_WINDOW_WIDTH, reg);
 
POKE32(PANEL_WINDOW_HEIGHT,
FIELD_VALUE(0, PANEL_WINDOW_HEIGHT, HEIGHT, 
var->yres_virtual - 1)|
-- 
1.9.1

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


[PATCH 27/30] staging: sm750fb: change definition of CRT_DISPLAY_CTRL multi-bit fields

2016-02-10 Thread Mike Rapoport
Use more straight-forward definitions for multi-bit fields of
CRT_DISPLAY_CTRL register and use open-coded implementation for register
manipulation

Signed-off-by: Mike Rapoport 
---
 drivers/staging/sm750fb/ddk750_display.c |  4 ++-
 drivers/staging/sm750fb/ddk750_mode.c| 18 +-
 drivers/staging/sm750fb/ddk750_power.c   |  6 ++--
 drivers/staging/sm750fb/ddk750_reg.h | 58 +---
 drivers/staging/sm750fb/sm750_hw.c   |  6 ++--
 5 files changed, 49 insertions(+), 43 deletions(-)

diff --git a/drivers/staging/sm750fb/ddk750_display.c 
b/drivers/staging/sm750fb/ddk750_display.c
index 7bb6fd4..ca4973e 100644
--- a/drivers/staging/sm750fb/ddk750_display.c
+++ b/drivers/staging/sm750fb/ddk750_display.c
@@ -153,7 +153,9 @@ void ddk750_setLogicalDispOut(disp_output_t output)
if (output & CRT_2_USAGE) {
/* set crt path controller select */
reg = PEEK32(CRT_DISPLAY_CTRL);
-   reg = FIELD_VALUE(reg, CRT_DISPLAY_CTRL, SELECT, (output & 
CRT_2_MASK)>>CRT_2_OFFSET);
+   reg &= ~CRT_DISPLAY_CTRL_SELECT_MASK;
+   reg |= (((output & CRT_2_MASK) >> CRT_2_OFFSET) <<
+   CRT_DISPLAY_CTRL_SELECT_SHIFT);
/*se blank off */
reg &= ~CRT_DISPLAY_CTRL_BLANK;
POKE32(CRT_DISPLAY_CTRL, reg);
diff --git a/drivers/staging/sm750fb/ddk750_mode.c 
b/drivers/staging/sm750fb/ddk750_mode.c
index 96fd4bf..9ec3c64 100644
--- a/drivers/staging/sm750fb/ddk750_mode.c
+++ b/drivers/staging/sm750fb/ddk750_mode.c
@@ -39,26 +39,26 @@ static unsigned long 
displayControlAdjust_SM750LE(mode_parameter_t *pModeParam,
 */
 
/* Clear bit 29:27 of display control register */
-   dispControl &= FIELD_CLEAR(CRT_DISPLAY_CTRL, CLK);
+   dispControl &= ~CRT_DISPLAY_CTRL_CLK_MASK;
 
/* Set bit 29:27 of display control register for the right clock */
/* Note that SM750LE only need to supported 7 resolutions. */
if (x == 800 && y == 600)
-   dispControl = FIELD_SET(dispControl, CRT_DISPLAY_CTRL, CLK, 
PLL41);
+   dispControl |= CRT_DISPLAY_CTRL_CLK_PLL41;
else if (x == 1024 && y == 768)
-   dispControl = FIELD_SET(dispControl, CRT_DISPLAY_CTRL, CLK, 
PLL65);
+   dispControl |= CRT_DISPLAY_CTRL_CLK_PLL65;
else if (x == 1152 && y == 864)
-   dispControl = FIELD_SET(dispControl, CRT_DISPLAY_CTRL, CLK, 
PLL80);
+   dispControl |= CRT_DISPLAY_CTRL_CLK_PLL80;
else if (x == 1280 && y == 768)
-   dispControl = FIELD_SET(dispControl, CRT_DISPLAY_CTRL, CLK, 
PLL80);
+   dispControl |= CRT_DISPLAY_CTRL_CLK_PLL80;
else if (x == 1280 && y == 720)
-   dispControl = FIELD_SET(dispControl, CRT_DISPLAY_CTRL, CLK, 
PLL74);
+   dispControl |= CRT_DISPLAY_CTRL_CLK_PLL74;
else if (x == 1280 && y == 960)
-   dispControl = FIELD_SET(dispControl, CRT_DISPLAY_CTRL, CLK, 
PLL108);
+   dispControl |= CRT_DISPLAY_CTRL_CLK_PLL108;
else if (x == 1280 && y == 1024)
-   dispControl = FIELD_SET(dispControl, CRT_DISPLAY_CTRL, CLK, 
PLL108);
+   dispControl |= CRT_DISPLAY_CTRL_CLK_PLL108;
else /* default to VGA clock */
-   dispControl = FIELD_SET(dispControl, CRT_DISPLAY_CTRL, CLK, PLL25);
+   dispControl |= CRT_DISPLAY_CTRL_CLK_PLL25;
 
/* Set bit 25:24 of display controller */
dispControl |= (CRT_DISPLAY_CTRL_CRTSELECT | CRT_DISPLAY_CTRL_RGBBIT);
diff --git a/drivers/staging/sm750fb/ddk750_power.c 
b/drivers/staging/sm750fb/ddk750_power.c
index c85dfc5..ec1cac2 100644
--- a/drivers/staging/sm750fb/ddk750_power.c
+++ b/drivers/staging/sm750fb/ddk750_power.c
@@ -7,9 +7,9 @@ void ddk750_setDPMS(DPMS_t state)
unsigned int value;
 
if (getChipType() == SM750LE) {
-   value = PEEK32(CRT_DISPLAY_CTRL);
-   POKE32(CRT_DISPLAY_CTRL, FIELD_VALUE(value, CRT_DISPLAY_CTRL,
-DPMS, state));
+   value = PEEK32(CRT_DISPLAY_CTRL) & ~CRT_DISPLAY_CTRL_DPMS_MASK;
+   value |= (state << CRT_DISPLAY_CTRL_DPMS_SHIFT);
+   POKE32(CRT_DISPLAY_CTRL, value);
} else {
value = PEEK32(SYSTEM_CTRL);
value = (value & ~SYSTEM_CTRL_DPMS_MASK) | state;
diff --git a/drivers/staging/sm750fb/ddk750_reg.h 
b/drivers/staging/sm750fb/ddk750_reg.h
index 446bb85..d033d4f 100644
--- a/drivers/staging/sm750fb/ddk750_reg.h
+++ b/drivers/staging/sm750fb/ddk750_reg.h
@@ -1317,20 +1317,21 @@
 #define CRT_DISPLAY_CTRL_RESERVED_MASK0xfb008200
 
 /* SM750LE definition */
-#define CRT_DISPLAY_CTRL_DPMS 31:30
-#define CRT_DISPLAY_CTRL_DPMS_0   0
-#define CRT_DISPLAY_CTRL_DPMS_1   1
-#define CRT_DISPLAY_CTRL_DPMS_2

[PATCH 22/30] staging: sm750fb: change definition of PANEL_WINDOW_HEIGHT fields

2016-02-10 Thread Mike Rapoport
Use stratight-forward defintion of PANEL_WINDOW_HEIGHT register fields and
use open-coded implementation for register manipulations

Signed-off-by: Mike Rapoport 
---
 drivers/staging/sm750fb/ddk750_reg.h | 5 +++--
 drivers/staging/sm750fb/sm750_hw.c   | 8 +---
 2 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/drivers/staging/sm750fb/ddk750_reg.h 
b/drivers/staging/sm750fb/ddk750_reg.h
index 6e6694d..d3359c5 100644
--- a/drivers/staging/sm750fb/ddk750_reg.h
+++ b/drivers/staging/sm750fb/ddk750_reg.h
@@ -843,8 +843,9 @@
 #define PANEL_WINDOW_WIDTH_X_MASK 0xfff
 
 #define PANEL_WINDOW_HEIGHT   0x080018
-#define PANEL_WINDOW_HEIGHT_HEIGHT27:16
-#define PANEL_WINDOW_HEIGHT_Y 11:0
+#define PANEL_WINDOW_HEIGHT_HEIGHT_SHIFT  16
+#define PANEL_WINDOW_HEIGHT_HEIGHT_MASK   (0xfff << 16)
+#define PANEL_WINDOW_HEIGHT_Y_MASK0xfff
 
 #define PANEL_PLANE_TL0x08001C
 #define PANEL_PLANE_TL_TOP26:16
diff --git a/drivers/staging/sm750fb/sm750_hw.c 
b/drivers/staging/sm750fb/sm750_hw.c
index a0d7214..0ea3106 100644
--- a/drivers/staging/sm750fb/sm750_hw.c
+++ b/drivers/staging/sm750fb/sm750_hw.c
@@ -323,9 +323,11 @@ int hw_sm750_crtc_setMode(struct lynxfb_crtc *crtc,
reg |= (var->xoffset & PANEL_WINDOW_WIDTH_X_MASK);
POKE32(PANEL_WINDOW_WIDTH, reg);
 
-   POKE32(PANEL_WINDOW_HEIGHT,
-   FIELD_VALUE(0, PANEL_WINDOW_HEIGHT, HEIGHT, 
var->yres_virtual - 1)|
-   FIELD_VALUE(0, PANEL_WINDOW_HEIGHT, Y, var->yoffset));
+   reg = ((var->yres_virtual - 1) <<
+  PANEL_WINDOW_HEIGHT_HEIGHT_SHIFT);
+   reg &= PANEL_WINDOW_HEIGHT_HEIGHT_MASK;
+   reg |= (var->yoffset & PANEL_WINDOW_HEIGHT_Y_MASK);
+   POKE32(PANEL_WINDOW_HEIGHT, reg);
 
POKE32(PANEL_PLANE_TL, 0);
 
-- 
1.9.1

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


[PATCH 29/30] staging: sm750fb: use BIT macro for I2C_STATUS fields

2016-02-10 Thread Mike Rapoport
Replace complex definition of I2C_STATUS register fields with BIT() macro
and use open-coded implementation for register manipulation

Signed-off-by: Mike Rapoport 
---
 drivers/staging/sm750fb/ddk750_hwi2c.c |  4 +---
 drivers/staging/sm750fb/ddk750_reg.h   | 18 --
 2 files changed, 5 insertions(+), 17 deletions(-)

diff --git a/drivers/staging/sm750fb/ddk750_hwi2c.c 
b/drivers/staging/sm750fb/ddk750_hwi2c.c
index 1811c4b..231c021 100644
--- a/drivers/staging/sm750fb/ddk750_hwi2c.c
+++ b/drivers/staging/sm750fb/ddk750_hwi2c.c
@@ -59,9 +59,7 @@ static long hw_i2c_wait_tx_done(void)
 
/* Wait until the transfer is completed. */
timeout = HWI2C_WAIT_TIMEOUT;
-   while ((FIELD_GET(PEEK32(I2C_STATUS),
- I2C_STATUS, TX) != I2C_STATUS_TX_COMPLETED) &&
-  (timeout != 0))
+   while (!(PEEK32(I2C_STATUS) & I2C_STATUS_TX) && (timeout != 0))
timeout--;
 
if (timeout == 0)
diff --git a/drivers/staging/sm750fb/ddk750_reg.h 
b/drivers/staging/sm750fb/ddk750_reg.h
index 2a8ad57..6399599 100644
--- a/drivers/staging/sm750fb/ddk750_reg.h
+++ b/drivers/staging/sm750fb/ddk750_reg.h
@@ -1612,20 +1612,10 @@
 #define I2C_CTRL_EN BIT(0)
 
 #define I2C_STATUS  0x010042
-#define I2C_STATUS_TX   3:3
-#define I2C_STATUS_TX_PROGRESS  0
-#define I2C_STATUS_TX_COMPLETED 1
-#define I2C_TX_DONE 0x08
-#define I2C_STATUS_ERR  2:2
-#define I2C_STATUS_ERR_NORMAL   0
-#define I2C_STATUS_ERR_ERROR1
-#define I2C_STATUS_ERR_CLEAR0
-#define I2C_STATUS_ACK  1:1
-#define I2C_STATUS_ACK_RECEIVED 0
-#define I2C_STATUS_ACK_NOT  1
-#define I2C_STATUS_BSY  0:0
-#define I2C_STATUS_BSY_IDLE 0
-#define I2C_STATUS_BSY_BUSY 1
+#define I2C_STATUS_TX   BIT(3)
+#define I2C_STATUS_ERR  BIT(2)
+#define I2C_STATUS_ACK  BIT(1)
+#define I2C_STATUS_BSY  BIT(0)
 
 #define I2C_RESET   0x010042
 #define I2C_RESET_BUS_ERROR 2:2
-- 
1.9.1

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


[PATCH 28/30] staging: sm750fb: use BIT macro for I2C_CTRL fields

2016-02-10 Thread Mike Rapoport
Replace complex definition of I2C_CTRL register fields with BIT() macro and
use open-coded implementation for register manipulation

Signed-off-by: Mike Rapoport 
---
 drivers/staging/sm750fb/ddk750_hwi2c.c | 19 +++
 drivers/staging/sm750fb/ddk750_reg.h   | 20 +---
 2 files changed, 12 insertions(+), 27 deletions(-)

diff --git a/drivers/staging/sm750fb/ddk750_hwi2c.c 
b/drivers/staging/sm750fb/ddk750_hwi2c.c
index 40253bd..1811c4b 100644
--- a/drivers/staging/sm750fb/ddk750_hwi2c.c
+++ b/drivers/staging/sm750fb/ddk750_hwi2c.c
@@ -26,12 +26,10 @@ unsigned char bus_speed_mode
enableI2C(1);
 
/* Enable the I2C Controller and set the bus speed mode */
-   value = PEEK32(I2C_CTRL);
-   if (bus_speed_mode == 0)
-   value = FIELD_SET(value, I2C_CTRL, MODE, STANDARD);
-   else
-   value = FIELD_SET(value, I2C_CTRL, MODE, FAST);
-   value = FIELD_SET(value, I2C_CTRL, EN, ENABLE);
+   value = PEEK32(I2C_CTRL) & ~(I2C_CTRL_MODE | I2C_CTRL_EN);
+   if (bus_speed_mode)
+   value |= I2C_CTRL_MODE;
+   value |= I2C_CTRL_EN;
POKE32(I2C_CTRL, value);
 
return 0;
@@ -42,8 +40,7 @@ void sm750_hw_i2c_close(void)
unsigned int value;
 
/* Disable I2C controller */
-   value = PEEK32(I2C_CTRL);
-   value = FIELD_SET(value, I2C_CTRL, EN, DISABLE);
+   value = PEEK32(I2C_CTRL) & ~I2C_CTRL_EN;
POKE32(I2C_CTRL, value);
 
/* Disable I2C Power */
@@ -120,8 +117,7 @@ static unsigned int hw_i2c_write_data(
POKE32(I2C_DATA0 + i, *buf++);
 
/* Start the I2C */
-   POKE32(I2C_CTRL,
-  FIELD_SET(PEEK32(I2C_CTRL), I2C_CTRL, CTRL, START));
+   POKE32(I2C_CTRL, PEEK32(I2C_CTRL) | I2C_CTRL_CTRL);
 
/* Wait until the transfer is completed. */
if (hw_i2c_wait_tx_done() != 0)
@@ -183,8 +179,7 @@ static unsigned int hw_i2c_read_data(
POKE32(I2C_BYTE_COUNT, count);
 
/* Start the I2C */
-   POKE32(I2C_CTRL,
-  FIELD_SET(PEEK32(I2C_CTRL), I2C_CTRL, CTRL, START));
+   POKE32(I2C_CTRL, PEEK32(I2C_CTRL) | I2C_CTRL_CTRL);
 
/* Wait until transaction done. */
if (hw_i2c_wait_tx_done() != 0)
diff --git a/drivers/staging/sm750fb/ddk750_reg.h 
b/drivers/staging/sm750fb/ddk750_reg.h
index d033d4f..2a8ad57 100644
--- a/drivers/staging/sm750fb/ddk750_reg.h
+++ b/drivers/staging/sm750fb/ddk750_reg.h
@@ -1605,21 +1605,11 @@
 #define I2C_BYTE_COUNT_COUNT3:0
 
 #define I2C_CTRL0x010041
-#define I2C_CTRL_INT4:4
-#define I2C_CTRL_INT_DISABLE0
-#define I2C_CTRL_INT_ENABLE 1
-#define I2C_CTRL_DIR3:3
-#define I2C_CTRL_DIR_WR 0
-#define I2C_CTRL_DIR_RD 1
-#define I2C_CTRL_CTRL   2:2
-#define I2C_CTRL_CTRL_STOP  0
-#define I2C_CTRL_CTRL_START 1
-#define I2C_CTRL_MODE   1:1
-#define I2C_CTRL_MODE_STANDARD  0
-#define I2C_CTRL_MODE_FAST  1
-#define I2C_CTRL_EN 0:0
-#define I2C_CTRL_EN_DISABLE 0
-#define I2C_CTRL_EN_ENABLE  1
+#define I2C_CTRL_INTBIT(4)
+#define I2C_CTRL_DIRBIT(3)
+#define I2C_CTRL_CTRL   BIT(2)
+#define I2C_CTRL_MODE   BIT(1)
+#define I2C_CTRL_EN BIT(0)
 
 #define I2C_STATUS  0x010042
 #define I2C_STATUS_TX   3:3
-- 
1.9.1

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


[PATCH 30/30] staging: sm750fb: change definition of PANEL_HORIZONTAL_TOTAL fields

2016-02-10 Thread Mike Rapoport
Use stratight-forward defintion of PANEL_HORIZONTAL_TOTAL register fields
and use open-coded implementation for register manipulations

Signed-off-by: Mike Rapoport 
---
 drivers/staging/sm750fb/ddk750_mode.c | 9 ++---
 drivers/staging/sm750fb/ddk750_reg.h  | 5 +++--
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/drivers/staging/sm750fb/ddk750_mode.c 
b/drivers/staging/sm750fb/ddk750_mode.c
index 9ec3c64..7e57b57 100644
--- a/drivers/staging/sm750fb/ddk750_mode.c
+++ b/drivers/staging/sm750fb/ddk750_mode.c
@@ -122,9 +122,12 @@ static int programModeRegisters(mode_parameter_t 
*pModeParam, pll_value_t *pll)
 
POKE32(PANEL_PLL_CTRL, formatPllReg(pll));
 
-   POKE32(PANEL_HORIZONTAL_TOTAL,
-   FIELD_VALUE(0, PANEL_HORIZONTAL_TOTAL, TOTAL, 
pModeParam->horizontal_total - 1)
-   | FIELD_VALUE(0, PANEL_HORIZONTAL_TOTAL, DISPLAY_END, 
pModeParam->horizontal_display_end - 1));
+   reg = ((pModeParam->horizontal_total - 1) <<
+   PANEL_HORIZONTAL_TOTAL_TOTAL_SHIFT) &
+   PANEL_HORIZONTAL_TOTAL_TOTAL_MASK;
+   reg |= ((pModeParam->horizontal_display_end - 1) &
+   PANEL_HORIZONTAL_TOTAL_DISPLAY_END_MASK);
+   POKE32(PANEL_HORIZONTAL_TOTAL, reg);
 
POKE32(PANEL_HORIZONTAL_SYNC,
FIELD_VALUE(0, PANEL_HORIZONTAL_SYNC, WIDTH, 
pModeParam->horizontal_sync_width)
diff --git a/drivers/staging/sm750fb/ddk750_reg.h 
b/drivers/staging/sm750fb/ddk750_reg.h
index 6399599..4702897 100644
--- a/drivers/staging/sm750fb/ddk750_reg.h
+++ b/drivers/staging/sm750fb/ddk750_reg.h
@@ -858,8 +858,9 @@
 #define PANEL_PLANE_BR_RIGHT_MASK 0xeff
 
 #define PANEL_HORIZONTAL_TOTAL0x080024
-#define PANEL_HORIZONTAL_TOTAL_TOTAL  27:16
-#define PANEL_HORIZONTAL_TOTAL_DISPLAY_END11:0
+#define PANEL_HORIZONTAL_TOTAL_TOTAL_SHIFT16
+#define PANEL_HORIZONTAL_TOTAL_TOTAL_MASK (0xfff << 16)
+#define PANEL_HORIZONTAL_TOTAL_DISPLAY_END_MASK   0xfff
 
 #define PANEL_HORIZONTAL_SYNC 0x080028
 #define PANEL_HORIZONTAL_SYNC_WIDTH   23:16
-- 
1.9.1

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


[PATCH 26/30] staging: sm750fb: use BIT macro for CRT_DISPLAY_CTRL single-bit fields

2016-02-10 Thread Mike Rapoport
Replace complex definition of CRT_DISPLAY_CTRL register fields with
BIT() macro and use open-coded implementation for register manipulation

Signed-off-by: Mike Rapoport 
---
 drivers/staging/sm750fb/ddk750_display.c |  2 +-
 drivers/staging/sm750fb/ddk750_mode.c|  3 +--
 drivers/staging/sm750fb/ddk750_reg.h | 39 
 drivers/staging/sm750fb/sm750_hw.c   | 29 ++--
 4 files changed, 28 insertions(+), 45 deletions(-)

diff --git a/drivers/staging/sm750fb/ddk750_display.c 
b/drivers/staging/sm750fb/ddk750_display.c
index fb5523c..7bb6fd4 100644
--- a/drivers/staging/sm750fb/ddk750_display.c
+++ b/drivers/staging/sm750fb/ddk750_display.c
@@ -155,7 +155,7 @@ void ddk750_setLogicalDispOut(disp_output_t output)
reg = PEEK32(CRT_DISPLAY_CTRL);
reg = FIELD_VALUE(reg, CRT_DISPLAY_CTRL, SELECT, (output & 
CRT_2_MASK)>>CRT_2_OFFSET);
/*se blank off */
-   reg = FIELD_SET(reg, CRT_DISPLAY_CTRL, BLANK, OFF);
+   reg &= ~CRT_DISPLAY_CTRL_BLANK;
POKE32(CRT_DISPLAY_CTRL, reg);
 
}
diff --git a/drivers/staging/sm750fb/ddk750_mode.c 
b/drivers/staging/sm750fb/ddk750_mode.c
index 1edb235..96fd4bf 100644
--- a/drivers/staging/sm750fb/ddk750_mode.c
+++ b/drivers/staging/sm750fb/ddk750_mode.c
@@ -61,8 +61,7 @@ static unsigned long 
displayControlAdjust_SM750LE(mode_parameter_t *pModeParam,
dispControl = FIELD_SET(dispControl, CRT_DISPLAY_CTRL, CLK, PLL25);
 
/* Set bit 25:24 of display controller */
-   dispControl = FIELD_SET(dispControl, CRT_DISPLAY_CTRL, CRTSELECT, CRT);
-   dispControl = FIELD_SET(dispControl, CRT_DISPLAY_CTRL, RGBBIT, 24BIT);
+   dispControl |= (CRT_DISPLAY_CTRL_CRTSELECT | CRT_DISPLAY_CTRL_RGBBIT);
 
/* Set bit 14 of display controller */
dispControl = DISPLAY_CTRL_CLOCK_PHASE;
diff --git a/drivers/staging/sm750fb/ddk750_reg.h 
b/drivers/staging/sm750fb/ddk750_reg.h
index 73f3c34..446bb85 100644
--- a/drivers/staging/sm750fb/ddk750_reg.h
+++ b/drivers/staging/sm750fb/ddk750_reg.h
@@ -1331,38 +1331,19 @@
 #define CRT_DISPLAY_CTRL_CLK_PLL805
 #define CRT_DISPLAY_CTRL_CLK_PLL108   6
 #define CRT_DISPLAY_CTRL_CLK_RESERVED 7
-#define CRT_DISPLAY_CTRL_SHIFT_VGA_DAC26:26
-#define CRT_DISPLAY_CTRL_SHIFT_VGA_DAC_DISABLE1
-#define CRT_DISPLAY_CTRL_SHIFT_VGA_DAC_ENABLE 0
+#define CRT_DISPLAY_CTRL_SHIFT_VGA_DACBIT(26)
 
 /* SM750LE definition */
-#define CRT_DISPLAY_CTRL_CRTSELECT25:25
-#define CRT_DISPLAY_CTRL_CRTSELECT_VGA0
-#define CRT_DISPLAY_CTRL_CRTSELECT_CRT1
-#define CRT_DISPLAY_CTRL_RGBBIT   24:24
-#define CRT_DISPLAY_CTRL_RGBBIT_24BIT 0
-#define CRT_DISPLAY_CTRL_RGBBIT_12BIT 1
+#define CRT_DISPLAY_CTRL_CRTSELECTBIT(25)
+#define CRT_DISPLAY_CTRL_RGBBIT   BIT(24)
 
 #ifndef VALIDATION_CHIP
-#define CRT_DISPLAY_CTRL_SHIFT_VGA_DAC26:26
-#define CRT_DISPLAY_CTRL_SHIFT_VGA_DAC_DISABLE1
-#define CRT_DISPLAY_CTRL_SHIFT_VGA_DAC_ENABLE 0
-#define CRT_DISPLAY_CTRL_CENTERING24:24
-#define CRT_DISPLAY_CTRL_CENTERING_DISABLE0
-#define CRT_DISPLAY_CTRL_CENTERING_ENABLE 1
+#define CRT_DISPLAY_CTRL_CENTERINGBIT(24)
 #endif
-#define CRT_DISPLAY_CTRL_LOCK_TIMING  23:23
-#define CRT_DISPLAY_CTRL_LOCK_TIMING_DISABLE  0
-#define CRT_DISPLAY_CTRL_LOCK_TIMING_ENABLE   1
-#define CRT_DISPLAY_CTRL_EXPANSION22:22
-#define CRT_DISPLAY_CTRL_EXPANSION_DISABLE0
-#define CRT_DISPLAY_CTRL_EXPANSION_ENABLE 1
-#define CRT_DISPLAY_CTRL_VERTICAL_MODE21:21
-#define CRT_DISPLAY_CTRL_VERTICAL_MODE_REPLICATE  0
-#define CRT_DISPLAY_CTRL_VERTICAL_MODE_INTERPOLATE1
-#define CRT_DISPLAY_CTRL_HORIZONTAL_MODE  20:20
-#define CRT_DISPLAY_CTRL_HORIZONTAL_MODE_REPLICATE0
-#define CRT_DISPLAY_CTRL_HORIZONTAL_MODE_INTERPOLATE  1
+#define CRT_DISPLAY_CTRL_LOCK_TIMING  BIT(23)
+#define CRT_DISPLAY_CTRL_EXPANSIONBIT(22)
+#define CRT_DISPLAY_CTRL_VERTICAL_MODEBIT(21)
+#define CRT_DISPLAY_CTRL_HORIZONTAL_MODE  BIT(20)
 #define CRT_DISPLAY_CTRL_SELECT   19:18
 #define CRT_DISPLAY_CTRL_SELECT_PANEL 0
 #define CRT_DISPLAY_CTRL_SELECT_VGA   1
@@ -1372,9 +1353,7 @@
 #define CRT_DISPLAY_CTRL_FIFO_3   1
 #define CRT_DISPLAY_CTRL_FIFO_7   2
 #define CRT_DISPLAY_CTRL_FIFO_11  3
-#define CRT_DISPLAY_CTRL_BLANK10:10
-#define CRT_DISPLAY_CTRL_BLANK_OFF0
-#define CRT_DISPLAY_CTRL_BLANK_ON 1
+#def

[PATCH 00/30] staging: sm750fb: change some register fields defines

2016-02-10 Thread Mike Rapoport
Hi,

This is the second set of patches that aim to replace custom defines for
register fields. The ultimate goal is to have MSB:LSB notation for register
fields and FIELD_* macros removed. 

Mike Rapoport (30):
  staging: sm750fb: formatPllReg: rename ulPllReg to reg
  staging: sm750fb: formatPllReg: fix comment formatting
  staging: sm750fb: rename PANEL_PLL_CTRL_* fields to PLL_CTRL_*
  staging: sm750fb: use PLL_CTRL_POWER defines for CRT_PLL_CTRL
  staging: sm750fb: use BIT macro for PLL_CTRL single-bit fields
  staging: sm750fb: change defintion of PANEL_PLL_CTRL multi-bit fields
  staging: sm750fb: drop redundant defines for PLL_CTRL fields
  staging: sm750fb: use BIT macro for VGA_CONFIGURATION single-bit
fields
  staging: sm750fb: change definition of VGA_CONFIGURATION multi-bit
field
  staging: sm750fb: programModeRegisters: rename local vairables
  staging: sm750fb: setDisplayControl: rename local vairables
  staging: sm750fb: share common bits in display control registers
  staging: sm750fb: merge reserved bits of PANEL/CRT_DISPLAY_CTRL
registers
  staging: sm750fb: refactor setDisplayControl function
  staging: sm750fb: hw_sm750_setBLANK: reduce printk verbosity
  staging: sm750fb: use BIT macro for PANEL_DISPLAY_CTRL single-bit
fields
  staging: sm750fb: remove PANEL_DISPLAY_CTRL_TFT_DISP defines
  staging: sm750fb: change definition of PANEL_DISPLAY_CTRL multi-bit
fields
  staging: sm750fb: change definition of PANEL_FB_ADDRESS fields
  staging: sm750fb: change definition of PANEL_FB_WIDTH fields
  staging: sm750fb: change definition of PANEL_WINDOW_WIDTH fields
  staging: sm750fb: change definition of PANEL_WINDOW_HEIGHT fields
  staging: sm750fb: change definition of PANEL_PLANE_TL fields
  staging: sm750fb: change definition of PANEL_PLANE_BR fields
  staging: sm750fb: use BIT macro for DMA_ABORT_INTERRUPT single-bit
fields
  staging: sm750fb: use BIT macro for CRT_DISPLAY_CTRL single-bit fields
  staging: sm750fb: change definition of CRT_DISPLAY_CTRL multi-bit
fields
  staging: sm750fb: use BIT macro for I2C_CTRL fields
  staging: sm750fb: use BIT macro for I2C_STATUS fields
  staging: sm750fb: change definition of PANEL_HORIZONTAL_TOTAL fields

 drivers/staging/sm750fb/ddk750_chip.c|  54 ++--
 drivers/staging/sm750fb/ddk750_display.c | 176 
 drivers/staging/sm750fb/ddk750_hwi2c.c   |  23 +-
 drivers/staging/sm750fb/ddk750_mode.c|  95 ---
 drivers/staging/sm750fb/ddk750_power.c   |   6 +-
 drivers/staging/sm750fb/ddk750_reg.h | 462 +--
 drivers/staging/sm750fb/sm750_hw.c   | 119 
 7 files changed, 335 insertions(+), 600 deletions(-)

-- 
1.9.1

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


[PATCH 10/30] staging: sm750fb: programModeRegisters: rename local vairables

2016-02-10 Thread Mike Rapoport
Remove HungarianCamelCase notation.

Signed-off-by: Mike Rapoport 
---
 drivers/staging/sm750fb/ddk750_mode.c | 28 
 1 file changed, 16 insertions(+), 12 deletions(-)

diff --git a/drivers/staging/sm750fb/ddk750_mode.c 
b/drivers/staging/sm750fb/ddk750_mode.c
index d0e3935..e7fc239 100644
--- a/drivers/staging/sm750fb/ddk750_mode.c
+++ b/drivers/staging/sm750fb/ddk750_mode.c
@@ -79,7 +79,7 @@ static int programModeRegisters(mode_parameter_t *pModeParam, 
pll_value_t *pll)
 {
int ret = 0;
int cnt = 0;
-   unsigned int ulTmpValue, ulReg;
+   unsigned int tmp, reg;
 
if (pll->clockType == SECONDARY_PLL) {
/* programe secondary pixel clock */
@@ -101,26 +101,27 @@ static int programModeRegisters(mode_parameter_t 
*pModeParam, pll_value_t *pll)
| FIELD_VALUE(0, CRT_VERTICAL_SYNC, START, 
pModeParam->vertical_sync_start - 1));
 
 
-   ulTmpValue = FIELD_VALUE(0, CRT_DISPLAY_CTRL, VSYNC_PHASE, 
pModeParam->vertical_sync_polarity) |
+   tmp = FIELD_VALUE(0, CRT_DISPLAY_CTRL, VSYNC_PHASE,
+ pModeParam->vertical_sync_polarity) |
  FIELD_VALUE(0, CRT_DISPLAY_CTRL, 
HSYNC_PHASE, pModeParam->horizontal_sync_polarity) |
  FIELD_SET(0, CRT_DISPLAY_CTRL, 
TIMING, ENABLE) |
  FIELD_SET(0, CRT_DISPLAY_CTRL, PLANE, 
ENABLE);
 
 
if (getChipType() == SM750LE) {
-   displayControlAdjust_SM750LE(pModeParam, ulTmpValue);
+   displayControlAdjust_SM750LE(pModeParam, tmp);
} else {
-   ulReg = PEEK32(CRT_DISPLAY_CTRL)
+   reg = PEEK32(CRT_DISPLAY_CTRL)
& FIELD_CLEAR(CRT_DISPLAY_CTRL, 
VSYNC_PHASE)
& FIELD_CLEAR(CRT_DISPLAY_CTRL, 
HSYNC_PHASE)
& FIELD_CLEAR(CRT_DISPLAY_CTRL, TIMING)
& FIELD_CLEAR(CRT_DISPLAY_CTRL, PLANE);
 
-POKE32(CRT_DISPLAY_CTRL, ulTmpValue | ulReg);
+POKE32(CRT_DISPLAY_CTRL, tmp | reg);
}
 
} else if (pll->clockType == PRIMARY_PLL) {
-   unsigned int ulReservedBits;
+   unsigned int reserved;
 
POKE32(PANEL_PLL_CTRL, formatPllReg(pll));
 
@@ -140,18 +141,20 @@ static int programModeRegisters(mode_parameter_t 
*pModeParam, pll_value_t *pll)
FIELD_VALUE(0, PANEL_VERTICAL_SYNC, HEIGHT, 
pModeParam->vertical_sync_height)
| FIELD_VALUE(0, PANEL_VERTICAL_SYNC, START, 
pModeParam->vertical_sync_start - 1));
 
-   ulTmpValue = FIELD_VALUE(0, PANEL_DISPLAY_CTRL, VSYNC_PHASE, 
pModeParam->vertical_sync_polarity) |
+   tmp = FIELD_VALUE(0, PANEL_DISPLAY_CTRL, VSYNC_PHASE,
+ pModeParam->vertical_sync_polarity) |
 FIELD_VALUE(0, PANEL_DISPLAY_CTRL, HSYNC_PHASE, 
pModeParam->horizontal_sync_polarity) |
 FIELD_VALUE(0, PANEL_DISPLAY_CTRL, CLOCK_PHASE, 
pModeParam->clock_phase_polarity) |
 FIELD_SET(0, PANEL_DISPLAY_CTRL, TIMING, ENABLE) |
 FIELD_SET(0, PANEL_DISPLAY_CTRL, PLANE, ENABLE);
 
-   ulReservedBits = FIELD_SET(0, PANEL_DISPLAY_CTRL, 
RESERVED_1_MASK, ENABLE) |
+   reserved = FIELD_SET(0, PANEL_DISPLAY_CTRL, RESERVED_1_MASK,
+ENABLE) |
 FIELD_SET(0, PANEL_DISPLAY_CTRL, 
RESERVED_2_MASK, ENABLE) |
 FIELD_SET(0, PANEL_DISPLAY_CTRL, 
RESERVED_3_MASK, ENABLE) |
 FIELD_SET(0, PANEL_DISPLAY_CTRL, VSYNC, 
ACTIVE_LOW);
 
-   ulReg = (PEEK32(PANEL_DISPLAY_CTRL) & ~ulReservedBits)
+   reg = (PEEK32(PANEL_DISPLAY_CTRL) & ~reserved)
& FIELD_CLEAR(PANEL_DISPLAY_CTRL, CLOCK_PHASE)
& FIELD_CLEAR(PANEL_DISPLAY_CTRL, VSYNC_PHASE)
& FIELD_CLEAR(PANEL_DISPLAY_CTRL, HSYNC_PHASE)
@@ -167,13 +170,14 @@ static int programModeRegisters(mode_parameter_t 
*pModeParam, pll_value_t *pll)
*   next vertical sync to turn on/off the plane.
*/
 
-   POKE32(PANEL_DISPLAY_CTRL, ulTmpValue | ulReg);
+   POKE32(PANEL_DISPLAY_CTRL, tmp | reg);
 
-   while ((PEEK32(PANEL_DISPLAY_CTRL) & ~ulReservedBits) != 
(ulTmpValue | ulReg)) {
+   while ((PEEK32(PANEL_DISPLAY_CTRL) & ~reserved) !=
+   (tmp | reg)) {
cnt++;
if (cnt > 1000)
break;
-   POKE32(PANEL_DISPLAY_CTRL, ulTmpValu

[PATCH 16/30] staging: sm750fb: use BIT macro for PANEL_DISPLAY_CTRL single-bit fields

2016-02-10 Thread Mike Rapoport
Replace complex definition of PANEL_DISPLAY_CTRL register fields with BIT()
macro and use open-coded implementation for register manipulations.

Signed-off-by: Mike Rapoport 
---
 drivers/staging/sm750fb/ddk750_chip.c|  6 +--
 drivers/staging/sm750fb/ddk750_display.c | 24 +-
 drivers/staging/sm750fb/ddk750_mode.c| 52 +
 drivers/staging/sm750fb/ddk750_reg.h | 77 
 drivers/staging/sm750fb/sm750_hw.c   | 15 ---
 5 files changed, 62 insertions(+), 112 deletions(-)

diff --git a/drivers/staging/sm750fb/ddk750_chip.c 
b/drivers/staging/sm750fb/ddk750_chip.c
index 0031e32..37eae59 100644
--- a/drivers/staging/sm750fb/ddk750_chip.c
+++ b/drivers/staging/sm750fb/ddk750_chip.c
@@ -249,17 +249,17 @@ int ddk750_initHw(initchip_param_t *pInitParam)
 
/* Disable Overlay, if a former application left it on */
reg = PEEK32(VIDEO_DISPLAY_CTRL);
-   reg = FIELD_SET(reg, DISPLAY_CTRL, PLANE, DISABLE);
+   reg &= ~DISPLAY_CTRL_PLANE;
POKE32(VIDEO_DISPLAY_CTRL, reg);
 
/* Disable video alpha, if a former application left it on */
reg = PEEK32(VIDEO_ALPHA_DISPLAY_CTRL);
-   reg = FIELD_SET(reg, DISPLAY_CTRL, PLANE, DISABLE);
+   reg &= ~DISPLAY_CTRL_PLANE;
POKE32(VIDEO_ALPHA_DISPLAY_CTRL, reg);
 
/* Disable alpha plane, if a former application left it on */
reg = PEEK32(ALPHA_DISPLAY_CTRL);
-   reg = FIELD_SET(reg, DISPLAY_CTRL, PLANE, DISABLE);
+   reg &= ~DISPLAY_CTRL_PLANE;
POKE32(ALPHA_DISPLAY_CTRL, reg);
 
/* Disable DMA Channel, if a former application left it on */
diff --git a/drivers/staging/sm750fb/ddk750_display.c 
b/drivers/staging/sm750fb/ddk750_display.c
index ae8bb37..f0e0444 100644
--- a/drivers/staging/sm750fb/ddk750_display.c
+++ b/drivers/staging/sm750fb/ddk750_display.c
@@ -28,10 +28,10 @@ static void setDisplayControl(int ctrl, int disp_state)
 * guarantee that the plane will also enabled or
 * disabled.
 */
-   val = FIELD_SET(val, DISPLAY_CTRL, TIMING, ENABLE);
+   val |= DISPLAY_CTRL_TIMING;
POKE32(reg, val);
 
-   val = FIELD_SET(val, DISPLAY_CTRL, PLANE, ENABLE);
+   val |= DISPLAY_CTRL_PLANE;
 
/*
 * Somehow the register value on the plane is not set
@@ -53,10 +53,10 @@ static void setDisplayControl(int ctrl, int disp_state)
 * find out if it is necessary to wait for 1 vsync
 * before modifying the timing enable bit.
 */
-   val = FIELD_SET(val, DISPLAY_CTRL, PLANE, DISABLE);
+   val &= ~DISPLAY_CTRL_PLANE;
POKE32(reg, val);
 
-   val = FIELD_SET(val, DISPLAY_CTRL, TIMING, DISABLE);
+   val &= ~DISPLAY_CTRL_TIMING;
POKE32(reg, val);
}
 }
@@ -71,9 +71,7 @@ static void waitNextVerticalSync(int ctrl, int delay)
/* Do not wait when the Primary PLL is off or display control 
is already off.
   This will prevent the software to wait forever. */
if (!(PEEK32(PANEL_PLL_CTRL) & PLL_CTRL_POWER) ||
-   (FIELD_GET(PEEK32(PANEL_DISPLAY_CTRL),
-   DISPLAY_CTRL, TIMING) ==
-   DISPLAY_CTRL_TIMING_DISABLE)) {
+   !(PEEK32(PANEL_DISPLAY_CTRL) & DISPLAY_CTRL_TIMING)) {
return;
}
 
@@ -94,9 +92,7 @@ static void waitNextVerticalSync(int ctrl, int delay)
/* Do not wait when the Primary PLL is off or display control 
is already off.
   This will prevent the software to wait forever. */
if (!(PEEK32(CRT_PLL_CTRL) & PLL_CTRL_POWER) ||
-   (FIELD_GET(PEEK32(CRT_DISPLAY_CTRL),
-   DISPLAY_CTRL, TIMING) ==
-   DISPLAY_CTRL_TIMING_DISABLE)) {
+   !(PEEK32(CRT_DISPLAY_CTRL) & DISPLAY_CTRL_TIMING)) {
return;
}
 
@@ -120,22 +116,22 @@ static void swPanelPowerSequence(int disp, int delay)
 
/* disp should be 1 to open sequence */
reg = PEEK32(PANEL_DISPLAY_CTRL);
-   reg = FIELD_VALUE(reg, PANEL_DISPLAY_CTRL, FPEN, disp);
+   reg |= (disp ? PANEL_DISPLAY_CTRL_FPEN : 0);
POKE32(PANEL_DISPLAY_CTRL, reg);
primaryWaitVerticalSync(delay);
 
reg = PEEK32(PANEL_DISPLAY_CTRL);
-   reg = FIELD_VALUE(reg, PANEL_DISPLAY_CTRL, DATA, disp);
+   reg |= (disp ? PANEL_DISPLAY_CTRL_DATA : 0);
POKE32(PANEL_DISPLAY_CTRL, reg);
primaryWaitVerticalSync(delay);
 
reg = PEEK32(PANEL_DISPLAY_CTRL);
-   reg = FIELD_VALUE(reg, PANEL_D

Fwd: Re: wilc1000 staging driver initialization failure

2016-02-10 Thread Andrew Boyce


Sorry for the mass forward, I was instructed to email more than just the 
linux-wireless mailing list.


Any help would be appreciated.

Thanks!
 -Andrew


 Forwarded Message 
Subject: Re: wilc1000 staging driver initialization failure
Date: Thu, 4 Feb 2016 13:26:04 -0500
From: Andrew Boyce 
To: linux-wireless-u79uwxl29ty76z2rm5m...@public.gmane.org
Newsgroups: gmane.linux.kernel.wireless.general
References: 

I've enabled more debugging.


The core of the issue seems to be that wilc_lock_timeout() is for some
reason failing to down_timeout(). I do not currently understand enough
of the internals to understand why.



[ 6852.53] wilc1000: module is from the staging directory, the
quality is unknown, you have been warned.
[ 6852.57] wilc1000_sdio: module is from the staging directory, the
quality is unknown, you have been warned.
[ 6852.58] wilc1000_sdio mmc0:0001:1: Initializing netdev
[ 6852.58] DBG [wilc_create_wiphy: 2783]Registering wifi device
[ 6852.58] DBG [WILC_WFI_CfgAlloc: 2747]Allocating wireless device
[ 6852.58] INFO [wilc_create_wiphy]Max number of PMKIDs = 16
[ 6852.58] INFO [wilc_create_wiphy]Max scan ids = 10,Max scan IE len
= 1000,Signal Type = 1,Interface Modes = 844,Interface Type = 2
[ 6852.58] DBG [wilc_create_wiphy: 2822]Successful Registering
[ 6852.58] DBG [wilc_create_wiphy: 2783]Registering wifi device
[ 6852.58] DBG [WILC_WFI_CfgAlloc: 2747]Allocating wireless device
[ 6852.58] INFO [wilc_create_wiphy]Max number of PMKIDs = 16
[ 6852.58] INFO [wilc_create_wiphy]Max scan ids = 10,Max scan IE len
= 1000,Signal Type = 1,Interface Modes = 844,Interface Type = 2
[ 6852.58] DBG [wilc_create_wiphy: 2822]Successful Registering
[ 6852.58] wilc1000_sdio mmc0:0001:1: Driver Initializing success
[ 6856.90] DBG [wilc_mac_open: 1020]MAC OPEN[cd8c9000]
[ 6856.90] DBG [wilc_init_host_int: 2835]Host[cd8c9000][cd97cd00]
[ 6856.90] DBG [wilc_init: 3790]Initializing host interface for client 1
[ 6856.90] DBG [wilc_init: 3810]Global handle pointer value=cee0f400
[ 6856.90] DBG [wilc_init: 3824]INIT: CLIENT COUNT 0
[ 6856.90] INFO [wilc_init]Initialization values, Site survey value: 2
 Scan source: 0
 Active scan time: 10
 Passive scan time: 1200
Current tx Rate = 0
[ 6856.90] DBG [wilc_mac_open: 1029]*** re-init ***
[ 6856.90] DBG [wlan_init_locks: 809]Initializing Locks ...
[ 6856.90] DBG [wilc_wlan_init: 1593]Initializing WILC_Wlan ...
[ 6856.90] ERR [wilc1000_wlan_init: 900]Initializing WILC_Wlan FAILED
[ 6856.90] ERR [wilc1000_wlan_init: 900]Initializing WILC_Wlan FAILED
[ 6856.90] DBG [wlan_deinit_locks: 835]De-Initializing Locks
[ 6856.90] ERR [wilc1000_wlan_init: 983]WLAN Iinitialization FAILED
[ 6856.90] ERR [wilc1000_wlan_init: 983]WLAN Iinitialization FAILED
[ 6856.90] ERR [wilc_mac_open: 1032]Failed to initialize wilc1000
[ 6856.90] ERR [wilc_mac_open: 1032]Failed to initialize wilc1000
[ 6856.90] DBG [wilc_deinit: 3896]De-initializing host interface for
client 1
[ 6856.90] DBG [wilc_deinit: 3905]>> Connect timer is active
[ 6856.90] DBG [wilc_send_config_pkt: 619]Sending config SET PACKET
WID:2085
[ 6856.90] Sending config SET PACKET WID:2085
[ 6856.90] Sending config SET PACKET val:
[ 6856.90] DBG [wilc_wlan_cfg_set: 1443][WILC]PACKET Commit with
sequence number 0
[ 6856.90] [WILC]PACKET Commit with sequence number 0
[ 6856.90] DBG [wilc_wlan_cfg_set: 1446]Processing cfg_set()
[ 6856.90] Processing cfg_set()
[ 6856.90] DBG [wilc_wlan_txq_add_cfg_pkt: 368]Adding config packet ...
[ 6856.90] DBG [wilc_wlan_txq_add_cfg_pkt: 389]Adding the config
packet at the Queue tail
[ 6856.90] DBG [wilc_lock_timeout: 257]Locking cd9eb82c
[ 6856.90] Locking cd9eb82c
[ 6856.90] timeout 2000
[ 6856.90] Failed, mutex is NULL
[ 6856.90] DBG [wilc_wlan_txq_add_to_head: 150]Number of entries in
TxQ = 1
[ 6856.90] DBG [wilc_wlan_txq_add_to_head: 155]Wake up the txq_handler
[ 6856.90] DBG [wilc_lock_timeout: 257]Locking cd9eb850
[ 6856.90] Locking cd9eb850
[ 6856.90] timeout 2000
[ 6858.90] Failed, mutex is NULL
[ 6858.90] DBG [hostIFthread: 2793]THREAD: Exiting HostIfThread
[ 6858.90] DBG [hostIFthread: 2989]Releasing thread exit semaphore
[ 6858.90] INFO [clear_shadow_scan]destroy aging timer
[ 6858.90] DBG [wilc_deinit_host_int: 2878]destroy during ip


Any help would be appreciated.

Thanks!
 -Andrew



On 2/3/16 6:09 PM, Andrew Boyce wrote:

I've been working to build and test the staging wilc1000-sdio driver and
have run into a problem.

I've built a kernel from Greg KH's staging-testing branch and loaded it
onto our device. When I try to bring the interface up, I get the following:

root@test:~# ifconfig wlan0 up
kernel: [ 3510.40] DBG [wilc_mac_open: 1014]MAC OPEN[cef2]
kernel: [ 3510.40] DBG [wilc_init_host_int:
2835]Host[cef2][cd0df1c0]
kernel:

[PATCH 3/5] staging/lustre: Adjust import state history output format

2016-02-10 Thread green
From: Oleg Drokin 

New test scripts expect spaces around state names and square brackets
when parsing debugfs output, so add them to avoid false failures.

Signed-off-by: Oleg Drokin 
---
 drivers/staging/lustre/lustre/obdclass/lprocfs_status.c | 14 +++---
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/staging/lustre/lustre/obdclass/lprocfs_status.c 
b/drivers/staging/lustre/lustre/obdclass/lprocfs_status.c
index 9a1434d..eda44d8 100644
--- a/drivers/staging/lustre/lustre/obdclass/lprocfs_status.c
+++ b/drivers/staging/lustre/lustre/obdclass/lprocfs_status.c
@@ -642,21 +642,21 @@ int lprocfs_rd_import(struct seq_file *m, void *data)
 "target: %s\n"
 "state: %s\n"
 "instance: %u\n"
-"connect_flags: [",
+"connect_flags: [ ",
 obd->obd_name,
 obd2cli_tgt(obd),
 ptlrpc_import_state_name(imp->imp_state),
 imp->imp_connect_data.ocd_instance);
obd_connect_seq_flags2str(m, imp->imp_connect_data.ocd_connect_flags, 
", ");
seq_printf(m,
- "]\n"
- "import_flags: [");
+ " ]\n"
+ "import_flags: [ ");
obd_import_flags2str(imp, m);
 
seq_printf(m,
- "]\n"
+ " ]\n"
  "connection:\n"
- "   failover_nids: [");
+ "   failover_nids: [ ");
spin_lock(&imp->imp_lock);
j = 0;
list_for_each_entry(conn, &imp->imp_conn_list, oic_item) {
@@ -671,7 +671,7 @@ int lprocfs_rd_import(struct seq_file *m, void *data)
else
strncpy(nidstr, "", sizeof(nidstr));
seq_printf(m,
- "]\n"
+ " ]\n"
  "   current_connection: %s\n"
  "   connection_attempts: %u\n"
  "   generation: %u\n"
@@ -795,7 +795,7 @@ int lprocfs_rd_state(struct seq_file *m, void *data)
&imp->imp_state_hist[(k + j) % IMP_STATE_HIST_LEN];
if (ish->ish_state == 0)
continue;
-   seq_printf(m, " - [%lld, %s]\n", (s64)ish->ish_time,
+   seq_printf(m, " - [ %lld, %s ]\n", (s64)ish->ish_time,
   ptlrpc_import_state_name(ish->ish_state));
}
 
-- 
2.1.0

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


[PATCH 1/5] staging/lustre/obdecho: Remove always true condition

2016-02-10 Thread green
From: Oleg Drokin 

Dan Carpenter noticed that since we already checked for
(oa->o_valid & OBD_MD_FLID) == 0, that means
(oa->o_valid & OBD_MD_FLID) is always true after that so
no point in checking for it.

Signed-off-by: Oleg Drokin 
Reported-by: Dan Carpenter 
---
 drivers/staging/lustre/lustre/obdecho/echo_client.c | 6 ++
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/staging/lustre/lustre/obdecho/echo_client.c 
b/drivers/staging/lustre/lustre/obdecho/echo_client.c
index d3e398f..e1c9d11 100644
--- a/drivers/staging/lustre/lustre/obdecho/echo_client.c
+++ b/drivers/staging/lustre/lustre/obdecho/echo_client.c
@@ -1222,10 +1222,8 @@ static int echo_create_object(const struct lu_env *env, 
struct echo_device *ed,
}
 
/* setup object ID here */
-   if (oa->o_valid & OBD_MD_FLID) {
-   LASSERT(oa->o_valid & OBD_MD_FLGROUP);
-   lsm->lsm_oi = oa->o_oi;
-   }
+   LASSERT(oa->o_valid & OBD_MD_FLGROUP);
+   lsm->lsm_oi = oa->o_oi;
 
if (ostid_id(&lsm->lsm_oi) == 0)
ostid_set_id(&lsm->lsm_oi, ++last_object_id);
-- 
2.1.0

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


[PATCH 0/5] Few misc Lustre fixes

2016-02-10 Thread green
From: Oleg Drokin 

This patchset fixes some minor Lustre problems and also
updates the internal version.

Please consider.

Oleg Drokin (5):
  staging/lustre/obdecho: Remove always true condition
  staging/lustre/obdecho: Better handle invalid create requests
  staging/lustre: Adjust import state history output format
  staging/lustre: Update internal client version.
  staging/lustre: Remove unused LUSTRE_VERSION_ALLOWED_OFFSET define

 drivers/staging/lustre/lustre/include/lustre_ver.h | 18 ++
 .../staging/lustre/lustre/obdclass/lprocfs_status.c| 14 +++---
 drivers/staging/lustre/lustre/obdecho/echo_client.c| 15 +--
 3 files changed, 18 insertions(+), 29 deletions(-)

-- 
2.1.0

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


[PATCH 5/5] staging/lustre: Remove unused LUSTRE_VERSION_ALLOWED_OFFSET define

2016-02-10 Thread green
From: Oleg Drokin 

LUSTRE_VERSION_ALLOWED_OFFSET is only used on the server to disallow
connection of old userspace clients.

Signed-off-by: Oleg Drokin 
---
 drivers/staging/lustre/lustre/include/lustre_ver.h | 9 +++--
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/drivers/staging/lustre/lustre/include/lustre_ver.h 
b/drivers/staging/lustre/lustre/include/lustre_ver.h
index 01205b8..64559a1 100644
--- a/drivers/staging/lustre/lustre/include/lustre_ver.h
+++ b/drivers/staging/lustre/lustre/include/lustre_ver.h
@@ -11,13 +11,10 @@
LUSTRE_MINOR, LUSTRE_PATCH, \
LUSTRE_FIX)
 
-/* liblustre clients are only allowed to connect if their LUSTRE_FIX mismatches
- * by this amount (set in lustre/autoconf/lustre-version.ac). */
-#define LUSTRE_VERSION_ALLOWED_OFFSET OBD_OCD_VERSION(0, 0, 1, 32)
-
-/* If lustre version of client and servers it connects to differs by more
+/*
+ * If lustre version of client and servers it connects to differs by more
  * than this amount, client would issue a warning.
- * (set in lustre/autoconf/lustre-version.ac) */
+ */
 #define LUSTRE_VERSION_OFFSET_WARN OBD_OCD_VERSION(0, 4, 0, 0)
 
 #endif
-- 
2.1.0

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


[PATCH 4/5] staging/lustre: Update internal client version.

2016-02-10 Thread green
From: Oleg Drokin 

While initial code drop was corresponding to 2.3.64, lots of
different changes went in since then, and also quite a bunch of fixes,
but almost none of the new features.
Code-wise we are almost at 2.5.0, so let's call it 2.4.60 - this is a
version that was never reached in the actual pre-2.5 development, so
it should be a clear distinction of where we are now.

Signed-off-by: Oleg Drokin 
---
 drivers/staging/lustre/lustre/include/lustre_ver.h | 9 +++--
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/drivers/staging/lustre/lustre/include/lustre_ver.h 
b/drivers/staging/lustre/lustre/include/lustre_ver.h
index caa4da1..01205b8 100644
--- a/drivers/staging/lustre/lustre/include/lustre_ver.h
+++ b/drivers/staging/lustre/lustre/include/lustre_ver.h
@@ -1,14 +1,11 @@
 #ifndef _LUSTRE_VER_H_
 #define _LUSTRE_VER_H_
-/* This file automatically generated from lustre/include/lustre_ver.h.in,
- * based on parameters in lustre/autoconf/lustre-version.ac.
- * Changes made directly to this file will be lost. */
 
 #define LUSTRE_MAJOR 2
-#define LUSTRE_MINOR 3
-#define LUSTRE_PATCH 64
+#define LUSTRE_MINOR 4
+#define LUSTRE_PATCH 60
 #define LUSTRE_FIX 0
-#define LUSTRE_VERSION_STRING "2.3.64"
+#define LUSTRE_VERSION_STRING "2.4.60"
 
 #define LUSTRE_VERSION_CODE OBD_OCD_VERSION(LUSTRE_MAJOR, \
LUSTRE_MINOR, LUSTRE_PATCH, \
-- 
2.1.0

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


[PATCH 2/5] staging/lustre/obdecho: Better handle invalid create requests

2016-02-10 Thread green
From: Oleg Drokin 

When gettng an invalid create request in echo code (wrong group,
or no group at all), just return an error instead of crashing.

Signed-off-by: Oleg Drokin 
---
 drivers/staging/lustre/lustre/obdecho/echo_client.c | 11 ---
 1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/drivers/staging/lustre/lustre/obdecho/echo_client.c 
b/drivers/staging/lustre/lustre/obdecho/echo_client.c
index e1c9d11..4ca82af 100644
--- a/drivers/staging/lustre/lustre/obdecho/echo_client.c
+++ b/drivers/staging/lustre/lustre/obdecho/echo_client.c
@@ -1210,8 +1210,10 @@ static int echo_create_object(const struct lu_env *env, 
struct echo_device *ed,
int  rc;
int  created = 0;
 
-   if ((oa->o_valid & OBD_MD_FLID) == 0) { /* no obj id */
-   CERROR("No valid oid\n");
+   if (!(oa->o_valid & OBD_MD_FLID) ||
+   !(oa->o_valid & OBD_MD_FLGROUP) ||
+   !fid_seq_is_echo(ostid_seq(&oa->o_oi))) {
+   CERROR("invalid oid " DOSTID "\n", POSTID(&oa->o_oi));
return -EINVAL;
}
 
@@ -1222,16 +1224,11 @@ static int echo_create_object(const struct lu_env *env, 
struct echo_device *ed,
}
 
/* setup object ID here */
-   LASSERT(oa->o_valid & OBD_MD_FLGROUP);
lsm->lsm_oi = oa->o_oi;
 
if (ostid_id(&lsm->lsm_oi) == 0)
ostid_set_id(&lsm->lsm_oi, ++last_object_id);
 
-   /* Only echo objects are allowed to be created */
-   LASSERT((oa->o_valid & OBD_MD_FLGROUP) &&
-   (ostid_seq(&oa->o_oi) == FID_SEQ_ECHO));
-
rc = obd_create(env, ec->ec_exp, oa, &lsm, oti);
if (rc != 0) {
CERROR("Cannot create objects: rc = %d\n", rc);
-- 
2.1.0

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


Re: [PATCH v2 7/9] Staging: rts5208: rtsx_transport.c: Remove unnecessary parentheses

2016-02-10 Thread Shaun Ren

On Tue 2016-02-09 at 21:26 (-0800), Sudip Mukherjee wrote:
> On Mon, Feb 08, 2016 at 05:31:23PM -0800, Shaun Ren wrote:
>> This patch removes all unnecessary parentheses found by checkpatch.pl.
>> 
>> Signed-off-by: Shaun Ren 
>
> This will not apply anymore because of some other changes done by:
> 9a66d05d82db ("Staging: rts5208: fix check for dma mapping error")

I don't see that commit anywhere. Is it in linux-next?

Regards,
--
Shaun Ren

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


[PATCH v2] Staging: fix coding style in rtl8188eu/core

2016-02-10 Thread Colin Vidal
Set constant operand on right of test, and refactor the code in a more
compact and readable way.

Signed-off-by: Colin Vidal 
---
 drivers/staging/rtl8188eu/core/rtw_iol.c | 13 +
 1 file changed, 5 insertions(+), 8 deletions(-)

diff --git a/drivers/staging/rtl8188eu/core/rtw_iol.c 
b/drivers/staging/rtl8188eu/core/rtw_iol.c
index cdcf0ea..00e1136 100644
--- a/drivers/staging/rtl8188eu/core/rtw_iol.c
+++ b/drivers/staging/rtl8188eu/core/rtw_iol.c
@@ -18,14 +18,11 @@
  *
  
**/
 
-#include
+#include 
 
-bool rtw_IOL_applied(struct adapter  *adapter)
+bool rtw_IOL_applied(struct adapter *adapter)
 {
-   if (1 == adapter->registrypriv.fw_iol)
-   return true;
-
-   if ((2 == adapter->registrypriv.fw_iol) && 
(!adapter_to_dvobj(adapter)->ishighspeed))
-   return true;
-   return false;
+   return adapter->registrypriv.fw_iol == 1 ||
+   (adapter->registrypriv.fw_iol == 2 &&
+!adapter_to_dvobj(adapter)->ishighspeed);
 }
-- 
2.5.0

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


网络推广专员SEM

2016-02-10 Thread 网络推广专员SEM
你的老朋友邀你来Q群:343257759
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Business Partnership

2016-02-10 Thread EYADEMA
Hello,

I am Mr. LAURENT EYADEMA from Republic of Togo.please read the attached 
proposal.
Thanks in anticipation of your urgent response,


LAURENT EYADEMA

proposal.docx
Description: Binary data
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Business Partnership

2016-02-10 Thread EYADEMA
Hello,

I am Mr. LAURENT EYADEMA from Republic of Togo.please read the attached 
proposal.
Thanks in anticipation of your urgent response,


LAURENT EYADEMA

proposal.docx
Description: Binary data
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH V2 4/4] staging: wilc1000: rename counter in wilc_send_config_pkt

2016-02-10 Thread Chaehyun Lim
This patch renames the name of counter variable to i.
This change makes more readability because wilc_send_config_pkt has a
similar argument name as count.

Signed-off-by: Chaehyun Lim 
---
v2: rebase latest staging-testing

 drivers/staging/wilc1000/wilc_wlan.c | 31 +++
 1 file changed, 15 insertions(+), 16 deletions(-)

diff --git a/drivers/staging/wilc1000/wilc_wlan.c 
b/drivers/staging/wilc1000/wilc_wlan.c
index c6bfec3..8712eda 100644
--- a/drivers/staging/wilc1000/wilc_wlan.c
+++ b/drivers/staging/wilc1000/wilc_wlan.c
@@ -1352,32 +1352,31 @@ int wilc_wlan_cfg_get_val(u32 wid, u8 *buffer, u32 
buffer_size)
 int wilc_send_config_pkt(struct wilc_vif *vif, u8 mode, struct wid *wids,
 u32 count, u32 drv)
 {
-   int counter;
+   int i;
int ret = 0;
 
if (mode == GET_CFG) {
-   for (counter = 0; counter < count; counter++) {
-   if (!wilc_wlan_cfg_get(vif, !counter,
-  wids[counter].id,
-  (counter == count - 1),
+   for (i = 0; i < count; i++) {
+   if (!wilc_wlan_cfg_get(vif, !i,
+  wids[i].id,
+  (i == count - 1),
   drv)) {
ret = -ETIMEDOUT;
break;
}
}
-   for (counter = 0; counter < count; counter++) {
-   wids[counter].size = wilc_wlan_cfg_get_val(
-   wids[counter].id,
-   wids[counter].val,
-   wids[counter].size);
+   for (i = 0; i < count; i++) {
+   wids[i].size = wilc_wlan_cfg_get_val(wids[i].id,
+wids[i].val,
+wids[i].size);
}
} else if (mode == SET_CFG) {
-   for (counter = 0; counter < count; counter++) {
-   if (!wilc_wlan_cfg_set(vif, !counter,
-  wids[counter].id,
-  wids[counter].val,
-  wids[counter].size,
-  (counter == count - 1),
+   for (i = 0; i < count; i++) {
+   if (!wilc_wlan_cfg_set(vif, !i,
+  wids[i].id,
+  wids[i].val,
+  wids[i].size,
+  (i == count - 1),
   drv)) {
ret = -ETIMEDOUT;
break;
-- 
2.7.1

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


[PATCH V2 3/4] staging: wilc1000: remove initialization code of counter variable

2016-02-10 Thread Chaehyun Lim
There is no need to set to 0 for counter variable before entering next
for-loop statement because counter is initialized again in for-loop
statement, so just remove it.

Signed-off-by: Chaehyun Lim 
---
v2: rebase latest staging-testing

 drivers/staging/wilc1000/wilc_wlan.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/staging/wilc1000/wilc_wlan.c 
b/drivers/staging/wilc1000/wilc_wlan.c
index f3140e0..c6bfec3 100644
--- a/drivers/staging/wilc1000/wilc_wlan.c
+++ b/drivers/staging/wilc1000/wilc_wlan.c
@@ -1365,7 +1365,6 @@ int wilc_send_config_pkt(struct wilc_vif *vif, u8 mode, 
struct wid *wids,
break;
}
}
-   counter = 0;
for (counter = 0; counter < count; counter++) {
wids[counter].size = wilc_wlan_cfg_get_val(
wids[counter].id,
-- 
2.7.1

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


[PATCH V2 1/4] staging: wilc1000: fix return type of wilc_send_config_pkt

2016-02-10 Thread Chaehyun Lim
wilc_send_config_pkt is returned 0 or -ETIMEDOUT according to return
value of wilc_wlan_cfg_set or wilc_wlan_cfg_set.
It is better to use int type to represent linux standard error code.

Signed-off-by: Chaehyun Lim 
---
v2: rebase latest staging-testing

 drivers/staging/wilc1000/wilc_wlan.c | 5 +++--
 drivers/staging/wilc1000/wilc_wlan.h | 2 +-
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/staging/wilc1000/wilc_wlan.c 
b/drivers/staging/wilc1000/wilc_wlan.c
index 98b21d4..2bc2970 100644
--- a/drivers/staging/wilc1000/wilc_wlan.c
+++ b/drivers/staging/wilc1000/wilc_wlan.c
@@ -1349,10 +1349,11 @@ int wilc_wlan_cfg_get_val(u32 wid, u8 *buffer, u32 
buffer_size)
return ret;
 }
 
-s32 wilc_send_config_pkt(struct wilc_vif *vif, u8 mode, struct wid *wids,
+int wilc_send_config_pkt(struct wilc_vif *vif, u8 mode, struct wid *wids,
 u32 count, u32 drv)
 {
-   s32 counter = 0, ret = 0;
+   s32 counter = 0;
+   int ret = 0;
 
if (mode == GET_CFG) {
for (counter = 0; counter < count; counter++) {
diff --git a/drivers/staging/wilc1000/wilc_wlan.h 
b/drivers/staging/wilc1000/wilc_wlan.h
index d362fa8..06d02ab 100644
--- a/drivers/staging/wilc1000/wilc_wlan.h
+++ b/drivers/staging/wilc1000/wilc_wlan.h
@@ -301,6 +301,6 @@ void host_sleep_notify(struct wilc *wilc);
 extern bool wilc_enable_ps;
 void chip_allow_sleep(struct wilc *wilc);
 void chip_wakeup(struct wilc *wilc);
-s32 wilc_send_config_pkt(struct wilc_vif *vif, u8 mode, struct wid *wids,
+int wilc_send_config_pkt(struct wilc_vif *vif, u8 mode, struct wid *wids,
 u32 count, u32 drv);
 #endif
-- 
2.7.1

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


[PATCH V2 2/4] staging: wilc1000: use int type for counter variable

2016-02-10 Thread Chaehyun Lim
counter is used as for-loop control variable and indicating index of
struct wid array so that it is better to use int type.
There is no need to set to 0 when it is declared at the top of this
function. It is initialized as 0 in for-loop statement.

Signed-off-by: Chaehyun Lim 
---
v2: rebase latest staging-testing

 drivers/staging/wilc1000/wilc_wlan.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/staging/wilc1000/wilc_wlan.c 
b/drivers/staging/wilc1000/wilc_wlan.c
index 2bc2970..f3140e0 100644
--- a/drivers/staging/wilc1000/wilc_wlan.c
+++ b/drivers/staging/wilc1000/wilc_wlan.c
@@ -1352,7 +1352,7 @@ int wilc_wlan_cfg_get_val(u32 wid, u8 *buffer, u32 
buffer_size)
 int wilc_send_config_pkt(struct wilc_vif *vif, u8 mode, struct wid *wids,
 u32 count, u32 drv)
 {
-   s32 counter = 0;
+   int counter;
int ret = 0;
 
if (mode == GET_CFG) {
-- 
2.7.1

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