Commit 7ed214ac authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'char-misc-3.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc

Pull char/misc driver patches from Greg Kroah-Hartman:
 "Here's the big char/misc driver patches for 3.9-rc1.

  Nothing major here, just lots of different driver updates (mei,
  hyperv, ipack, extcon, vmci, etc.).

  All of these have been in the linux-next tree for a while."

* tag 'char-misc-3.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc: (209 commits)
  w1: w1_therm: Add force-pullup option for "broken" sensors
  w1: ds2482: Added 1-Wire pull-up support to the driver
  vme: add missing put_device() after device_register() fails
  extcon: max8997: Use workqueue to check cable state after completing boot of platform
  extcon: max8997: Set default UART/USB path on probe
  extcon: max8997: Consolidate duplicate code for checking ADC/CHG cable type
  extcon: max8997: Set default of ADC debounce time during initialization
  extcon: max8997: Remove duplicate code related to set H/W line path
  extcon: max8997: Move defined constant to header file
  extcon: max77693: Make max77693_extcon_cable static
  extcon: max8997: Remove unreachable code
  extcon: max8997: Make max8997_extcon_cable static
  extcon: max77693: Remove unnecessary goto statement to improve readability
  extcon: max77693: Convert to devm_input_allocate_device()
  extcon: gpio: Rename filename of extcon-gpio.c according to kernel naming style
  CREDITS: update email and address of Harald Hoyer
  extcon: arizona: Use MICDET for final microphone identification
  extcon: arizona: Always take the first HPDET reading as the final one
  extcon: arizona: Clear _trig_sts bits after jack detection
  extcon: arizona: Don't HPDET magic when headphones are enabled
  ...
