USB: ccid_bridge: Don't kill URB in release after device is disconnected

The URBs are killed in disconnect method. If the device is disconnected
before the /dev/ccid_bridge is closed, no need to kill the URBs again.
As the URB reference count is dropped in disconnect, accessing it in
release is causing the kernel panic.

CRs-Fixed: 653776
Change-Id: I7fae9ac2568cce59ea39bdd73c955d388d3f26bd
Signed-off-by: Pavankumar Kondeti <pkondeti@codeaurora.org>
Signed-off-by: franciscofranco <franciscofranco.1990@gmail.com>
USB: ccid_bridge: Provide bulk message write/read stats via debugfs

The bulk message timeouts are observed occasionally during mass storage
transfers. This debug facility helps in identifying such timeout issues.

The sample output of the stats debugfs file.

ccid_bridge: connected
ccid_bridge: opened
total writes: 444
total reads: 444
write/read timeout val: 1000
write_timeout: 0
read_timeout: 0
write_max_time (msec): 130
read_max_time: (msec): 857

CRs-Fixed: 659909
Change-Id: I9787288c10d23b176c9316feed82d41bd2adae65
Signed-off-by: Pavankumar Kondeti <pkondeti@codeaurora.org>
Signed-off-by: franciscofranco <franciscofranco.1990@gmail.com>
cpufreq: Always allow update of user policy

In the cases where the system boots up in a constraint with policy min and
max lower than cpuinfo min/max, and user tries to set a higher user
policy min, the value would be overridden during the verifying the
limits.

Once user initiates the sysfs write the previous user policy is
maintained in policy min and max thus changing the limits for verification
of the current policy. Once the verification is completed restore the
current user policy min/max with the updated values if any. This would take
care of cases uwhere user policy min/max input is higher/lesser than the
current min and max.

Change-Id: I5ad92ba05162cb5c32c3ba3fdae21d2e505493d3
Signed-off-by: Taniya Das <tdas@codeaurora.org>
Signed-off-by: franciscofranco <franciscofranco.1990@gmail.com>
USB: ccid_bridge: Increase the bulk message timeout

The card is taking more than 500 msec to respond to some commands.
Increase the timeout to 1 sec.

Change-Id: I8ecfec6fa6e7465f6c51dcf0db899f576ae45298
Signed-off-by: Pavankumar Kondeti <pkondeti@codeaurora.org>
Signed-off-by: franciscofranco <franciscofranco.1990@gmail.com>
USB: ccid_bridge: Drop the usb device reference upon disconnect

usb device ref count is incremented in probe via usb_get_dev. Call
usb_put_dev during disconnect to drop the ref count. Otherwise
struct usb_device memory is leaked.

Change-Id: Ia82f5ff7ef1a0a5e5c54f6e52b9e22f8434c45a6
Signed-off-by: Pavankumar Kondeti <pkondeti@codeaurora.org>
Signed-off-by: franciscofranco <franciscofranco.1990@gmail.com>
USB: ccid_bridge: Enable the auto-suspend

The USB UICC cards are always attached to the host. Enable the
auto-suspend to save power.

Change-Id: I715171fa677b64da220114d515ceb775fdab54a0
Signed-off-by: Pavankumar Kondeti <pkondeti@codeaurora.org>
Signed-off-by: franciscofranco <franciscofranco.1990@gmail.com>
USB: ccid_bridge: Add module param for bulk message timeout

The bulk message timeout is 1 second by default. Some cards take
more time to respond to CCID commands. Provide a module param
to configure the bulk message timeout.

For example, the below command configures the timeout as 5 seconds.

echo -n 5000 > /sys/module/ccid_bridge/parameters/bulk_msg_timeout

CRs-Fixed: 652421
Change-Id: I5f8fc2a9586d3728fe1c43311a28c4084a333164
Signed-off-by: Pavankumar Kondeti <pkondeti@codeaurora.org>
Signed-off-by: franciscofranco <franciscofranco.1990@gmail.com>