Lower snoc bus vote from USB to 80Mhz to allow power savings.
Change-Id: Ic68b02ddf70402fee77f7340c58d81d0ae5fb1ed
Signed-off-by: Devdutt Patnaik <dpatnaik@codeaurora.org>
Increase the maximum number of intents supported in G-Link SMD XPRT so
that the clients can queue more receive intents.
Change-Id: I0e2287a3938d3aa59de1c4566922dcbcaf1cdc9d
Signed-off-by: Karthikeyan Ramasubramanian <kramasub@codeaurora.org>
Allow G-Link to migrate IPC Router channel to a better available transport
by setting the appropriate flag in the channel open configuration.
Change-Id: I4072cd87d24516bcca5b1010a5ebac6baf07bf33
Signed-off-by: Karthikeyan Ramasubramanian <kramasub@codeaurora.org>
If the currently consumed receive intent size is less than the default
receive intent size, then re-use the receive intent.
Change-Id: Ib1b9fd18c132f3dc86732c338077d121475d47c7
Signed-off-by: Karthikeyan Ramasubramanian <kramasub@codeaurora.org>
Every time IPC Router registers for link state callback, it registers for
all edges. This causes IPC Router to receive a lot of unnecessary
notifications.
Reduce the number of notification received by registering the link state
callback for appropriate edges.
Change-Id: Ic8819c95695f8ce7eeaa08fda2c04e7352a7c974
Signed-off-by: Karthikeyan Ramasubramanian <kramasub@codeaurora.org>
hrtimer_interrupt() has the following subtle issue:
hrtimer_interrupt()
lock(cpu_base);
expires_next = KTIME_MAX;
expire_timers(CLOCK_MONOTONIC);
expires = get_next_timer(CLOCK_MONOTONIC);
if (expires < expires_next)
expires_next = expires;
expire_timers(CLOCK_REALTIME);
unlock(cpu_base);
wakeup()
hrtimer_start(CLOCK_MONOTONIC, newtimer);
lock(cpu_base();
expires = get_next_timer(CLOCK_REALTIME);
if (expires < expires_next)
expires_next = expires;
So because we already evaluated the next expiring timer of
CLOCK_MONOTONIC we ignore that the expiry time of newtimer might be
earlier than the overall next expiry time in hrtimer_interrupt().
To solve this, remove the caching of the next expiry value from
hrtimer_interrupt() and reevaluate all active clock bases for the next
expiry value. To avoid another code duplication, create a shared
evaluation function and use it for hrtimer_get_next_event(),
hrtimer_force_reprogram() and hrtimer_interrupt().
There is another subtlety in this mechanism:
While hrtimer_interrupt() is running, we want to avoid to touch the
hardware device because we will reprogram it anyway at the end of
hrtimer_interrupt(). This works nicely for hrtimers which get rearmed
via the HRTIMER_RESTART mechanism, because we drop out when the
callback on that CPU is running. But that fails, if a new timer gets
enqueued like in the example above.
This has another implication: While hrtimer_interrupt() is running we
refuse remote enqueueing of timers - see hrtimer_interrupt() and
hrtimer_check_target().
hrtimer_interrupt() tries to prevent this by setting cpu_base->expires
to KTIME_MAX, but that fails if a new timer gets queued.
Prevent both the hardware access and the remote enqueue
explicitely. We can loosen the restriction on the remote enqueue now
due to reevaluation of the next expiry value, but that needs a
seperate patch.
Folded in a fix from Vignesh Radhakrishnan.
Change-Id: I803322cc29a294eab73fa2046e9f3a2e5f66755e
Reported-and-tested-by: Stanislav Fomichev <stfomichev@yandex-team.ru>
Based-on-patch-by: Stanislav Fomichev <stfomichev@yandex-team.ru>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: vigneshr@codeaurora.org
Cc: john.stultz@linaro.org
Cc: viresh.kumar@linaro.org
Cc: fweisbec@gmail.com
Cc: cl@linux.com
Cc: stuart.w.hayes@gmail.com
Link: http://lkml.kernel.org/r/alpine.DEB.2.11.1501202049190.5526@nanos
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Patch-mainline : linux-arm-kernel @ 01/23/15, 03:21
[vigneshr@codeaurora.org : Changes to the file kernel/time/hrtimer.c
is made to the file kernel/hrtimer.c]
Signed-off-by: Prasad Sodagudi <psodagud@codeaurora.org>
Signed-off-by: Vignesh Radhakrishnan <vigneshr@codeaurora.org>
Currently open_ack is sent after client is notified about
GLINK_CONNECTED event. This leads to a race condition where
client may start sending packet while remote side might not
have processed the open_ack. Since the channel is not fully
opened on the remote side, it does not grant the intent request.
Fix the race condition by sending the open_ack before sending
a GLINK_CONNECTED event to clients.
Change-Id: Ie32480f066fa25e13b5af14e8f22367f1c182461
Signed-off-by: Atish Kumar Patra <apatra@codeaurora.org>
This reverts commit 09c3b0c0ec since
it causes green screen issue in camera.
Change-Id: If3f93435068f883ab3c835181ae091a283d9f6e7
Signed-off-by: Venu Yeshala <vyeshala@codeaurora.org>
There is a known limitation in the DWC3 controller that EP0
control transfers must an even multiple of wMaxPacketSize (64 bytes
in high speed, 512 bytes in super speed). In the current handling
of an OUT data stage, if the length of the request buffer is not
aligned, a pre-reserved bounce buffer is used for that transfer
and copied back to the function when completed. The size of this
buffer is #defined as 512 bytes, and a WARN_ON is issued if the
request is greater than this since that indicates a buffer overrun
condition. A simple way to address this is to bump up this size
to 2048 to handle occassional large control transfers.
Change-Id: I4ea0ae0496bc39f14a384b50cf984b9456b0e3ec
Signed-off-by: Jack Pham <jackp@codeaurora.org>