* [PATCH] arch: hexagon: kernel: add export symbol function __delay() @ 2013-11-19 3:10 Chen Gang 2013-11-25 1:19 ` rkuo 0 siblings, 1 reply; 7+ messages in thread From: Chen Gang @ 2013-11-19 3:10 UTC (permalink / raw) To: Richard Kuo; +Cc: linux-hexagon, linux-kernel@vger.kernel.org Need add __delay() implementation, or can not pass allmodconfig in next-20131118 tree. The related error: CC kernel/locking/spinlock_debug.o kernel/locking/spinlock_debug.c: In function '__spin_lock_debug': kernel/locking/spinlock_debug.c:114:3: error: implicit declaration of function '__delay' [-Werror=implicit-function-declaration] Signed-off-by: Chen Gang <gang.chen.5i5j@gmail.com> --- arch/hexagon/include/asm/delay.h | 1 + arch/hexagon/kernel/time.c | 9 +++++++++ 2 files changed, 10 insertions(+), 0 deletions(-) diff --git a/arch/hexagon/include/asm/delay.h b/arch/hexagon/include/asm/delay.h index 5307971..8933b9b1 100644 --- a/arch/hexagon/include/asm/delay.h +++ b/arch/hexagon/include/asm/delay.h @@ -21,6 +21,7 @@ #include <asm/param.h> +extern void __delay(unsigned long cycles); extern void __udelay(unsigned long usecs); #define udelay(usecs) __udelay((usecs)) diff --git a/arch/hexagon/kernel/time.c b/arch/hexagon/kernel/time.c index d0c4f5a..17fbf45 100644 --- a/arch/hexagon/kernel/time.c +++ b/arch/hexagon/kernel/time.c @@ -229,6 +229,15 @@ void __init time_init(void) late_time_init = time_init_deferred; } +void __delay(unsigned long cycles) +{ + unsigned long long start = __vmgettime(); + + while ((__vmgettime() - start) < cycles) + cpu_relax(); +} +EXPORT_SYMBOL(__delay); + /* * This could become parametric or perhaps even computed at run-time, * but for now we take the observed simulator jitter. -- 1.7.7.6 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH] arch: hexagon: kernel: add export symbol function __delay() 2013-11-19 3:10 [PATCH] arch: hexagon: kernel: add export symbol function __delay() Chen Gang @ 2013-11-25 1:19 ` rkuo 2013-11-25 1:50 ` Chen Gang 2013-11-27 2:15 ` [PATCH] drivers: input: touchscreen: sur40: use static variable instead of stack varialbe for 'packet_id' Chen Gang 0 siblings, 2 replies; 7+ messages in thread From: rkuo @ 2013-11-25 1:19 UTC (permalink / raw) To: Chen Gang; +Cc: linux-hexagon, linux-kernel@vger.kernel.org On Tue, Nov 19, 2013 at 11:10:43AM +0800, Chen Gang wrote: > Need add __delay() implementation, or can not pass allmodconfig in > next-20131118 tree. > > The related error: > > CC kernel/locking/spinlock_debug.o > kernel/locking/spinlock_debug.c: In function '__spin_lock_debug': > kernel/locking/spinlock_debug.c:114:3: error: implicit declaration of function '__delay' [-Werror=implicit-function-declaration] > > > Signed-off-by: Chen Gang <gang.chen.5i5j@gmail.com> > --- > arch/hexagon/include/asm/delay.h | 1 + > arch/hexagon/kernel/time.c | 9 +++++++++ > 2 files changed, 10 insertions(+), 0 deletions(-) Thanks again for all the cleanups. I've tested this and the rest of your patches on my internal tree and everything checks out. Also just to let you know, I'm still waiting to hear back on that compiler bug. Acked-by: Richard Kuo <rkuo@codeaurora.org> -- Sent by an employee of the Qualcomm Innovation Center, Inc. The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] arch: hexagon: kernel: add export symbol function __delay() 2013-11-25 1:19 ` rkuo @ 2013-11-25 1:50 ` Chen Gang 2013-11-27 2:15 ` [PATCH] drivers: input: touchscreen: sur40: use static variable instead of stack varialbe for 'packet_id' Chen Gang 1 sibling, 0 replies; 7+ messages in thread From: Chen Gang @ 2013-11-25 1:50 UTC (permalink / raw) To: rkuo; +Cc: linux-hexagon, linux-kernel@vger.kernel.org On 11/25/2013 09:19 AM, rkuo wrote: > On Tue, Nov 19, 2013 at 11:10:43AM +0800, Chen Gang wrote: >> Need add __delay() implementation, or can not pass allmodconfig in >> next-20131118 tree. >> >> The related error: >> >> CC kernel/locking/spinlock_debug.o >> kernel/locking/spinlock_debug.c: In function '__spin_lock_debug': >> kernel/locking/spinlock_debug.c:114:3: error: implicit declaration of function '__delay' [-Werror=implicit-function-declaration] >> >> >> Signed-off-by: Chen Gang <gang.chen.5i5j@gmail.com> >> --- >> arch/hexagon/include/asm/delay.h | 1 + >> arch/hexagon/kernel/time.c | 9 +++++++++ >> 2 files changed, 10 insertions(+), 0 deletions(-) > > Thanks again for all the cleanups. I've tested this and the rest of your > patches on my internal tree and everything checks out. > OK, thanks. I will/should continue. :-) > Also just to let you know, I'm still waiting to hear back on that compiler > bug. > If necessary/suitable, can let me join to the related communication. > > > Acked-by: Richard Kuo <rkuo@codeaurora.org> > Thanks. -- Chen Gang ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH] drivers: input: touchscreen: sur40: use static variable instead of stack varialbe for 'packet_id' 2013-11-25 1:19 ` rkuo 2013-11-25 1:50 ` Chen Gang @ 2013-11-27 2:15 ` Chen Gang 2013-11-28 4:07 ` Dmitry Torokhov 1 sibling, 1 reply; 7+ messages in thread From: Chen Gang @ 2013-11-27 2:15 UTC (permalink / raw) To: dmitry.torokhov, floe, rydberg, David Herrmann Cc: rkuo, linux-kernel@vger.kernel.org, linux-input 'packet_id' is used for checking sequence whether in order, it need be static variable independent from sur40_poll(). The related warning (with allmodconfig under hexagon): drivers/input/touchscreen/sur40.c: In function 'sur40_poll': drivers/input/touchscreen/sur40.c:297:6: warning: 'packet_id' may be used uninitialized in this function [-Wuninitialized] Signed-off-by: Chen Gang <gang.chen.5i5j@gmail.com> --- drivers/input/touchscreen/sur40.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/drivers/input/touchscreen/sur40.c b/drivers/input/touchscreen/sur40.c index cfd1b7e..5dfd01a 100644 --- a/drivers/input/touchscreen/sur40.c +++ b/drivers/input/touchscreen/sur40.c @@ -251,7 +251,7 @@ static void sur40_poll(struct input_polled_dev *polldev) struct sur40_state *sur40 = polldev->private; struct input_dev *input = polldev->input; int result, bulk_read, need_blobs, packet_blobs, i; - u32 packet_id; + static u32 packet_id; struct sur40_header *header = &sur40->bulk_in_buffer->header; struct sur40_blob *inblob = &sur40->bulk_in_buffer->blobs[0]; -- 1.7.7.6 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH] drivers: input: touchscreen: sur40: use static variable instead of stack varialbe for 'packet_id' 2013-11-27 2:15 ` [PATCH] drivers: input: touchscreen: sur40: use static variable instead of stack varialbe for 'packet_id' Chen Gang @ 2013-11-28 4:07 ` Dmitry Torokhov 2013-11-28 4:24 ` Chen Gang 2013-11-28 4:34 ` [PATCH v2] drivers: input: touchscreen: sur40: remove stack variable 'packet_id' from sur40_poll() Chen Gang 0 siblings, 2 replies; 7+ messages in thread From: Dmitry Torokhov @ 2013-11-28 4:07 UTC (permalink / raw) To: Chen Gang Cc: floe, rydberg, David Herrmann, rkuo, linux-kernel@vger.kernel.org, linux-input Hi Chen, On Wed, Nov 27, 2013 at 10:15:33AM +0800, Chen Gang wrote: > 'packet_id' is used for checking sequence whether in order, it need be > static variable independent from sur40_poll(). > > The related warning (with allmodconfig under hexagon): > > drivers/input/touchscreen/sur40.c: In function 'sur40_poll': > drivers/input/touchscreen/sur40.c:297:6: warning: 'packet_id' may be used uninitialized in this function [-Wuninitialized] > > > Signed-off-by: Chen Gang <gang.chen.5i5j@gmail.com> > --- > drivers/input/touchscreen/sur40.c | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/drivers/input/touchscreen/sur40.c b/drivers/input/touchscreen/sur40.c > index cfd1b7e..5dfd01a 100644 > --- a/drivers/input/touchscreen/sur40.c > +++ b/drivers/input/touchscreen/sur40.c > @@ -251,7 +251,7 @@ static void sur40_poll(struct input_polled_dev *polldev) > struct sur40_state *sur40 = polldev->private; > struct input_dev *input = polldev->input; > int result, bulk_read, need_blobs, packet_blobs, i; > - u32 packet_id; > + static u32 packet_id; It is usually not a good idea to use statics in device drivers as it does not work well when you have several devices of the same type present in a system. Also, we process all blobs in one pass so there is no need to preserve value of packet_id between calls to sur40_poll(). Thanks. -- Dmitry ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] drivers: input: touchscreen: sur40: use static variable instead of stack varialbe for 'packet_id' 2013-11-28 4:07 ` Dmitry Torokhov @ 2013-11-28 4:24 ` Chen Gang 2013-11-28 4:34 ` [PATCH v2] drivers: input: touchscreen: sur40: remove stack variable 'packet_id' from sur40_poll() Chen Gang 1 sibling, 0 replies; 7+ messages in thread From: Chen Gang @ 2013-11-28 4:24 UTC (permalink / raw) To: Dmitry Torokhov Cc: floe, rydberg, David Herrmann, rkuo, linux-kernel@vger.kernel.org, linux-input On 11/28/2013 12:07 PM, Dmitry Torokhov wrote: > Hi Chen, > > On Wed, Nov 27, 2013 at 10:15:33AM +0800, Chen Gang wrote: >> > 'packet_id' is used for checking sequence whether in order, it need be >> > static variable independent from sur40_poll(). >> > >> > The related warning (with allmodconfig under hexagon): >> > >> > drivers/input/touchscreen/sur40.c: In function 'sur40_poll': >> > drivers/input/touchscreen/sur40.c:297:6: warning: 'packet_id' may be used uninitialized in this function [-Wuninitialized] >> > >> > >> > Signed-off-by: Chen Gang <gang.chen.5i5j@gmail.com> >> > --- >> > drivers/input/touchscreen/sur40.c | 2 +- >> > 1 files changed, 1 insertions(+), 1 deletions(-) >> > >> > diff --git a/drivers/input/touchscreen/sur40.c b/drivers/input/touchscreen/sur40.c >> > index cfd1b7e..5dfd01a 100644 >> > --- a/drivers/input/touchscreen/sur40.c >> > +++ b/drivers/input/touchscreen/sur40.c >> > @@ -251,7 +251,7 @@ static void sur40_poll(struct input_polled_dev *polldev) >> > struct sur40_state *sur40 = polldev->private; >> > struct input_dev *input = polldev->input; >> > int result, bulk_read, need_blobs, packet_blobs, i; >> > - u32 packet_id; >> > + static u32 packet_id; > It is usually not a good idea to use statics in device drivers as it > does not work well when you have several devices of the same type > present in a system. Also, we process all blobs in one pass so there is > no need to preserve value of packet_id between calls to sur40_poll(). OK, thanks, I will/should send patch v2 for it. -- Chen Gang ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2] drivers: input: touchscreen: sur40: remove stack variable 'packet_id' from sur40_poll() 2013-11-28 4:07 ` Dmitry Torokhov 2013-11-28 4:24 ` Chen Gang @ 2013-11-28 4:34 ` Chen Gang 1 sibling, 0 replies; 7+ messages in thread From: Chen Gang @ 2013-11-28 4:34 UTC (permalink / raw) To: Dmitry Torokhov Cc: floe, rydberg, David Herrmann, rkuo, linux-kernel@vger.kernel.org, linux-input The drivers process all blobs in one pass, so there is no need to preserve value of packet_id between calls to sur40_poll(). And the original implementation may cause 'packet_id' uninitialized, the related warning (with allmodconfig under hexagon): drivers/input/touchscreen/sur40.c: In function 'sur40_poll': drivers/input/touchscreen/sur40.c:297:6: warning: 'packet_id' may be used uninitialized in this function [-Wuninitialized] Signed-off-by: Chen Gang <gang.chen.5i5j@gmail.com> --- drivers/input/touchscreen/sur40.c | 10 ---------- 1 files changed, 0 insertions(+), 10 deletions(-) diff --git a/drivers/input/touchscreen/sur40.c b/drivers/input/touchscreen/sur40.c index cfd1b7e..2ca32cb 100644 --- a/drivers/input/touchscreen/sur40.c +++ b/drivers/input/touchscreen/sur40.c @@ -251,7 +251,6 @@ static void sur40_poll(struct input_polled_dev *polldev) struct sur40_state *sur40 = polldev->private; struct input_dev *input = polldev->input; int result, bulk_read, need_blobs, packet_blobs, i; - u32 packet_id; struct sur40_header *header = &sur40->bulk_in_buffer->header; struct sur40_blob *inblob = &sur40->bulk_in_buffer->blobs[0]; @@ -286,17 +285,8 @@ static void sur40_poll(struct input_polled_dev *polldev) if (need_blobs == -1) { need_blobs = le16_to_cpu(header->count); dev_dbg(sur40->dev, "need %d blobs\n", need_blobs); - packet_id = header->packet_id; } - /* - * Sanity check. when video data is also being retrieved, the - * packet ID will usually increase in the middle of a series - * instead of at the end. - */ - if (packet_id != header->packet_id) - dev_warn(sur40->dev, "packet ID mismatch\n"); - packet_blobs = result / sizeof(struct sur40_blob); dev_dbg(sur40->dev, "received %d blobs\n", packet_blobs); -- 1.7.7.6 ^ permalink raw reply related [flat|nested] 7+ messages in thread
end of thread, other threads:[~2013-11-28 4:32 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-11-19 3:10 [PATCH] arch: hexagon: kernel: add export symbol function __delay() Chen Gang 2013-11-25 1:19 ` rkuo 2013-11-25 1:50 ` Chen Gang 2013-11-27 2:15 ` [PATCH] drivers: input: touchscreen: sur40: use static variable instead of stack varialbe for 'packet_id' Chen Gang 2013-11-28 4:07 ` Dmitry Torokhov 2013-11-28 4:24 ` Chen Gang 2013-11-28 4:34 ` [PATCH v2] drivers: input: touchscreen: sur40: remove stack variable 'packet_id' from sur40_poll() Chen Gang
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).