msm: kgsl: Rate limit interrupt error messages

Limit the interrupt error messages to prevent them from
causing watchdog. Most important interrupt errors will still
be printed but the interrupts that do not cause hang can be
rate limited.

Conflicts:
	drivers/gpu/msm/adreno_a3xx.c

Change-Id: I6f8b7ca590159904d89b98ca25e34448642dd5e1
Signed-off-by: Shubhraprakash Das <sadas@codeaurora.org>
Signed-off-by: Digish Pandya <digishp@codeaurora.org>
msm: kgsl: Read fault register on ringbuffer h/w fault

Read the CP_HW_FAULT register which gives more information
about the fault when ringbuffer h/w fault interrupt is
generated. Also, limit the printing of this interrupt to
prevent watchdog timeout.

Conflicts:
	drivers/gpu/msm/adreno.h
	drivers/gpu/msm/adreno_a3xx.c

CRs-Fixed: 613940
Change-Id: I8eba72ab50553e72f733034c7fa0ea3ca69db343
Signed-off-by: Shubhraprakash Das <sadas@codeaurora.org>
Signed-off-by: Digish Pandya <digishp@codeaurora.org>
msm: kgsl: Add ratelimit check to limit excessive kernel logging

In a3xx_err_callback(), ratelimit check is needed to limit error interrupt
reporting messages. This will prevent kernel logs causing watchdog timeout.

Conflicts:
	drivers/gpu/msm/adreno_a3xx.c

Change-Id: Id01f232fa5dd6b54e1ca9af8d6b7f37f34ed85b8
Signed-off-by: Prabhat Awasthi <pawasthi@codeaurora.org>
Signed-off-by: Digish Pandya <digishp@codeaurora.org>
ASoC: wcd9306: Update condition to disable HPH PA after impedance detection

For headsets with threshold on mic, the flag hph_pa_dac_state gets
cleared once they are re-inserted into headphone jack with hph pas
are still ON. This causes impedance detection to disable the PA after
impedance computations. This will result into audio mute. Avoid the
audio mute by updating the condition to disable PAs.

CRs-Fixed: 694315
Change-Id: Ib7ab495485a321333c1b8b211559adc7c164735c
Signed-off-by: Yeleswarapu Nagaradhesh <nagaradh@codeaurora.org>
ASoC: wcd9xxx: switch to VDDIO while recording is on TX1

On Tapan, ADC2/3 are same and there is coupling between ADC1
and ADC2 due to this there is polling noise in the recorded
audio when IN1/IN3 path is used for the recording with
headset inserted.Switch to VDDIO to avoid polling noise
to be captured in the recorded audio

CRs-Fixed: 696178
Change-Id: I34e96f31ce9460b77eae7a82803015995cce3641
Signed-off-by: Yeleswarapu Nagaradhesh <nagaradh@codeaurora.org>
net: socket: Added notifier chains for socket administrative functions

Allows other areas in the kernel to register notifier callbacks which
get invoked whenever something performs an administrative action on a
socket. This patch adds hooks in socket(), bind(), listen(), accept(),
shutdown().

CRs-Fixed:  626021
Change-Id: I4ae99cb2206d7c4eddba69757335c18d10143045
Signed-off-by: Harout Hedeshian <harouth@codeaurora.org>
net: sockev: Initial Commit

Added module which subscribes to socket notifier events. Notifier events
are then converted to a multicast netlink message for user space
applications to consume.

CRs-Fixed:  626021
Change-Id: Id5c6808d972b69f5f065d7fba9094e75c6ad0b2c
Signed-off-by: Harout Hedeshian <harouth@codeaurora.org>
hwmon: qpnp-adc-voltage: Add suspend_noirq support for VADC

With wakeup_source APIs in VADC driver if the client
driver suspend call requests adc conversion then
suspend process will be aborted even if the wakeup
event released by VADC driver.

Add suspend_noirq support to allow the client
driver to read adc during their suspend call
and remove wakeup_source APIs.

Change-Id: I338463975de0eafd9c9e21e5f0ce8a0508ceeac2
Signed-off-by: Dipen Parmar <dipenp@codeaurora.org>
sched: fix race between try_to_wake_up() and move_task()

Until a task's state has been seen as interruptible/uninterruptible
and it is no longer on_cpu, it is possible that the task may move
to another CPU (load balancing may cause this). Here is an example
where the race condition results in incorrect operation:

- cpu 0 calls put_prev_task on task A, task A's state is TASK_RUNNING
- cpu 0 runs task B, which attempts to wake up A
- cpu 0 begins try_to_wake_up(), recording src_cpu for task A as cpu 0
- cpu 1 then pulls task A (perhaps due to idle balance)
- cpu 1 runs task A, which then sleeps, becoming INTERRUPTIBLE
- cpu 0 continues in try_to_wake_up(), thinking task A's previous
  cpu is 0, where it is actually 1
- if select_task_rq returns cpu 0, task A will be woken up on cpu 0
  without properly updating its cpu to 0 in set_task_cpu()

CRs-Fixed: 665958
Change-Id: Icee004cb320bd8edfc772d9f74e670a9d4978a99
Signed-off-by: Steve Muckle <smuckle@codeaurora.org>
Merge "sched: fix race between try_to_wake_up() and move_task()"
Merge "msm: kgsl: Rate limit interrupt error messages"
Merge "msm: kgsl: Read fault register on ringbuffer h/w fault"
Merge "msm: kgsl: Add ratelimit check to limit excessive kernel logging"
wcnss: add null check in pm_ops unregister

Add null check for pm_ops in pm_ops unregister to avoid
null pointer dereference.

Change-Id: I885618a3244b91ba5eddcadb81ae08e965db63b3
CRs-Fixed: 690191
Signed-off-by: Mahesh A Saptasagar <msapta@codeaurora.org>
Merge "ASoC: wcd9306: Update condition to disable HPH PA after impedance detection"
Merge "net: socket: Added notifier chains for socket administrative functions"
Merge "net: sockev: Initial Commit"
ASoC: msm: set IIR1 gain after IIR clock is enable

Sidetone gain is not getting applied when provide gain
value from mixers_path.xml(IIR1 INP1 Volume). The problem
is the volume control is applied before IIR clock/power is
enabled reason is controls to enable the clock are
registered with soc-dapm framework and volume control is
registered with soc-core framework and gets applied before.
Fix is to register a post power up handler with IIR1 clock
power/control widget. This handler reads  register value of
volume gain and re-apply it.

CRs-Fixed: 675099

Change-Id: I32c6de0f20e5e98cab6cddeefac53b8d86d5b71a
Signed-off-by: Ramjee Singh <ramjee@codeaurora.org>
usb: gadget: mbim: Fix BUG in spin_lock usage in mbim_read

mbim_read (thread context) and fmbim_cmd_complete (interrupt
context) share some data structures that are currently
protected using spin_lock API. This is a BUG as this spin_lock
doesn't disable local interrupts, hence, there is still a
possibility that IRQ may be fired after acquiring spin_lock.
On SMP this may result in deadlock if spin_lock is acquired
again from ISR, but on uniprocessor this more or less in this
usecase becomes NO-OP.

Change-Id: I204b3a9d825bb45787bb42017fa7f5e7b84bcfe9
Signed-off-by: Manu Gautam <mgautam@codeaurora.org>
Merge "hwmon: qpnp-adc-voltage: Add suspend_noirq support for VADC"