Re: [linux-nics] [PATCHv3 2/3] list: Fix order of arguments for hlist_add_after(_rcu)

2014-06-08 Thread Jeff Kirsher
On Sat, 2014-06-07 at 18:40 +0200, Ken Helias wrote:
> From: Ken Helias 
> 
> All other add functions for lists have the new item as first argument
> and the
> position where it is added as second argument. This was changed for no
> good
> reason in this function and makes using it unnecessary confusing.
> 
> The name was changed to let old code generate a compile errors instead
> of
> using the wrong parameter order.
> 
> Signed-off-by: Ken Helias 
> Cc: Linux NICS 
> Cc: "Paul E. McKenney" 
> Cc: dri-de...@lists.freedesktop.org
> Cc: e1000-de...@lists.sourceforge.net
> Cc: net...@vger.kernel.org
> Cc: de...@driverdev.osuosl.org
> Cc: linux-fsde...@vger.kernel.org
> Cc: b.a.t.m@lists.open-mesh.org
> Cc: bri...@lists.linux-foundation.org

For the Intel driver changes...
Acked-by: Jeff Kirsher 

> ---
> Patch based on "Add linux-next specific files for 20140606"
> 
> v3:
> renamed from hlist_add_after* to hlist_add_behind
> 
> v2:
> Splitted into two patches
> reduced number of Cc
> 
>  Documentation/RCU/whatisRCU.txt  | 2 +-
>  drivers/gpu/drm/drm_hashtab.c| 2 +-
>  drivers/net/ethernet/intel/i40e/i40e_ethtool.c   | 2 +-
>  drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c | 2 +-
>  drivers/staging/lustre/lustre/libcfs/hash.c  | 4 ++--
>  fs/namespace.c   | 2 +-
>  fs/notify/inode_mark.c   | 2 +-
>  fs/notify/vfsmount_mark.c| 2 +-
>  include/linux/list.h | 4 ++--
>  include/linux/rculist.h  | 8 
>  net/batman-adv/fragmentation.c   | 2 +-
>  net/bridge/br_multicast.c| 2 +-
>  net/ipv4/fib_trie.c  | 2 +-
>  net/ipv6/addrlabel.c | 2 +-
>  net/xfrm/xfrm_policy.c   | 4 ++--
>  15 files changed, 21 insertions(+), 21 deletions(-)




signature.asc
Description: This is a digitally signed message part
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH V2] Staging:tidspbridge Fix minor checkpatch.pl warning.

2014-06-08 Thread Adithya Krishnamurthy

From: Adithya Krishnamurthy 

Fixed checkpatch "WARNING: Missing a blank line after declarations"

Signed-off-by: Adithya Krishnamurthy 
---
 drivers/staging/tidspbridge/core/chnl_sm.c   |1 +
 drivers/staging/tidspbridge/core/io_sm.c |1 +
 drivers/staging/tidspbridge/core/tiomap3430.c|2 ++
 drivers/staging/tidspbridge/core/tiomap_io.c |2 ++
 drivers/staging/tidspbridge/core/wdt.c   |1 +
 drivers/staging/tidspbridge/dynload/cload.c  |7 +++
 drivers/staging/tidspbridge/dynload/reloc.c  |2 ++
 drivers/staging/tidspbridge/pmgr/chnl.c  |1 +
 drivers/staging/tidspbridge/rmgr/dbdcd.c |1 +
 drivers/staging/tidspbridge/rmgr/drv_interface.c |2 ++
 drivers/staging/tidspbridge/rmgr/nldr.c  |1 +
 drivers/staging/tidspbridge/rmgr/node.c  |2 ++
 drivers/staging/tidspbridge/rmgr/proc.c  |3 +++
 13 files changed, 26 insertions(+)