parents 21eaab6d 29e5507a
...@@ -1572,12 +1572,12 @@ S: Wantage, New Jersey 07461 ...@@ -1572,12 +1572,12 @@ S: Wantage, New Jersey 07461
S: USA S: USA
N: Harald Hoyer N: Harald Hoyer
E: harald.hoyer@parzelle.de E: harald@redhat.com
W: http://parzelle.de/ W: http://www.harald-hoyer.de
D: ip_masq_quake D: ip_masq_quake
D: md boot support D: md boot support
S: Hohe Strasse 30 S: Am Strand 5
S: D-70176 Stuttgart S: D-19063 Schwerin
S: Germany S: Germany
N: Jan Hubicka N: Jan Hubicka
......
...@@ -984,7 +984,7 @@ int main() ...@@ -984,7 +984,7 @@ int main()
return errno; return errno;
} }
configfd = open("/sys/class/uio/uio0/device/config", O_RDWR); configfd = open("/sys/class/uio/uio0/device/config", O_RDWR);
if (uiofd < 0) { if (configfd < 0) {
perror("config open:"); perror("config open:");
return errno; return errno;
} }
......
...@@ -34,9 +34,16 @@ currently supported. The driver also doesn't support reduced ...@@ -34,9 +34,16 @@ currently supported. The driver also doesn't support reduced
precision (which would also reduce the conversion time). precision (which would also reduce the conversion time).
The module parameter strong_pullup can be set to 0 to disable the The module parameter strong_pullup can be set to 0 to disable the
strong pullup or 1 to enable. If enabled the 5V strong pullup will be strong pullup, 1 to enable autodetection or 2 to force strong pullup.
enabled when the conversion is taking place provided the master driver In case of autodetection, the driver will use the "READ POWER SUPPLY"
must support the strong pullup (or it falls back to a pullup command to check if there are pariste powered devices on the bus.
If so, it will activate the master's strong pullup.
In case the detection of parasite devices using this command fails
(seems to be the case with some DS18S20) the strong pullup can
be force-enabled.
If the strong pullup is enabled, the master's strong pullup will be
driven when the conversion is taking place, provided the master driver
does support the strong pullup (or it falls back to a pullup
resistor). The DS18b20 temperature sensor specification lists a resistor). The DS18b20 temperature sensor specification lists a
maximum current draw of 1.5mA and that a 5k pullup resistor is not maximum current draw of 1.5mA and that a 5k pullup resistor is not
sufficient. The strong pullup is designed to provide the additional sufficient. The strong pullup is designed to provide the additional
......
...@@ -5405,6 +5405,13 @@ S: Maintained ...@@ -5405,6 +5405,13 @@ S: Maintained
F: Documentation/scsi/NinjaSCSI.txt F: Documentation/scsi/NinjaSCSI.txt
F: drivers/scsi/nsp32* F: drivers/scsi/nsp32*
NTB DRIVER
M: Jon Mason <jon.mason@intel.com>
S: Supported
F: drivers/ntb/
F: drivers/net/ntb_netdev.c
F: include/linux/ntb.h
NTFS FILESYSTEM NTFS FILESYSTEM
M: Anton Altaparmakov <anton@tuxera.com> M: Anton Altaparmakov <anton@tuxera.com>
L: linux-ntfs-dev@lists.sourceforge.net L: linux-ntfs-dev@lists.sourceforge.net
......
...@@ -152,6 +152,8 @@ source "drivers/memory/Kconfig" ...@@ -152,6 +152,8 @@ source "drivers/memory/Kconfig"
source "drivers/iio/Kconfig" source "drivers/iio/Kconfig"
source "drivers/ntb/Kconfig"
source "drivers/vme/Kconfig" source "drivers/vme/Kconfig"
source "drivers/pwm/Kconfig" source "drivers/pwm/Kconfig"
......
...@@ -147,3 +147,4 @@ obj-$(CONFIG_MEMORY) += memory/ ...@@ -147,3 +147,4 @@ obj-$(CONFIG_MEMORY) += memory/
obj-$(CONFIG_IIO) += iio/ obj-$(CONFIG_IIO) += iio/
obj-$(CONFIG_VME_BUS) += vme/ obj-$(CONFIG_VME_BUS) += vme/
obj-$(CONFIG_IPACK_BUS) += ipack/ obj-$(CONFIG_IPACK_BUS) += ipack/
obj-$(CONFIG_NTB) += ntb/
...@@ -163,7 +163,7 @@ static int exynos_rng_runtime_resume(struct device *dev) ...@@ -163,7 +163,7 @@ static int exynos_rng_runtime_resume(struct device *dev)
} }
UNIVERSAL_DEV_PM_OPS(exynos_rng_pm_ops, exynos_rng_runtime_suspend, static UNIVERSAL_DEV_PM_OPS(exynos_rng_pm_ops, exynos_rng_runtime_suspend,
exynos_rng_runtime_resume, NULL); exynos_rng_runtime_resume, NULL);
static struct platform_driver exynos_rng_driver = { static struct platform_driver exynos_rng_driver = {
......
...@@ -399,7 +399,7 @@ static ssize_t read_kmem(struct file *file, char __user *buf, ...@@ -399,7 +399,7 @@ static ssize_t read_kmem(struct file *file, char __user *buf,
{ {
unsigned long p = *ppos; unsigned long p = *ppos;
ssize_t low_count, read, sz; ssize_t low_count, read, sz;
char * kbuf; /* k-addr because vread() takes vmlist_lock rwlock */ char *kbuf; /* k-addr because vread() takes vmlist_lock rwlock */
int err = 0; int err = 0;
read = 0; read = 0;
...@@ -527,7 +527,7 @@ static ssize_t write_kmem(struct file *file, const char __user *buf, ...@@ -527,7 +527,7 @@ static ssize_t write_kmem(struct file *file, const char __user *buf,
unsigned long p = *ppos; unsigned long p = *ppos;
ssize_t wrote = 0; ssize_t wrote = 0;
ssize_t virtr = 0; ssize_t virtr = 0;
char * kbuf; /* k-addr because vwrite() takes vmlist_lock rwlock */ char *kbuf; /* k-addr because vwrite() takes vmlist_lock rwlock */
int err = 0; int err = 0;
if (p < (unsigned long) high_memory) { if (p < (unsigned long) high_memory) {
...@@ -595,7 +595,7 @@ static ssize_t write_port(struct file *file, const char __user *buf, ...@@ -595,7 +595,7 @@ static ssize_t write_port(struct file *file, const char __user *buf,
size_t count, loff_t *ppos) size_t count, loff_t *ppos)
{ {
unsigned long i = *ppos; unsigned long i = *ppos;
const char __user * tmp = buf; const char __user *tmp = buf;
if (!access_ok(VERIFY_READ, buf, count)) if (!access_ok(VERIFY_READ, buf, count))
return -EFAULT; return -EFAULT;
...@@ -729,7 +729,7 @@ static loff_t memory_lseek(struct file *file, loff_t offset, int orig) ...@@ -729,7 +729,7 @@ static loff_t memory_lseek(struct file *file, loff_t offset, int orig)
return ret; return ret;
} }
static int open_port(struct inode * inode, struct file * filp) static int open_port(struct inode *inode, struct file *filp)
{ {
return capable(CAP_SYS_RAWIO) ? 0 : -EPERM; return capable(CAP_SYS_RAWIO) ? 0 : -EPERM;
} }
...@@ -898,7 +898,7 @@ static int __init chr_dev_init(void) ...@@ -898,7 +898,7 @@ static int __init chr_dev_init(void)
continue; continue;
/* /*
* Create /dev/port? * Create /dev/port?
*/ */
if ((minor == DEVPORT_MINOR) && !arch_has_dev_port()) if ((minor == DEVPORT_MINOR) && !arch_has_dev_port())
continue; continue;
......
This diff is collapsed.
...@@ -29,7 +29,7 @@ config EXTCON_ADC_JACK ...@@ -29,7 +29,7 @@ config EXTCON_ADC_JACK
config EXTCON_MAX77693 config EXTCON_MAX77693
tristate "MAX77693 EXTCON Support" tristate "MAX77693 EXTCON Support"
depends on MFD_MAX77693 depends on MFD_MAX77693 && INPUT
select IRQ_DOMAIN select IRQ_DOMAIN
select REGMAP_I2C select REGMAP_I2C
help help
...@@ -47,7 +47,7 @@ config EXTCON_MAX8997 ...@@ -47,7 +47,7 @@ config EXTCON_MAX8997
config EXTCON_ARIZONA config EXTCON_ARIZONA
tristate "Wolfson Arizona EXTCON support" tristate "Wolfson Arizona EXTCON support"
depends on MFD_ARIZONA && INPUT depends on MFD_ARIZONA && INPUT && SND_SOC
help help
Say Y here to enable support for external accessory detection Say Y here to enable support for external accessory detection
with Wolfson Arizona devices. These are audio CODECs with with Wolfson Arizona devices. These are audio CODECs with
......
This diff is collapsed.
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
#include <linux/workqueue.h> #include <linux/workqueue.h>
#include <linux/gpio.h> #include <linux/gpio.h>
#include <linux/extcon.h> #include <linux/extcon.h>
#include <linux/extcon/extcon_gpio.h> #include <linux/extcon/extcon-gpio.h>
struct gpio_extcon_data { struct gpio_extcon_data {
struct extcon_dev edev; struct extcon_dev edev;
......
This diff is collapsed.
This diff is collapsed.
...@@ -568,8 +568,7 @@ static int mousevsc_remove(struct hv_device *dev) ...@@ -568,8 +568,7 @@ static int mousevsc_remove(struct hv_device *dev)
static const struct hv_vmbus_device_id id_table[] = { static const struct hv_vmbus_device_id id_table[] = {
/* Mouse guid */ /* Mouse guid */
{ VMBUS_DEVICE(0x9E, 0xB6, 0xA8, 0xCF, 0x4A, 0x5B, 0xc0, 0x4c, { HV_MOUSE_GUID, },
0xB9, 0x8B, 0x8B, 0xA1, 0xA1, 0xF3, 0xF9, 0x5A) },
{ }, { },
}; };
......
...@@ -55,7 +55,7 @@ static void vmbus_setevent(struct vmbus_channel *channel) ...@@ -55,7 +55,7 @@ static void vmbus_setevent(struct vmbus_channel *channel)
[channel->monitor_grp].pending); [channel->monitor_grp].pending);
} else { } else {
vmbus_set_event(channel->offermsg.child_relid); vmbus_set_event(channel);
} }
} }
...@@ -181,7 +181,7 @@ int vmbus_open(struct vmbus_channel *newchannel, u32 send_ringbuffer_size, ...@@ -181,7 +181,7 @@ int vmbus_open(struct vmbus_channel *newchannel, u32 send_ringbuffer_size,
open_msg->ringbuffer_gpadlhandle = newchannel->ringbuffer_gpadlhandle; open_msg->ringbuffer_gpadlhandle = newchannel->ringbuffer_gpadlhandle;
open_msg->downstream_ringbuffer_pageoffset = send_ringbuffer_size >> open_msg->downstream_ringbuffer_pageoffset = send_ringbuffer_size >>
PAGE_SHIFT; PAGE_SHIFT;
open_msg->server_contextarea_gpadlhandle = 0; open_msg->target_vp = newchannel->target_vp;
if (userdatalen > MAX_USER_DEFINED_BYTES) { if (userdatalen > MAX_USER_DEFINED_BYTES) {
err = -EINVAL; err = -EINVAL;
...@@ -564,6 +564,7 @@ int vmbus_sendpacket(struct vmbus_channel *channel, const void *buffer, ...@@ -564,6 +564,7 @@ int vmbus_sendpacket(struct vmbus_channel *channel, const void *buffer,
struct scatterlist bufferlist[3]; struct scatterlist bufferlist[3];
u64 aligned_data = 0; u64 aligned_data = 0;
int ret; int ret;
bool signal = false;
/* Setup the descriptor */ /* Setup the descriptor */
...@@ -580,9 +581,9 @@ int vmbus_sendpacket(struct vmbus_channel *channel, const void *buffer, ...@@ -580,9 +581,9 @@ int vmbus_sendpacket(struct vmbus_channel *channel, const void *buffer,
sg_set_buf(&bufferlist[2], &aligned_data, sg_set_buf(&bufferlist[2], &aligned_data,
packetlen_aligned - packetlen); packetlen_aligned - packetlen);
ret = hv_ringbuffer_write(&channel->outbound, bufferlist, 3); ret = hv_ringbuffer_write(&channel->outbound, bufferlist, 3, &signal);
if (ret == 0 && !hv_get_ringbuffer_interrupt_mask(&channel->outbound)) if (ret == 0 && signal)
vmbus_setevent(channel); vmbus_setevent(channel);
return ret; return ret;
...@@ -606,6 +607,7 @@ int vmbus_sendpacket_pagebuffer(struct vmbus_channel *channel, ...@@ -606,6 +607,7 @@ int vmbus_sendpacket_pagebuffer(struct vmbus_channel *channel,
u32 packetlen_aligned; u32 packetlen_aligned;
struct scatterlist bufferlist[3]; struct scatterlist bufferlist[3];
u64 aligned_data = 0; u64 aligned_data = 0;
bool signal = false;
if (pagecount > MAX_PAGE_BUFFER_COUNT) if (pagecount > MAX_PAGE_BUFFER_COUNT)
return -EINVAL; return -EINVAL;
...@@ -641,9 +643,9 @@ int vmbus_sendpacket_pagebuffer(struct vmbus_channel *channel, ...@@ -641,9 +643,9 @@ int vmbus_sendpacket_pagebuffer(struct vmbus_channel *channel,
sg_set_buf(&bufferlist[2], &aligned_data, sg_set_buf(&bufferlist[2], &aligned_data,
packetlen_aligned - packetlen); packetlen_aligned - packetlen);
ret = hv_ringbuffer_write(&channel->outbound, bufferlist, 3); ret = hv_ringbuffer_write(&channel->outbound, bufferlist, 3, &signal);
if (ret == 0 && !hv_get_ringbuffer_interrupt_mask(&channel->outbound)) if (ret == 0 && signal)
vmbus_setevent(channel); vmbus_setevent(channel);
return ret; return ret;
...@@ -665,6 +667,7 @@ int vmbus_sendpacket_multipagebuffer(struct vmbus_channel *channel, ...@@ -665,6 +667,7 @@ int vmbus_sendpacket_multipagebuffer(struct vmbus_channel *channel,
u32 packetlen_aligned; u32 packetlen_aligned;
struct scatterlist bufferlist[3]; struct scatterlist bufferlist[3];
u64 aligned_data = 0; u64 aligned_data = 0;
bool signal = false;
u32 pfncount = NUM_PAGES_SPANNED(multi_pagebuffer->offset, u32 pfncount = NUM_PAGES_SPANNED(multi_pagebuffer->offset,
multi_pagebuffer->len); multi_pagebuffer->len);
...@@ -703,9 +706,9 @@ int vmbus_sendpacket_multipagebuffer(struct vmbus_channel *channel, ...@@ -703,9 +706,9 @@ int vmbus_sendpacket_multipagebuffer(struct vmbus_channel *channel,
sg_set_buf(&bufferlist[2], &aligned_data, sg_set_buf(&bufferlist[2], &aligned_data,
packetlen_aligned - packetlen); packetlen_aligned - packetlen);
ret = hv_ringbuffer_write(&channel->outbound, bufferlist, 3); ret = hv_ringbuffer_write(&channel->outbound, bufferlist, 3, &signal);
if (ret == 0 && !hv_get_ringbuffer_interrupt_mask(&channel->outbound)) if (ret == 0 && signal)
vmbus_setevent(channel); vmbus_setevent(channel);
return ret; return ret;
...@@ -732,6 +735,7 @@ int vmbus_recvpacket(struct vmbus_channel *channel, void *buffer, ...@@ -732,6 +735,7 @@ int vmbus_recvpacket(struct vmbus_channel *channel, void *buffer,
u32 packetlen; u32 packetlen;
u32 userlen; u32 userlen;
int ret; int ret;
bool signal = false;
*buffer_actual_len = 0; *buffer_actual_len = 0;
*requestid = 0; *requestid = 0;
...@@ -758,8 +762,10 @@ int vmbus_recvpacket(struct vmbus_channel *channel, void *buffer, ...@@ -758,8 +762,10 @@ int vmbus_recvpacket(struct vmbus_channel *channel, void *buffer,
/* Copy over the packet to the user buffer */ /* Copy over the packet to the user buffer */
ret = hv_ringbuffer_read(&channel->inbound, buffer, userlen, ret = hv_ringbuffer_read(&channel->inbound, buffer, userlen,
(desc.offset8 << 3)); (desc.offset8 << 3), &signal);
if (signal)
vmbus_setevent(channel);
return 0; return 0;
} }
...@@ -774,8 +780,8 @@ int vmbus_recvpacket_raw(struct vmbus_channel *channel, void *buffer, ...@@ -774,8 +780,8 @@ int vmbus_recvpacket_raw(struct vmbus_channel *channel, void *buffer,
{ {
struct vmpacket_descriptor desc; struct vmpacket_descriptor desc;
u32 packetlen; u32 packetlen;
u32 userlen;
int ret; int ret;
bool signal = false;
*buffer_actual_len = 0; *buffer_actual_len = 0;
*requestid = 0; *requestid = 0;
...@@ -788,7 +794,6 @@ int vmbus_recvpacket_raw(struct vmbus_channel *channel, void *buffer, ...@@ -788,7 +794,6 @@ int vmbus_recvpacket_raw(struct vmbus_channel *channel, void *buffer,
packetlen = desc.len8 << 3; packetlen = desc.len8 << 3;
userlen = packetlen - (desc.offset8 << 3);
*buffer_actual_len = packetlen; *buffer_actual_len = packetlen;
...@@ -802,7 +807,11 @@ int vmbus_recvpacket_raw(struct vmbus_channel *channel, void *buffer, ...@@ -802,7 +807,11 @@ int vmbus_recvpacket_raw(struct vmbus_channel *channel, void *buffer,
*requestid = desc.trans_id; *requestid = desc.trans_id;
/* Copy over the entire packet to the user buffer */ /* Copy over the entire packet to the user buffer */
ret = hv_ringbuffer_read(&channel->inbound, buffer, packetlen, 0); ret = hv_ringbuffer_read(&channel->inbound, buffer, packetlen, 0,
&signal);
if (signal)
vmbus_setevent(channel);
return 0; return 0;
} }
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
obj-$(CONFIG_NTB) += ntb.o
ntb-objs := ntb_hw.o ntb_transport.o
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment