Staging fixes for 3.13-rc2
Here are a number of staging, and IIO driver, fixes for 3.13-rc2 that resolve issues that have been reported for 3.13-rc1. All of these have been in linux-next for a bit this week. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iEYEABECAAYFAlKWdiEACgkQMUfUDdst+ynbywCfaED1OKlzXXx/VbCd5WRlYd2a 2IEAoJ4c6LmgW9Vn6z0M/pRblvmPyYj1 =Tq5a -----END PGP SIGNATURE----- Merge tag 'staging-3.13-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging Pull staging fixes from Greg KH: "Here are a number of staging, and IIO driver, fixes for 3.13-rc2 that resolve issues that have been reported for 3.13-rc1. All of these have been in linux-next for a bit this week" * tag 'staging-3.13-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging: (25 commits) Staging: tidspbridge: disable driver staging: zsmalloc: Ensure handle is never 0 on success staging/lustre/ptlrpc: fix ptlrpc_stop_pinger logic staging: r8188eu: Fix AP mode Staging: btmtk_usb: Add hdev parameter to hdev->send driver callback Staging: go7007: fix up some remaining go->dev issues staging: imx-drm: Fix modular build of DRM_IMX_IPUV3 staging: ft1000: fix use of potentially uninitialized variable Revert "staging:media: Use dev_dbg() instead of pr_debug()" Staging: zram: Fix memory leak by refcount mismatch staging: vt6656: [BUG] Fix for TX USB resets from vendors driver. staging: nvec: potential NULL dereference on error path Staging: vt6655-6: potential NULL dereference in hostap_disable_hostapd() staging: comedi: s626: fix value written by s626_set_dac() Staging: comedi: pcl730: fix some bitwise vs logical AND bugs staging: comedi: fix potentially uninitialised variable iio:accel:kxsd9 fix missing mutex unlock iio: adc: ti_am335x_adc: avoid double free of buffer. staging:iio: Fix hmc5843 Kconfig dependencies iio: Fix tcs3472 Kconfig dependencies ...
This commit is contained in:
commit
0b0f7f1cda
@ -350,7 +350,7 @@ static int hid_accel_3d_probe(struct platform_device *pdev)
|
||||
error_iio_unreg:
|
||||
iio_device_unregister(indio_dev);
|
||||
error_remove_trigger:
|
||||
hid_sensor_remove_trigger(indio_dev);
|
||||
hid_sensor_remove_trigger(&accel_state->common_attributes);
|
||||
error_unreg_buffer_funcs:
|
||||
iio_triggered_buffer_cleanup(indio_dev);
|
||||
error_free_dev_mem:
|
||||
@ -363,10 +363,11 @@ static int hid_accel_3d_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct hid_sensor_hub_device *hsdev = pdev->dev.platform_data;
|
||||
struct iio_dev *indio_dev = platform_get_drvdata(pdev);
|
||||
struct accel_3d_state *accel_state = iio_priv(indio_dev);
|
||||
|
||||
sensor_hub_remove_callback(hsdev, HID_USAGE_SENSOR_ACCEL_3D);
|
||||
iio_device_unregister(indio_dev);
|
||||
hid_sensor_remove_trigger(indio_dev);
|
||||
hid_sensor_remove_trigger(&accel_state->common_attributes);
|
||||
iio_triggered_buffer_cleanup(indio_dev);
|
||||
kfree(indio_dev->channels);
|
||||
|
||||
|
@ -112,9 +112,10 @@ static int kxsd9_read(struct iio_dev *indio_dev, u8 address)
|
||||
mutex_lock(&st->buf_lock);
|
||||
st->tx[0] = KXSD9_READ(address);
|
||||
ret = spi_sync_transfer(st->us, xfers, ARRAY_SIZE(xfers));
|
||||
if (ret)
|
||||
return ret;
|
||||
return (((u16)(st->rx[0])) << 8) | (st->rx[1] & 0xF0);
|
||||
if (!ret)
|
||||
ret = (((u16)(st->rx[0])) << 8) | (st->rx[1] & 0xF0);
|
||||
mutex_unlock(&st->buf_lock);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static IIO_CONST_ATTR(accel_scale_available,
|
||||
|
@ -1047,6 +1047,7 @@ static int at91_adc_probe(struct platform_device *pdev)
|
||||
} else {
|
||||
if (!st->caps->has_tsmr) {
|
||||
dev_err(&pdev->dev, "We don't support non-TSMR adc\n");
|
||||
ret = -ENODEV;
|
||||
goto error_disable_adc_clk;
|
||||
}
|
||||
|
||||
|
@ -88,10 +88,10 @@ static const int mcp3422_sample_rates[4] = {
|
||||
|
||||
/* sample rates to sign extension table */
|
||||
static const int mcp3422_sign_extend[4] = {
|
||||
[MCP3422_SRATE_240] = 12,
|
||||
[MCP3422_SRATE_60] = 14,
|
||||
[MCP3422_SRATE_15] = 16,
|
||||
[MCP3422_SRATE_3] = 18 };
|
||||
[MCP3422_SRATE_240] = 11,
|
||||
[MCP3422_SRATE_60] = 13,
|
||||
[MCP3422_SRATE_15] = 15,
|
||||
[MCP3422_SRATE_3] = 17 };
|
||||
|
||||
/* Client data (each client gets its own) */
|
||||
struct mcp3422 {
|
||||
|
@ -229,12 +229,15 @@ static int tiadc_iio_buffered_hardware_setup(struct iio_dev *indio_dev,
|
||||
unsigned long flags,
|
||||
const struct iio_buffer_setup_ops *setup_ops)
|
||||
{
|
||||
struct iio_buffer *buffer;
|
||||
int ret;
|
||||
|
||||
indio_dev->buffer = iio_kfifo_allocate(indio_dev);
|
||||
if (!indio_dev->buffer)
|
||||
buffer = iio_kfifo_allocate(indio_dev);
|
||||
if (!buffer)
|
||||
return -ENOMEM;
|
||||
|
||||
iio_device_attach_buffer(indio_dev, buffer);
|
||||
|
||||
ret = request_threaded_irq(irq, pollfunc_th, pollfunc_bh,
|
||||
flags, indio_dev->name, indio_dev);
|
||||
if (ret)
|
||||
|
@ -55,11 +55,10 @@ static int hid_sensor_data_rdy_trigger_set_state(struct iio_trigger *trig,
|
||||
return 0;
|
||||
}
|
||||
|
||||
void hid_sensor_remove_trigger(struct iio_dev *indio_dev)
|
||||
void hid_sensor_remove_trigger(struct hid_sensor_common *attrb)
|
||||
{
|
||||
iio_trigger_unregister(indio_dev->trig);
|
||||
iio_trigger_free(indio_dev->trig);
|
||||
indio_dev->trig = NULL;
|
||||
iio_trigger_unregister(attrb->trigger);
|
||||
iio_trigger_free(attrb->trigger);
|
||||
}
|
||||
EXPORT_SYMBOL(hid_sensor_remove_trigger);
|
||||
|
||||
@ -90,7 +89,7 @@ int hid_sensor_setup_trigger(struct iio_dev *indio_dev, const char *name,
|
||||
dev_err(&indio_dev->dev, "Trigger Register Failed\n");
|
||||
goto error_free_trig;
|
||||
}
|
||||
indio_dev->trig = trig;
|
||||
indio_dev->trig = attrb->trigger = trig;
|
||||
|
||||
return ret;
|
||||
|
||||
|
@ -21,6 +21,6 @@
|
||||
|
||||
int hid_sensor_setup_trigger(struct iio_dev *indio_dev, const char *name,
|
||||
struct hid_sensor_common *attrb);
|
||||
void hid_sensor_remove_trigger(struct iio_dev *indio_dev);
|
||||
void hid_sensor_remove_trigger(struct hid_sensor_common *attrb);
|
||||
|
||||
#endif
|
||||
|
@ -348,7 +348,7 @@ static int hid_gyro_3d_probe(struct platform_device *pdev)
|
||||
error_iio_unreg:
|
||||
iio_device_unregister(indio_dev);
|
||||
error_remove_trigger:
|
||||
hid_sensor_remove_trigger(indio_dev);
|
||||
hid_sensor_remove_trigger(&gyro_state->common_attributes);
|
||||
error_unreg_buffer_funcs:
|
||||
iio_triggered_buffer_cleanup(indio_dev);
|
||||
error_free_dev_mem:
|
||||
@ -361,10 +361,11 @@ static int hid_gyro_3d_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct hid_sensor_hub_device *hsdev = pdev->dev.platform_data;
|
||||
struct iio_dev *indio_dev = platform_get_drvdata(pdev);
|
||||
struct gyro_3d_state *gyro_state = iio_priv(indio_dev);
|
||||
|
||||
sensor_hub_remove_callback(hsdev, HID_USAGE_SENSOR_GYRO_3D);
|
||||
iio_device_unregister(indio_dev);
|
||||
hid_sensor_remove_trigger(indio_dev);
|
||||
hid_sensor_remove_trigger(&gyro_state->common_attributes);
|
||||
iio_triggered_buffer_cleanup(indio_dev);
|
||||
kfree(indio_dev->channels);
|
||||
|
||||
|
@ -81,6 +81,8 @@ config SENSORS_LM3533
|
||||
config TCS3472
|
||||
tristate "TAOS TCS3472 color light-to-digital converter"
|
||||
depends on I2C
|
||||
select IIO_BUFFER
|
||||
select IIO_TRIGGERED_BUFFER
|
||||
help
|
||||
If you say yes here you get support for the TAOS TCS3472
|
||||
family of color light-to-digital converters with IR filter.
|
||||
|
@ -314,7 +314,7 @@ static int hid_als_probe(struct platform_device *pdev)
|
||||
error_iio_unreg:
|
||||
iio_device_unregister(indio_dev);
|
||||
error_remove_trigger:
|
||||
hid_sensor_remove_trigger(indio_dev);
|
||||
hid_sensor_remove_trigger(&als_state->common_attributes);
|
||||
error_unreg_buffer_funcs:
|
||||
iio_triggered_buffer_cleanup(indio_dev);
|
||||
error_free_dev_mem:
|
||||
@ -327,10 +327,11 @@ static int hid_als_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct hid_sensor_hub_device *hsdev = pdev->dev.platform_data;
|
||||
struct iio_dev *indio_dev = platform_get_drvdata(pdev);
|
||||
struct als_state *als_state = iio_priv(indio_dev);
|
||||
|
||||
sensor_hub_remove_callback(hsdev, HID_USAGE_SENSOR_ALS);
|
||||
iio_device_unregister(indio_dev);
|
||||
hid_sensor_remove_trigger(indio_dev);
|
||||
hid_sensor_remove_trigger(&als_state->common_attributes);
|
||||
iio_triggered_buffer_cleanup(indio_dev);
|
||||
kfree(indio_dev->channels);
|
||||
|
||||
|
@ -19,6 +19,8 @@ config AK8975
|
||||
config MAG3110
|
||||
tristate "Freescale MAG3110 3-Axis Magnetometer"
|
||||
depends on I2C
|
||||
select IIO_BUFFER
|
||||
select IIO_TRIGGERED_BUFFER
|
||||
help
|
||||
Say yes here to build support for the Freescale MAG3110 3-Axis
|
||||
magnetometer.
|
||||
|
@ -351,7 +351,7 @@ static int hid_magn_3d_probe(struct platform_device *pdev)
|
||||
error_iio_unreg:
|
||||
iio_device_unregister(indio_dev);
|
||||
error_remove_trigger:
|
||||
hid_sensor_remove_trigger(indio_dev);
|
||||
hid_sensor_remove_trigger(&magn_state->common_attributes);
|
||||
error_unreg_buffer_funcs:
|
||||
iio_triggered_buffer_cleanup(indio_dev);
|
||||
error_free_dev_mem:
|
||||
@ -364,10 +364,11 @@ static int hid_magn_3d_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct hid_sensor_hub_device *hsdev = pdev->dev.platform_data;
|
||||
struct iio_dev *indio_dev = platform_get_drvdata(pdev);
|
||||
struct magn_3d_state *magn_state = iio_priv(indio_dev);
|
||||
|
||||
sensor_hub_remove_callback(hsdev, HID_USAGE_SENSOR_COMPASS_3D);
|
||||
iio_device_unregister(indio_dev);
|
||||
hid_sensor_remove_trigger(indio_dev);
|
||||
hid_sensor_remove_trigger(&magn_state->common_attributes);
|
||||
iio_triggered_buffer_cleanup(indio_dev);
|
||||
kfree(indio_dev->channels);
|
||||
|
||||
|
@ -250,7 +250,12 @@ done:
|
||||
.info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SAMP_FREQ) | \
|
||||
BIT(IIO_CHAN_INFO_SCALE), \
|
||||
.scan_index = idx, \
|
||||
.scan_type = IIO_ST('s', 16, 16, IIO_BE), \
|
||||
.scan_type = { \
|
||||
.sign = 's', \
|
||||
.realbits = 16, \
|
||||
.storagebits = 16, \
|
||||
.endianness = IIO_BE, \
|
||||
}, \
|
||||
}
|
||||
|
||||
static const struct iio_chan_spec mag3110_channels[] = {
|
||||
|
@ -1284,9 +1284,8 @@ done:
|
||||
kfree_skb(skb);
|
||||
}
|
||||
|
||||
static int btmtk_usb_send_frame(struct sk_buff *skb)
|
||||
static int btmtk_usb_send_frame(struct hci_dev *hdev, struct sk_buff *skb)
|
||||
{
|
||||
struct hci_dev *hdev = (struct hci_dev *)skb->dev;
|
||||
struct btmtk_usb_data *data = hci_get_drvdata(hdev);
|
||||
struct usb_ctrlrequest *dr;
|
||||
struct urb *urb;
|
||||
|
@ -173,11 +173,11 @@ static int pcl730_do_insn_bits(struct comedi_device *dev,
|
||||
if (mask) {
|
||||
if (mask & 0x00ff)
|
||||
outb(s->state & 0xff, dev->iobase + reg);
|
||||
if ((mask & 0xff00) & (s->n_chan > 8))
|
||||
if ((mask & 0xff00) && (s->n_chan > 8))
|
||||
outb((s->state >> 8) & 0xff, dev->iobase + reg + 1);
|
||||
if ((mask & 0xff0000) & (s->n_chan > 16))
|
||||
if ((mask & 0xff0000) && (s->n_chan > 16))
|
||||
outb((s->state >> 16) & 0xff, dev->iobase + reg + 2);
|
||||
if ((mask & 0xff000000) & (s->n_chan > 24))
|
||||
if ((mask & 0xff000000) && (s->n_chan > 24))
|
||||
outb((s->state >> 24) & 0xff, dev->iobase + reg + 3);
|
||||
}
|
||||
|
||||
|
@ -494,7 +494,7 @@ static void s626_send_dac(struct comedi_device *dev, uint32_t val)
|
||||
* Private helper function: Write setpoint to an application DAC channel.
|
||||
*/
|
||||
static void s626_set_dac(struct comedi_device *dev, uint16_t chan,
|
||||
unsigned short dacdata)
|
||||
int16_t dacdata)
|
||||
{
|
||||
struct s626_private *devpriv = dev->private;
|
||||
uint16_t signmask;
|
||||
|
@ -465,7 +465,7 @@ static int vmk80xx_do_insn_bits(struct comedi_device *dev,
|
||||
unsigned char *rx_buf = devpriv->usb_rx_buf;
|
||||
unsigned char *tx_buf = devpriv->usb_tx_buf;
|
||||
int reg, cmd;
|
||||
int ret;
|
||||
int ret = 0;
|
||||
|
||||
if (devpriv->model == VMK8061_MODEL) {
|
||||
reg = VMK8061_DO_REG;
|
||||
|
@ -578,7 +578,7 @@ static int request_code_segment(struct ft1000_usb *ft1000dev, u16 **s_file,
|
||||
u8 **c_file, const u8 *endpoint, bool boot_case)
|
||||
{
|
||||
long word_length;
|
||||
int status;
|
||||
int status = 0;
|
||||
|
||||
/*DEBUG("FT1000:REQUEST_CODE_SEGMENT\n");i*/
|
||||
word_length = get_request_value(ft1000dev);
|
||||
@ -1074,4 +1074,3 @@ int scram_dnldr(struct ft1000_usb *ft1000dev, void *pFileStart,
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
|
@ -6,6 +6,8 @@ menu "Magnetometer sensors"
|
||||
config SENSORS_HMC5843
|
||||
tristate "Honeywell HMC5843/5883/5883L 3-Axis Magnetometer"
|
||||
depends on I2C
|
||||
select IIO_BUFFER
|
||||
select IIO_TRIGGERED_BUFFER
|
||||
help
|
||||
Say Y here to add support for the Honeywell HMC5843, HMC5883 and
|
||||
HMC5883L 3-Axis Magnetometer (digital compass).
|
||||
|
@ -8,4 +8,6 @@ obj-$(CONFIG_DRM_IMX_TVE) += imx-tve.o
|
||||
obj-$(CONFIG_DRM_IMX_LDB) += imx-ldb.o
|
||||
obj-$(CONFIG_DRM_IMX_FB_HELPER) += imx-fbdev.o
|
||||
obj-$(CONFIG_DRM_IMX_IPUV3_CORE) += ipu-v3/
|
||||
obj-$(CONFIG_DRM_IMX_IPUV3) += ipuv3-crtc.o ipuv3-plane.o
|
||||
|
||||
imx-ipuv3-crtc-objs := ipuv3-crtc.o ipuv3-plane.o
|
||||
obj-$(CONFIG_DRM_IMX_IPUV3) += imx-ipuv3-crtc.o
|
||||
|
@ -72,6 +72,7 @@ int imx_drm_crtc_id(struct imx_drm_crtc *crtc)
|
||||
{
|
||||
return crtc->pipe;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(imx_drm_crtc_id);
|
||||
|
||||
static void imx_drm_driver_lastclose(struct drm_device *drm)
|
||||
{
|
||||
|
@ -409,8 +409,8 @@ int ptlrpc_stop_pinger(void)
|
||||
struct l_wait_info lwi = { 0 };
|
||||
int rc = 0;
|
||||
|
||||
if (!thread_is_init(&pinger_thread) &&
|
||||
!thread_is_stopped(&pinger_thread))
|
||||
if (thread_is_init(&pinger_thread) ||
|
||||
thread_is_stopped(&pinger_thread))
|
||||
return -EALREADY;
|
||||
|
||||
ptlrpc_pinger_remove_timeouts();
|
||||
|
@ -15,6 +15,8 @@
|
||||
* Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
@ -661,7 +663,7 @@ static int go7007_usb_interface_reset(struct go7007 *go)
|
||||
|
||||
if (usb->board->flags & GO7007_USB_EZUSB) {
|
||||
/* Reset buffer in EZ-USB */
|
||||
dev_dbg(go->dev, "resetting EZ-USB buffers\n");
|
||||
pr_debug("resetting EZ-USB buffers\n");
|
||||
if (go7007_usb_vendor_request(go, 0x10, 0, 0, NULL, 0, 0) < 0 ||
|
||||
go7007_usb_vendor_request(go, 0x10, 0, 0, NULL, 0, 0) < 0)
|
||||
return -1;
|
||||
@ -689,7 +691,7 @@ static int go7007_usb_ezusb_write_interrupt(struct go7007 *go,
|
||||
u16 status_reg = 0;
|
||||
int timeout = 500;
|
||||
|
||||
dev_dbg(go->dev, "WriteInterrupt: %04x %04x\n", addr, data);
|
||||
pr_debug("WriteInterrupt: %04x %04x\n", addr, data);
|
||||
|
||||
for (i = 0; i < 100; ++i) {
|
||||
r = usb_control_msg(usb->usbdev,
|
||||
@ -734,7 +736,7 @@ static int go7007_usb_onboard_write_interrupt(struct go7007 *go,
|
||||
int r;
|
||||
int timeout = 500;
|
||||
|
||||
dev_dbg(go->dev, "WriteInterrupt: %04x %04x\n", addr, data);
|
||||
pr_debug("WriteInterrupt: %04x %04x\n", addr, data);
|
||||
|
||||
go->usb_buf[0] = data & 0xff;
|
||||
go->usb_buf[1] = data >> 8;
|
||||
@ -771,7 +773,7 @@ static void go7007_usb_readinterrupt_complete(struct urb *urb)
|
||||
go->interrupt_available = 1;
|
||||
go->interrupt_data = __le16_to_cpu(regs[0]);
|
||||
go->interrupt_value = __le16_to_cpu(regs[1]);
|
||||
dev_dbg(go->dev, "ReadInterrupt: %04x %04x\n",
|
||||
pr_debug("ReadInterrupt: %04x %04x\n",
|
||||
go->interrupt_value, go->interrupt_data);
|
||||
}
|
||||
|
||||
@ -891,7 +893,7 @@ static int go7007_usb_send_firmware(struct go7007 *go, u8 *data, int len)
|
||||
int transferred, pipe;
|
||||
int timeout = 500;
|
||||
|
||||
dev_dbg(go->dev, "DownloadBuffer sending %d bytes\n", len);
|
||||
pr_debug("DownloadBuffer sending %d bytes\n", len);
|
||||
|
||||
if (usb->board->flags & GO7007_USB_EZUSB)
|
||||
pipe = usb_sndbulkpipe(usb->usbdev, 2);
|
||||
@ -977,7 +979,7 @@ static int go7007_usb_i2c_master_xfer(struct i2c_adapter *adapter,
|
||||
!(msgs[i].flags & I2C_M_RD) &&
|
||||
(msgs[i + 1].flags & I2C_M_RD)) {
|
||||
#ifdef GO7007_I2C_DEBUG
|
||||
dev_dbg(go->dev, "i2c write/read %d/%d bytes on %02x\n",
|
||||
pr_debug("i2c write/read %d/%d bytes on %02x\n",
|
||||
msgs[i].len, msgs[i + 1].len, msgs[i].addr);
|
||||
#endif
|
||||
buf[0] = 0x01;
|
||||
@ -988,7 +990,7 @@ static int go7007_usb_i2c_master_xfer(struct i2c_adapter *adapter,
|
||||
buf[buf_len++] = msgs[++i].len;
|
||||
} else if (msgs[i].flags & I2C_M_RD) {
|
||||
#ifdef GO7007_I2C_DEBUG
|
||||
dev_dbg(go->dev, "i2c read %d bytes on %02x\n",
|
||||
pr_debug("i2c read %d bytes on %02x\n",
|
||||
msgs[i].len, msgs[i].addr);
|
||||
#endif
|
||||
buf[0] = 0x01;
|
||||
@ -998,7 +1000,7 @@ static int go7007_usb_i2c_master_xfer(struct i2c_adapter *adapter,
|
||||
buf_len = 4;
|
||||
} else {
|
||||
#ifdef GO7007_I2C_DEBUG
|
||||
dev_dbg(go->dev, "i2c write %d bytes on %02x\n",
|
||||
pr_debug("i2c write %d bytes on %02x\n",
|
||||
msgs[i].len, msgs[i].addr);
|
||||
#endif
|
||||
buf[0] = 0x00;
|
||||
@ -1057,7 +1059,7 @@ static int go7007_usb_probe(struct usb_interface *intf,
|
||||
char *name;
|
||||
int video_pipe, i, v_urb_len;
|
||||
|
||||
dev_dbg(go->dev, "probing new GO7007 USB board\n");
|
||||
pr_debug("probing new GO7007 USB board\n");
|
||||
|
||||
switch (id->driver_info) {
|
||||
case GO7007_BOARDID_MATRIX_II:
|
||||
@ -1097,13 +1099,13 @@ static int go7007_usb_probe(struct usb_interface *intf,
|
||||
board = &board_px_tv402u;
|
||||
break;
|
||||
case GO7007_BOARDID_LIFEVIEW_LR192:
|
||||
dev_err(go->dev, "The Lifeview TV Walker Ultra is not supported. Sorry!\n");
|
||||
dev_err(&intf->dev, "The Lifeview TV Walker Ultra is not supported. Sorry!\n");
|
||||
return -ENODEV;
|
||||
name = "Lifeview TV Walker Ultra";
|
||||
board = &board_lifeview_lr192;
|
||||
break;
|
||||
case GO7007_BOARDID_SENSORAY_2250:
|
||||
dev_info(go->dev, "Sensoray 2250 found\n");
|
||||
dev_info(&intf->dev, "Sensoray 2250 found\n");
|
||||
name = "Sensoray 2250/2251";
|
||||
board = &board_sensoray_2250;
|
||||
break;
|
||||
@ -1112,7 +1114,7 @@ static int go7007_usb_probe(struct usb_interface *intf,
|
||||
board = &board_ads_usbav_709;
|
||||
break;
|
||||
default:
|
||||
dev_err(go->dev, "unknown board ID %d!\n",
|
||||
dev_err(&intf->dev, "unknown board ID %d!\n",
|
||||
(unsigned int)id->driver_info);
|
||||
return -ENODEV;
|
||||
}
|
||||
@ -1247,7 +1249,7 @@ static int go7007_usb_probe(struct usb_interface *intf,
|
||||
sizeof(go->name));
|
||||
break;
|
||||
default:
|
||||
dev_dbg(go->dev, "unable to detect tuner type!\n");
|
||||
pr_debug("unable to detect tuner type!\n");
|
||||
break;
|
||||
}
|
||||
/* Configure tuner mode selection inputs connected
|
||||
|
@ -681,7 +681,8 @@ static irqreturn_t nvec_interrupt(int irq, void *dev)
|
||||
dev_err(nvec->dev,
|
||||
"RX buffer overflow on %p: "
|
||||
"Trying to write byte %u of %u\n",
|
||||
nvec->rx, nvec->rx->pos, NVEC_MSG_SIZE);
|
||||
nvec->rx, nvec->rx ? nvec->rx->pos : 0,
|
||||
NVEC_MSG_SIZE);
|
||||
break;
|
||||
default:
|
||||
nvec->state = 0;
|
||||
|
@ -1115,6 +1115,9 @@ int rtw_check_beacon_data(struct adapter *padapter, u8 *pbuf, int len)
|
||||
return _FAIL;
|
||||
}
|
||||
|
||||
/* fix bug of flush_cam_entry at STOP AP mode */
|
||||
psta->state |= WIFI_AP_STATE;
|
||||
rtw_indicate_connect(padapter);
|
||||
pmlmepriv->cur_network.join_res = true;/* for check if already set beacon */
|
||||
return ret;
|
||||
}
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
menuconfig TIDSPBRIDGE
|
||||
tristate "DSP Bridge driver"
|
||||
depends on ARCH_OMAP3 && !ARCH_MULTIPLATFORM
|
||||
depends on ARCH_OMAP3 && !ARCH_MULTIPLATFORM && BROKEN
|
||||
select MAILBOX
|
||||
select OMAP2PLUS_MBOX
|
||||
help
|
||||
|
@ -143,7 +143,8 @@ static int hostap_disable_hostapd(PSDevice pDevice, int rtnl_locked)
|
||||
DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "%s: Netdevice %s unregistered\n",
|
||||
pDevice->dev->name, pDevice->apdev->name);
|
||||
}
|
||||
free_netdev(pDevice->apdev);
|
||||
if (pDevice->apdev)
|
||||
free_netdev(pDevice->apdev);
|
||||
pDevice->apdev = NULL;
|
||||
pDevice->bEnable8021x = false;
|
||||
pDevice->bEnableHostWEP = false;
|
||||
|
@ -939,6 +939,7 @@ int BBbVT3184Init(struct vnt_private *pDevice)
|
||||
u8 * pbyAgc;
|
||||
u16 wLengthAgc;
|
||||
u8 abyArray[256];
|
||||
u8 data;
|
||||
|
||||
ntStatus = CONTROLnsRequestIn(pDevice,
|
||||
MESSAGE_TYPE_READ,
|
||||
@ -1104,6 +1105,16 @@ else {
|
||||
ControlvWriteByte(pDevice,MESSAGE_REQUEST_BBREG,0x0D,0x01);
|
||||
|
||||
RFbRFTableDownload(pDevice);
|
||||
|
||||
/* Fix for TX USB resets from vendors driver */
|
||||
CONTROLnsRequestIn(pDevice, MESSAGE_TYPE_READ, USB_REG4,
|
||||
MESSAGE_REQUEST_MEM, sizeof(data), &data);
|
||||
|
||||
data |= 0x2;
|
||||
|
||||
CONTROLnsRequestOut(pDevice, MESSAGE_TYPE_WRITE, USB_REG4,
|
||||
MESSAGE_REQUEST_MEM, sizeof(data), &data);
|
||||
|
||||
return true;//ntStatus;
|
||||
}
|
||||
|
||||
|
@ -133,7 +133,8 @@ static int hostap_disable_hostapd(struct vnt_private *pDevice, int rtnl_locked)
|
||||
DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "%s: Netdevice %s unregistered\n",
|
||||
pDevice->dev->name, pDevice->apdev->name);
|
||||
}
|
||||
free_netdev(pDevice->apdev);
|
||||
if (pDevice->apdev)
|
||||
free_netdev(pDevice->apdev);
|
||||
pDevice->apdev = NULL;
|
||||
pDevice->bEnable8021x = false;
|
||||
pDevice->bEnableHostWEP = false;
|
||||
|
@ -66,6 +66,8 @@
|
||||
|
||||
#define VIAUSB20_PACKET_HEADER 0x04
|
||||
|
||||
#define USB_REG4 0x604
|
||||
|
||||
typedef struct _CMD_MESSAGE
|
||||
{
|
||||
u8 byData[256];
|
||||
|
@ -652,21 +652,30 @@ static ssize_t reset_store(struct device *dev,
|
||||
return -ENOMEM;
|
||||
|
||||
/* Do not reset an active device! */
|
||||
if (bdev->bd_holders)
|
||||
return -EBUSY;
|
||||
if (bdev->bd_holders) {
|
||||
ret = -EBUSY;
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = kstrtou16(buf, 10, &do_reset);
|
||||
if (ret)
|
||||
return ret;
|
||||
goto out;
|
||||
|
||||
if (!do_reset)
|
||||
return -EINVAL;
|
||||
if (!do_reset) {
|
||||
ret = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* Make sure all pending I/O is finished */
|
||||
fsync_bdev(bdev);
|
||||
bdput(bdev);
|
||||
|
||||
zram_reset_device(zram, true);
|
||||
return len;
|
||||
|
||||
out:
|
||||
bdput(bdev);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void __zram_make_request(struct zram *zram, struct bio *bio, int rw)
|
||||
|
@ -430,7 +430,12 @@ static struct page *get_next_page(struct page *page)
|
||||
return next;
|
||||
}
|
||||
|
||||
/* Encode <page, obj_idx> as a single handle value */
|
||||
/*
|
||||
* Encode <page, obj_idx> as a single handle value.
|
||||
* On hardware platforms with physical memory starting at 0x0 the pfn
|
||||
* could be 0 so we ensure that the handle will never be 0 by adjusting the
|
||||
* encoded obj_idx value before encoding.
|
||||
*/
|
||||
static void *obj_location_to_handle(struct page *page, unsigned long obj_idx)
|
||||
{
|
||||
unsigned long handle;
|
||||
@ -441,17 +446,21 @@ static void *obj_location_to_handle(struct page *page, unsigned long obj_idx)
|
||||
}
|
||||
|
||||
handle = page_to_pfn(page) << OBJ_INDEX_BITS;
|
||||
handle |= (obj_idx & OBJ_INDEX_MASK);
|
||||
handle |= ((obj_idx + 1) & OBJ_INDEX_MASK);
|
||||
|
||||
return (void *)handle;
|
||||
}
|
||||
|
||||
/* Decode <page, obj_idx> pair from the given object handle */
|
||||
/*
|
||||
* Decode <page, obj_idx> pair from the given object handle. We adjust the
|
||||
* decoded obj_idx back to its original value since it was adjusted in
|
||||
* obj_location_to_handle().
|
||||
*/
|
||||
static void obj_handle_to_location(unsigned long handle, struct page **page,
|
||||
unsigned long *obj_idx)
|
||||
{
|
||||
*page = pfn_to_page(handle >> OBJ_INDEX_BITS);
|
||||
*obj_idx = handle & OBJ_INDEX_MASK;
|
||||
*obj_idx = (handle & OBJ_INDEX_MASK) - 1;
|
||||
}
|
||||
|
||||
static unsigned long obj_idx_to_offset(struct page *page,
|
||||
|
@ -21,6 +21,8 @@
|
||||
|
||||
#include <linux/hid.h>
|
||||
#include <linux/hid-sensor-ids.h>
|
||||
#include <linux/iio/iio.h>
|
||||
#include <linux/iio/trigger.h>
|
||||
|
||||
/**
|
||||
* struct hid_sensor_hub_attribute_info - Attribute info
|
||||
@ -184,6 +186,7 @@ struct hid_sensor_common {
|
||||
struct platform_device *pdev;
|
||||
unsigned usage_id;
|
||||
bool data_ready;
|
||||
struct iio_trigger *trigger;
|
||||
struct hid_sensor_hub_attribute_info poll;
|
||||
struct hid_sensor_hub_attribute_info report_state;
|
||||
struct hid_sensor_hub_attribute_info power_state;
|
||||
|
Loading…
Reference in New Issue
Block a user