diff --git a/drivers/staging/tidspbridge/core/chnl_sm.c 
b/drivers/staging/tidspbridge/core/chnl_sm.c
index 16fa346..c855992 100644
--- a/drivers/staging/tidspbridge/core/chnl_sm.c
+++ b/drivers/staging/tidspbridge/core/chnl_sm.c
@@ -486,6 +486,7 @@ int bridge_chnl_get_info(struct chnl_object *chnl_obj,
 {
int status = 0;
struct chnl_object *pchnl = (struct chnl_object *)chnl_obj;
+
if (channel_info != NULL) {
if (pchnl) {
/* Return the requested information: */
diff --git a/drivers/staging/tidspbridge/core/io_sm.c 
b/drivers/staging/tidspbridge/core/io_sm.c
index c2829aa..42f94e1 100644
--- a/drivers/staging/tidspbridge/core/io_sm.c
+++ b/drivers/staging/tidspbridge/core/io_sm.c
@@ -249,6 +249,7 @@ int bridge_io_create(struct io_mgr **io_man,
 int bridge_io_destroy(struct io_mgr *hio_mgr)
 {
int status = 0;
+
if (hio_mgr) {
/* Free IO DPC object */
tasklet_kill(&hio_mgr->dpc_tasklet);
diff --git a/drivers/staging/tidspbridge/core/tiomap3430.c 
b/drivers/staging/tidspbridge/core/tiomap3430.c
index 8945b4e..bf952ef 100644
--- a/drivers/staging/tidspbridge/core/tiomap3430.c
+++ b/drivers/staging/tidspbridge/core/tiomap3430.c
@@ -1057,6 +1057,7 @@ static int bridge_brd_mem_copy(struct bridge_dev_context 
*dev_ctxt,
u32 total_bytes = ul_num_bytes;
u8 host_buf[BUFFERSIZE];
struct bridge_dev_context *dev_context = dev_ctxt;
+
while (total_bytes > 0 && !status) {
copy_bytes =
total_bytes > BUFFERSIZE ? BUFFERSIZE : total_bytes;
@@ -1094,6 +1095,7 @@ static int bridge_brd_mem_write(struct bridge_dev_context 
*dev_ctxt,
struct bridge_dev_context *dev_context = dev_ctxt;
u32 ul_remain_bytes = 0;
u32 ul_bytes = 0;
+
ul_remain_bytes = ul_num_bytes;
while (ul_remain_bytes > 0 && !status) {
ul_bytes =
diff --git a/drivers/staging/tidspbridge/core/tiomap_io.c 
b/drivers/staging/tidspbridge/core/tiomap_io.c
index f53ed98..2836467 100644
--- a/drivers/staging/tidspbridge/core/tiomap_io.c
+++ b/drivers/staging/tidspbridge/core/tiomap_io.c
@@ -176,6 +176,7 @@ int write_dsp_data(struct bridge_dev_context *dev_context,
struct cfg_hostres *resources = dev_context->resources;
int status = 0;
u32 base1, base2, base3;
+
base1 = OMAP_DSP_MEM1_SIZE;
base2 = OMAP_DSP_MEM2_BASE - OMAP_DSP_MEM1_BASE;
base3 = OMAP_DSP_MEM3_BASE - OMAP_DSP_MEM1_BASE;
@@ -229,6 +230,7 @@ int write_ext_dsp_data(struct bridge_dev_context 
*dev_context,
u32 ul_shm_offset_virt = 0;
struct cfg_hostres *host_res = dev_context->resources;
bool trace_load = false;
+
temp_byte1 = 0x0;
temp_byte2 = 0x0;
 
diff --git a/drivers/staging/tidspbridge/core/wdt.c b/drivers/staging/tidspbridge/core/wdt.c

index c7ee467..b19f887 100644
--- a/drivers/staging/tidspbridge/core/wdt.c
+++ b/drivers/staging/tidspbridge/core/wdt.c
@@ -33,6 +33,7 @@ static struct dsp_wdt_setting dsp_wdt;
 void dsp_wdt_dpc(unsigned long data)
 {
struct deh_mgr *deh_mgr;
+
dev_get_deh_mgr(dev_get_first(), &deh_mgr);
if (deh_mgr)
bridge_deh_notify(deh_mgr, DSP_WDTOVERFLOW, 0);
diff --git a/drivers/staging/tidspbridge/dynload/cload.c 
b/drivers/staging/tidspbridge/dynload/cload.c
index 9d54744..83f2106 100644
--- a/drivers/staging/tidspbridge/dynload/cload.c
+++ b/drivers/staging/tidspbridge/dynload/cload.c
@@ -160,6 +160,7 @@ int dynamic_load_module(struct dynamic_loader_stream 
*module,
if (!dl_state.dload_errcount) {
/* fix up entry point address */
unsigned sref = dl_state.dfile_hdr.df_entry_secn - 1;
+
if (sref < dl_state.allocated_secn_count)
dl_state.dfile_hdr.df_entrypt +=
dl_state.ldr_sections[sref].run_addr;
@@ -269,6 +270,7 @@ dynamic_open_m

[PATCH v2 25/26] staging: rtl8188eu: Remove unused function nat25_handle_frame()

2014-06-08 Thread navin patidar

Signed-off-by: navin patidar 
---
V2:
Restore sequence of source code compilation, sequence was changed by v1
of this patch.

 drivers/staging/rtl8188eu/core/rtw_br_ext.c|   61 
 drivers/staging/rtl8188eu/include/recv_osdep.h |1 -
 2 files changed, 62 deletions(-)

diff --git a/drivers/staging/rtl8188eu/core/rtw_br_ext.c 
b/drivers/staging/rtl8188eu/core/rtw_br_ext.c
index 9d9e89a..70b8f07 100644
--- a/drivers/staging/rtl8188eu/core/rtw_br_ext.c
+++ b/drivers/staging/rtl8188eu/core/rtw_br_ext.c
@@ -1030,67 +1030,6 @@ int nat25_db_handle(struct adapter *priv, struct sk_buff 
*skb, int method)
return -1;
 }

-int nat25_handle_frame(struct adapter *priv, struct sk_buff *skb)
-{
-   if (!(skb->data[0] & 1)) {
-   int is_vlan_tag = 0, i, retval = 0;
-   unsigned short vlan_hdr = 0;
-   unsigned short protocol;
-
-   protocol = be16_to_cpu(*((__be16 *)(skb->data + 2 * ETH_ALEN)));
-   if (protocol == ETH_P_8021Q) {
-   is_vlan_tag = 1;
-   vlan_hdr = *((unsigned short 
*)(skb->data+ETH_ALEN*2+2));
-   for (i = 0; i < 6; i++)
-   *((unsigned short 
*)(skb->data+ETH_ALEN*2+2-i*2)) = *((unsigned short 
*)(skb->data+ETH_ALEN*2-2-i*2));
-   skb_pull(skb, 4);
-   }
-
-   if (!priv->ethBrExtInfo.nat25_disable) {
-   spin_lock_bh(&priv->br_ext_lock);
-   /*
-*  This function look up the destination network 
address from
-*  the NAT2.5 database. Return value = -1 means 
that the
-*  corresponding network protocol is NOT support.
-*/
-   if (!priv->ethBrExtInfo.nat25sc_disable &&
-   (be16_to_cpu(*((__be16 *)(skb->data+ETH_ALEN*2))) 
== ETH_P_IP) &&
-   !memcmp(priv->scdb_ip, skb->data+ETH_HLEN+16, 4)) {
-   memcpy(skb->data, priv->scdb_mac, ETH_ALEN);
-
-   spin_unlock_bh(&priv->br_ext_lock);
-   } else {
-   spin_unlock_bh(&priv->br_ext_lock);
-
-   retval = nat25_db_handle(priv, skb, 
NAT25_LOOKUP);
-   }
-   } else {
-   if (((be16_to_cpu(*((__be16 *)(skb->data+ETH_ALEN*2))) 
== ETH_P_IP) &&
-   !memcmp(priv->br_ip, skb->data+ETH_HLEN+16, 4)) ||
-   ((be16_to_cpu(*((__be16 *)(skb->data+ETH_ALEN*2))) 
== ETH_P_ARP) &&
-   !memcmp(priv->br_ip, skb->data+ETH_HLEN+24, 4))) {
-   /*  for traffic to upper TCP/IP */
-   retval = nat25_db_handle(priv, skb, 
NAT25_LOOKUP);
-   }
-   }
-
-   if (is_vlan_tag) {
-   skb_push(skb, 4);
-   for (i = 0; i < 6; i++)
-   *((unsigned short *)(skb->data+i*2)) = 
*((unsigned short *)(skb->data+4+i*2));
-   *((__be16 *)(skb->data+ETH_ALEN*2)) = 
__constant_htons(ETH_P_8021Q);
-   *((unsigned short *)(skb->data+ETH_ALEN*2+2)) = 
vlan_hdr;
-   }
-
-   if (retval == -1) {
-   /* DEBUG_ERR("NAT25: Lookup fail!\n"); */
-   return -1;
-   }
-   }
-
-   return 0;
-}
-
 #define SERVER_PORT67
 #define CLIENT_PORT68
 #define DHCP_MAGIC 0x63825363
diff --git a/drivers/staging/rtl8188eu/include/recv_osdep.h 
b/drivers/staging/rtl8188eu/include/recv_osdep.h
index a4fd957..a52a696 100644
--- a/drivers/staging/rtl8188eu/include/recv_osdep.h
+++ b/drivers/staging/rtl8188eu/include/recv_osdep.h
@@ -46,7 +46,6 @@ int rtw_os_recvbuf_resource_alloc(struct adapter *adapt, 
struct recv_buf *buf);
 void rtw_os_read_port(struct adapter *padapter, struct recv_buf *precvbuf);

 void rtw_init_recv_timer(struct recv_reorder_ctrl *preorder_ctrl);
-int nat25_handle_frame(struct adapter *priv, struct sk_buff *skb);
 int _netdev_open(struct net_device *pnetdev);
 int netdev_open(struct net_device *pnetdev);
 int netdev_close(struct net_device *pnetdev);
--
1.7.10.4

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


[PATCH 2/2] Staging: speakup: ERROR: Fix macro parenthesis.

2014-06-08 Thread Choi Gi-yong
Signed-off-by: Choi Gi-yong 
---
 drivers/staging/speakup/speakup_acntpc.c | 5 -
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/staging/speakup/speakup_acntpc.c 
b/drivers/staging/speakup/speakup_acntpc.c
index 31f952b..f70b698 100644
--- a/drivers/staging/speakup/speakup_acntpc.c
+++ b/drivers/staging/speakup/speakup_acntpc.c
@@ -35,7 +35,7 @@
 #include "speakup_acnt.h" /* local header file for Accent values */
 
 #define DRV_VERSION "2.10"
-#define PROCSPEECH '\r'
+#define PROCSPEECH ('\r')
 
 static int synth_probe(struct spk_synth *synth);
 static void accent_release(void);
@@ -152,8 +152,10 @@ static inline bool synth_full(void)
 static const char *synth_immediate(struct spk_synth *synth, const char *buf)
 {
u_char ch;
+
while ((ch = *buf)) {
int timeout = SPK_XMITR_TIMEOUT;
+
if (ch == '\n')
ch = PROCSPEECH;
if (synth_full())
@@ -257,6 +259,7 @@ static int synth_probe(struct spk_synth *synth)
 {
unsigned int port_val = 0;
int i = 0;
+
pr_info("Probing for %s.\n", synth->long_name);
if (port_forced) {
speakup_info.port_tts = port_forced;
-- 
1.9.1

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


Re: [PATCH 2/2] Staging: speakup: ERROR: Fix macro parenthesis.

2014-06-08 Thread Dan Carpenter
It looks like this patch is adding blank lines not parenthesis like the
subject says.

regards,
dan carpenter

On Sun, Jun 08, 2014 at 11:12:57PM +0900, Choi Gi-yong wrote:
> Signed-off-by: Choi Gi-yong 
> ---
>  drivers/staging/speakup/speakup_acntpc.c | 5 -
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/staging/speakup/speakup_acntpc.c 
> b/drivers/staging/speakup/speakup_acntpc.c
> index 31f952b..f70b698 100644
> --- a/drivers/staging/speakup/speakup_acntpc.c
> +++ b/drivers/staging/speakup/speakup_acntpc.c
> @@ -35,7 +35,7 @@
>  #include "speakup_acnt.h" /* local header file for Accent values */
>  
>  #define DRV_VERSION "2.10"
> -#define PROCSPEECH '\r'
> +#define PROCSPEECH ('\r')
>  
>  static int synth_probe(struct spk_synth *synth);
>  static void accent_release(void);
> @@ -152,8 +152,10 @@ static inline bool synth_full(void)
>  static const char *synth_immediate(struct spk_synth *synth, const char *buf)
>  {
>   u_char ch;
> +
>   while ((ch = *buf)) {
>   int timeout = SPK_XMITR_TIMEOUT;
> +
>   if (ch == '\n')
>   ch = PROCSPEECH;
>   if (synth_full())
> @@ -257,6 +259,7 @@ static int synth_probe(struct spk_synth *synth)
>  {
>   unsigned int port_val = 0;
>   int i = 0;
> +
>   pr_info("Probing for %s.\n", synth->long_name);
>   if (port_forced) {
>   speakup_info.port_tts = port_forced;
> -- 
> 1.9.1
> 
> ___
> devel mailing list
> de...@linuxdriverproject.org
> http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH] staging: bcm: nvm.c: Cleaning up a array that is filled incompletely

2014-06-08 Thread Rickard Strandqvist
Hi

I think someone missed the count sizeof type in memcpy.

I'm no expert on this code.
But I wonder if also the the next for loop wrong?
It will fill with 0XFF00 but it is
not a complete 0X you're looking for?

So something like:
memset(&Buff[sigOffset], 0xFF, MAX_RW_SIZE * sizeof(PCHAR));

Rickard Strandqvist (1):
  MY_FIL_NAMN Cleaning up a array that is filled incompletely

 drivers/staging/bcm/nvm.c |4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

-- 
1.7.10.4

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


[PATCH] staging: bcm: nvm.c: Cleaning up a array that is filled incompletely

2014-06-08 Thread Rickard Strandqvist
Array 'SigBuff' is filled incompletely.
Someone forget to multiply for the sizeof type.

This was partly found using a static code analysis program called cppcheck.

Signed-off-by: Rickard Strandqvist 
---
 drivers/staging/bcm/nvm.c |4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/staging/bcm/nvm.c b/drivers/staging/bcm/nvm.c
index 63be3be..d56ca3b 100644
--- a/drivers/staging/bcm/nvm.c
+++ b/drivers/staging/bcm/nvm.c
@@ -3591,7 +3591,7 @@ int BcmCopyISO(struct bcm_mini_adapter *Adapter, struct 
bcm_flash2x_copy_section
 
if (IsThisHeaderSector == TRUE) {
/* If this is header sector write 0x at 
the sig time and in last write sig */
-   memcpy(SigBuff, Buff + sigOffset, MAX_RW_SIZE);
+   memcpy(SigBuff, Buff + sigOffset, 
sizeof(SigBuff));
 
for (i = 0; i < MAX_RW_SIZE; i++)
*(Buff + sigOffset + i) = 0xFF;
@@ -3704,7 +3704,7 @@ int BcmCopyISO(struct bcm_mini_adapter *Adapter, struct 
bcm_flash2x_copy_section
 
if (IsThisHeaderSector == TRUE) {
/* If this is header sector write 0x at 
the sig time and in last write sig */
-   memcpy(SigBuff, Buff + sigOffset, MAX_RW_SIZE);
+   memcpy(SigBuff, Buff + sigOffset, 
sizeof(SigBuff));
 
for (i = 0; i < MAX_RW_SIZE; i++)
*(Buff + sigOffset + i) = 0xFF;
-- 
1.7.10.4

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


Re: [PATCH 2/2] gpio: gpiolib: set gpiochip_remove retval to void

2014-06-08 Thread Ben Dooks
On Fri, May 30, 2014 at 08:16:59PM +0200, Lars-Peter Clausen wrote:
> On 05/30/2014 07:33 PM, David Daney wrote:
> >On 05/30/2014 04:39 AM, Geert Uytterhoeven wrote:
> >>On Fri, May 30, 2014 at 1:30 PM, abdoulaye berthe 
> >>wrote:
> >>>--- a/drivers/gpio/gpiolib.c
> >>>+++ b/drivers/gpio/gpiolib.c
> >>>@@ -1263,10 +1263,9 @@ static void gpiochip_irqchip_remove(struct
> >>>gpio_chip *gpiochip);
> >>>   *
> >>>   * A gpio_chip with any GPIOs still requested may not be removed.
> >>>   */
> >>>-int gpiochip_remove(struct gpio_chip *chip)
> >>>+void gpiochip_remove(struct gpio_chip *chip)
> >>>  {
> >>> unsigned long   flags;
> >>>-   int status = 0;
> >>> unsignedid;
> >>>
> >>> acpi_gpiochip_remove(chip);
> >>>@@ -1278,24 +1277,15 @@ int gpiochip_remove(struct gpio_chip *chip)
> >>> of_gpiochip_remove(chip);
> >>>
> >>> for (id = 0; id < chip->ngpio; id++) {
> >>>-   if (test_bit(FLAG_REQUESTED, &chip->desc[id].flags)) {
> >>>-   status = -EBUSY;
> >>>-   break;
> >>>-   }
> >>>-   }
> >>>-   if (status == 0) {
> >>>-   for (id = 0; id < chip->ngpio; id++)
> >>>-   chip->desc[id].chip = NULL;
> >>>-
> >>>-   list_del(&chip->list);
> >>>+   if (test_bit(FLAG_REQUESTED, &chip->desc[id].flags))
> >>>+   panic("gpio: removing gpiochip with gpios still
> >>>requested\n");
> >>
> >>panic?
> >
> >NACK to the patch for this reason.  The strongest thing you should do here
> >is WARN.
> >
> >That said, I am not sure why we need this whole patch set in the first place.
> 
> Well, what currently happens when you remove a device that is a
> provider of a gpio_chip which is still in use, is that the kernel
> crashes. Probably with a rather cryptic error message. So this patch
> doesn't really change the behavior, but makes it more explicit what
> is actually wrong. And even if you replace the panic() by a WARN()
> it will again just crash slightly later.
> 
> This is a design flaw in the GPIO subsystem that needs to be fixed.

Surely then the best way is to error out to the module unload and
stop the driver being unloaded?

-- 
Ben Dooks, b...@fluff.org, http://www.fluff.org/ben/

Large Hadron Colada: A large Pina Colada that makes the universe disappear.

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


[PATCH] checkpatch: fix complex macro false positive for escaped constant char

2014-06-08 Thread Joe Perches
A single escaped constant char is not a complex macro.

Signed-off-by: Joe Perches 
---
On Sun, 2014-06-08 at 23:12 +0900, Choi Gi-yong wrote:
> diff --git a/drivers/staging/speakup/speakup_acntpc.c 
> b/drivers/staging/speakup/speakup_acntpc.c
[]
> @@ -35,7 +35,7 @@
[]
> -#define PROCSPEECH '\r'
> +#define PROCSPEECH ('\r')

checkpatch false positive, doesn't need parenthesis

 scripts/checkpatch.pl | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 010b18e..ba92493 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -3757,7 +3757,7 @@ sub process {
$dstat !~ /^(?:$Ident|-?$Constant),$/ &&
# 10, // foo(),
$dstat !~ /^(?:$Ident|-?$Constant);$/ &&
# foo();
$dstat !~ /^[!~-]?(?:$Lval|$Constant)$/ &&  
# 10 // foo() // !foo // ~foo // -foo // foo->bar // foo.bar->baz
-   $dstat !~ /^'X'$/ &&
# character constants
+   $dstat !~ /^'X'$/ && $dstat !~ /^'XX'$/ &&  
# character constants
$dstat !~ /$exceptions/ &&
$dstat !~ /^\.$Ident\s*=/ &&
# .foo =
$dstat !~ /^(?:\#\s*$Ident|\#\s*$Constant)\s*$/ &&  
# stringification #foo


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


Re: [PATCH v3 00/05] staging: Emma Mobile USB driver and KZM9D board code V3

2014-06-08 Thread Magnus Damm
On Sat, Jun 7, 2014 at 12:39 AM, Greg KH  wrote:
> On Fri, Jun 06, 2014 at 07:44:08PM +0900, Magnus Damm wrote:
>> staging: Emma Mobile USB driver and KZM9D board code V3
>>
>> [PATCH v3 01/05] staging: emxx_udc: Add Emma Mobile USB Gadget driver
>> [PATCH v3 02/05] staging: emxx_udc: I/O memory and IRQ resource support
>> [PATCH v3 03/05] staging: emxx_udc: Add TODO file
>> [PATCH v3 04/05] staging: board: Initial board staging support
>> [PATCH v3 05/05] staging: board: kzm9d: Board staging support for emxx_udc
>>
>> This patch series is V3 of the old USB Gadget driver for Emma Mobile
>> that gets slightly adjusted to make use of the platform device interface
>> which in turn is used to add USB Gadget support to the KZM9D board.
>>
>> Two separate staging components are included in this series:
>> 1) the emxx_udc driver - from out-of-tree Android 2.6.35.7
>> 2) board staging support for KZM9D - platform device for DT-only KZM9D
>>
>> The two components above will be used to continously improve the driver
>> and board integration code until the driver can be moved out of staging
>> and/or DT bindings are available so the board staging platform device code
>> can be replaced with a DT node.
>>
>> Changes since V2:
>> - Added CONFIG_OF_ADDRESS dependency for the board staging bits
>>
>> Changes since V1:
>> - Added TODO file for emxx_udc
>> - Broke out board staging base support, included TODO file
>> - Added code to avoid registering platform device if DT node exists
>> - Modified KZM9D board code build condition to use SoC Kconfig entry
>>
>> Many thanks to Dan Carpenter, Geert Uytterhoeven, Greg KH and
>> Paul Bolle for feedback!
>>
>> Please let me know if you would like me to rebase this code somehow.
>
> At quick glance, this looks good.  I'll queue it up after 3.16-rc1 is
> out as it's too late for this merge window.

Thanks, Greg! This sounds perfect to me!

Cheers,

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