05 Jul, 2012
1 commit
-
The newly released HID protocol for win8 multitouch devices is capable
of transmitting more information about each touch. In particular, it
includes details useful for touch alignment. This patch completes the
MT protocol with the ABS_MT_TOOL_X/Y events, and documents how to map
win8 devices.Cc: Stephane Chatty
Cc: Benjamin Tissoires
Cc: Peter Hutterer
Acked-by: Chase Douglas
Signed-off-by: Henrik Rydberg
29 Jun, 2012
23 commits
-
The normal messages sent after boot or NVRAM update are T6 reports,
containing a status, and the config memory checksum. Parse them and dump
a useful info message.This patch tested on an MXT224E.
Signed-off-by: Daniel Kurtz
Signed-off-by: Henrik Rydberg -
Each interrupt contains information for all contacts with changing
properties. Process all of this information at once, and send it all in a
a single input report (ie input events ending in EV_SYN/SYN_REPORT).This patch was tested using an MXT224E.
Signed-off-by: Daniel Kurtz
Signed-off-by: Henrik Rydberg -
Atmel mxt devices can report one finger for each T9 reportid.
Therefore, this range can be used to report the max number of MT-B slots
to userspace instead of assuming a fixed 10.Note that mxt_initialized() must complete early, since the input_dev
properties now depend on values in the object table.Signed-off-by: Daniel Kurtz
Signed-off-by: Henrik Rydberg -
This small refactor is in preparation for checking more report types
in the mxt_interrupt message processing loop.Signed-off-by: Daniel Kurtz
Signed-off-by: Henrik Rydberg -
Streamline interrupt processing by caching the T9 reportid range when
first reading the object table.In the process, refactor reading the object descriptor table.
First, since the object_table entries are now exactly the same layout
in device memory and in the driver, allocate an appropriately sized
array and fetch the entire table directly into it in a single i2c
transaction. Since a 6 byte table object requires 10 bytes to read,
doing this dramatically reduces overhead.Note: The cached T9 reportid's are initialized to 0, which is an invalid
reportid. Thus, the checks in the interrupt handler will always fail for
devices that do not support the T9 object. Therefore, after doing a
firmware update, the old object table is destroyed and all cached object
values are reset to 0, before reading the new object table, in case
the new firmware does not have the old objects.This patch tested on an MXT224E.
Signed-off-by: Daniel Kurtz
Signed-off-by: Henrik Rydberg -
The Object Table is freed in three cases:
1) When the driver is being removed.
2) In the error path of mxt_initialize().
3) Just after a firmware update, when a new object table is
about to be read.For cases 2 & 3, the driver is not immediately unloaded, so this patch
refactors these cases to use a common cleanup function. It also refactors
the mxt_initialize error paths to ensure that this cleanup happens.Note: mxt_update_fw_store() does not handle errors during mxt_initialize().
A proposed fix for this is in a subsequent patchset.Signed-off-by: Daniel Kurtz
Signed-off-by: Henrik Rydberg -
Update the debug message:
* print inidividual status bits
* print the pressure value
* use '%u' for unsigned quantitiesSigned-off-by: Daniel Kurtz
Signed-off-by: Henrik Rydberg -
Instead of carrying around per-finger state in the driver instance, just
report each finger as it arrives to the input layer, and let the input
layer (evdev) hold the event state (which it does anyway).Note: this driver does not really do MT-B properly. Each input report
(a group of input events followed by a SYN_REPORT) only contains data for
a single contact. When multiple fingers are present on a device, each is
properly reported in its own MT_SLOT. However, there is only ever one
MT_SLOT per SYN_REPORT. This is fixed in a subsequent patch.This patch was tested with an mXT224E.
Signed-off-by: Daniel Kurtz
Signed-off-by: Henrik Rydberg -
Make firmware and hardware version strings available to userspace.
This is useful, for example, to allow a userspace program to implement
a firwmare update policy.Change-Id: I1eddb4bbf5f3f9ae6947a8528598973ddead18cf
Signed-off-by: Daniel Kurtz
Signed-off-by: Henrik Rydberg -
Print unsigned values as '%u'.
Also, parse and print the firmware version in its canonical format, as
suggested by Nick Dyer.Signed-off-by: Daniel Kurtz
Signed-off-by: Henrik Rydberg -
Reading the whole info block in one i2c transaction speeds up driver
probe significantly, especially on slower i2c busses.Signed-off-by: Daniel Kurtz
Signed-off-by: Henrik Rydberg -
Write each object using a single bulk i2c write transfer.
Signed-off-by: Daniel Kurtz
Reviewed-by: Joonyoung Shim
Signed-off-by: Henrik Rydberg -
The i2c bus requires 4 bytes to do a 1-byte write
(1 byte i2c address + 2 byte offset + 1 byte data).By taking a length with writes, the driver can amortize transaction
overhead by performing larger transactions where appropriate.This patch just sets up the new API. Later patches refactor writes
to take advantage of the larger transactions.Signed-off-by: Daniel Kurtz
Signed-off-by: Henrik Rydberg -
The i2c layer can report a variety of errors, including -ENXIO for an i2c
NAK. Instead of treating them all as -EIO, pass the actual i2c layer
error up to the caller.However, still report as -EIO the unlikely case that a transaction was
partially completed, and no error message was returned from i2c_*().Signed-off-by: Daniel Kurtz
Signed-off-by: Henrik Rydberg -
For objects with multiple instances, dump them all, prepending each with
its "Instance #".[rydberg@euromail.se: break out mxt_show_instance()]
Signed-off-by: Daniel Kurtz
Signed-off-by: Henrik Rydberg -
Conserve limited (PAGE_SIZE) sysfs output buffer space by only showing
readable objects and not printing the object's index, which is not useful
to userspace.Signed-off-by: Daniel Kurtz
Signed-off-by: Henrik Rydberg -
Read each object in a single i2c transaction instead of byte-by-byte
Signed-off-by: Daniel Kurtz
Signed-off-by: Henrik Rydberg -
Using scnprintf() is a cleaner way to ensure that we don't overwrite the
PAGE_SIZE sysfs output buffer.Signed-off-by: Daniel Kurtz
Signed-off-by: Henrik Rydberg -
T5 is the message processor object. Reading it will only have two
outcomes, neither of which is particularly useful:
1) the message count decrements, and a valid message will be lost
2) an invalid message will be read (reportid == 0xff)Signed-off-by: Daniel Kurtz
Signed-off-by: Henrik Rydberg -
If sysfs entry creation fails, the driver is still usable, so don't
just abort probe. Just warn and continue.Signed-off-by: Daniel Kurtz
Signed-off-by: Henrik Rydberg -
Hopefully this new code path will never be used, but better safe than
sorry...Signed-off-by: Daniel Kurtz
Signed-off-by: Henrik Rydberg -
The atmel_mxt_ts driver can support multiple devices simultaneously.
Use the i2c_client name instead of the driver name when requesting an
interrupt to make the different interrupts distinguishable in
/proc/interrupts and top.Signed-off-by: Daniel Kurtz
Signed-off-by: Henrik Rydberg -
This allows userspace to more easily distinguish which bus a particular
atmel_mxt_ts device is attached to.The resulting phys will be something like:
i2c-1-0067/input0Signed-off-by: Daniel Kurtz
Signed-off-by: Henrik Rydberg
04 Jun, 2012
1 commit
-
Fixes the following sparse warning:
drivers/input/input-mt.c:138:40: warning: Using plain integer as NULL pointerSigned-off-by: Sachin Kamat
Signed-off-by: Henrik Rydberg
03 Jun, 2012
13 commits
-
Pull device-mapper updates from Alasdair G Kergon:
"Improve multipath's retrying mechanism in some defined circumstances
and provide a simple reserve/release mechanism for userspace tools to
access thin provisioning metadata while the pool is in use."* tag 'dm-3.5-changes-1' of git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-dm:
dm thin: provide userspace access to pool metadata
dm thin: use slab mempools
dm mpath: allow ioctls to trigger pg init
dm mpath: delay retry of bypassed pg
dm mpath: reduce size of struct multipath -
This patch implements two new messages that can be sent to the thin
pool target allowing it to take a snapshot of the _metadata_. This,
read-only snapshot can be accessed by userland, concurrently with the
live target.Only one metadata snapshot can be held at a time. The pool's status
line will give the block location for the current msnap.Since version 0.1.5 of the userland thin provisioning tools, the
thin_dump program displays the msnap as follows:thin_dump -m
Available here: https://github.com/jthornber/thin-provisioning-tools
Now that userland can access the metadata we can do various things
that have traditionally been kernel side tasks:i) Incremental backups.
By using metadata snapshots we can work out what blocks have
changed over time. Combined with data snapshots we can ensure
the data doesn't change while we back it up.A short proof of concept script can be found here:
https://github.com/jthornber/thinp-test-suite/blob/master/incremental_backup_example.rb
ii) Migration of thin devices from one pool to another.
iii) Merging snapshots back into an external origin.
iv) Asyncronous replication.
Signed-off-by: Joe Thornber
Signed-off-by: Alasdair G Kergon -
Use dedicated caches prefixed with a "dm_" name rather than relying on
kmalloc mempools backed by generic slab caches so the memory usage of
thin provisioning (and any leaks) can be accounted for independently.Signed-off-by: Mike Snitzer
Signed-off-by: Alasdair G Kergon -
After the failure of a group of paths, any alternative paths that
need initialising do not become available until further I/O is sent to
the device. Until this has happened, ioctls return -EAGAIN.With this patch, new paths are made available in response to an ioctl
too. The processing of the ioctl gets delayed until this has happened.Instead of returning an error, we submit a work item to kmultipathd
(that will potentially activate the new path) and retry in ten
milliseconds.Note that the patch doesn't retry an ioctl if the ioctl itself fails due
to a path failure. Such retries should be handled intelligently by the
code that generated the ioctl in the first place, noting that some SCSI
commands should not be retried because they are not idempotent (XOR write
commands). For commands that could be retried, there is a danger that
if the device rejected the SCSI command, the path could be errorneously
marked as failed, and the request would be retried on another path which
might fail too. It can be determined if the failure happens on the
device or on the SCSI controller, but there is no guarantee that all
SCSI drivers set these flags correctly.Signed-off-by: Mikulas Patocka
Signed-off-by: Alasdair G Kergon -
If I/O needs retrying and only bypassed priority groups are available,
set the pg_init_delay_retry flag to wait before retrying.If, for example, the reason for the bypass is that the controller is
getting reset or there is a firmware upgrade happening, retrying right
away would cause a flood of log messages and retries for what could be a
few seconds or even several minutes.Signed-off-by: Mike Christie
Acked-by: Mike Snitzer
Signed-off-by: Alasdair G Kergon -
Move multipath structure's 'lock' and 'queue_size' members to eliminate
two 4-byte holes. Also use a bit within a single unsigned int for each
existing flag (saves 8-bytes). This allows future flags to be added
without each consuming an unsigned int.Signed-off-by: Mike Snitzer
Acked-by: Hannes Reinecke
Signed-off-by: Alasdair G Kergon -
Pull networking updates from David Miller:
1) Make syn floods consume significantly less resources by
a) Not pre-COW'ing routing metrics for SYN/ACKs
b) Mirroring the device queue mapping of the SYN for the SYN/ACK
reply.Both from Eric Dumazet.
2) Fix calculation errors in Byte Queue Limiting, from Hiroaki SHIMODA.
3) Validate the length requested when building a paged SKB for a
socket, so we don't overrun the page vector accidently. From Jason
Wang.4) When netlabel is disabled, we abort all IP option processing when we
see a CIPSO option. This isn't the right thing to do, we should
simply skip over it and continue processing the remaining options
(if any). Fix from Paul Moore.5) SRIOV fixes for the mellanox driver from Jack orgenstein and Marcel
Apfelbaum.6) 8139cp enables the receiver before the ring address is properly
programmed, which potentially lets the device crap over random
memory. Fix from Jason Wang.7) e1000/e1000e fixes for i217 RST handling, and an improper buffer
address reference in jumbo RX frame processing from Bruce Allan and
Sebastian Andrzej Siewior, respectively.* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net:
fec_mpc52xx: fix timestamp filtering
mcs7830: Implement link state detection
e1000e: fix Rapid Start Technology support for i217
e1000: look into the page instead of skb->data for e1000_tbi_adjust_stats()
r8169: call netif_napi_del at errpaths and at driver unload
tcp: reflect SYN queue_mapping into SYNACK packets
tcp: do not create inetpeer on SYNACK message
8139cp/8139too: terminate the eeprom access with the right opmode
8139cp: set ring address before enabling receiver
cipso: handle CIPSO options correctly when NetLabel is disabled
net: sock: validate data_len before allocating skb in sock_alloc_send_pskb()
bql: Avoid possible inconsistent calculation.
bql: Avoid unneeded limit decrement.
bql: Fix POSDIFF() to integer overflow aware.
net/mlx4_core: Fix obscure mlx4_cmd_box parameter in QUERY_DEV_CAP
net/mlx4_core: Check port out-of-range before using in mlx4_slave_cap
net/mlx4_core: Fixes for VF / Guest startup flow
net/mlx4_en: Fix improper use of "port" parameter in mlx4_en_event
net/mlx4_core: Fix number of EQs used in ICM initialisation
net/mlx4_core: Fix the slave_id out-of-range test in mlx4_eq_int -
Pull straggler x86 fixes from Peter Anvin:
"Three groups of patches:- EFI boot stub documentation and the ability to print error messages;
- Removal for PTRACE_ARCH_PRCTL for x32 (obsolete interface which
should never have been ported, and the port is broken and
potentially dangerous.)
- ftrace stack corruption fixes. I'm not super-happy about the
technical implementation, but it is probably the least invasive in
the short term. In the future I would like a single method for
nesting the debug stack, however."* 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
x86, x32, ptrace: Remove PTRACE_ARCH_PRCTL for x32
x86, efi: Add EFI boot stub documentation
x86, efi; Add EFI boot stub console support
x86, efi: Only close open files in error path
ftrace/x86: Do not change stacks in DEBUG when calling lockdep
x86: Allow nesting of the debug stack IDT setting
x86: Reset the debug_stack update counter
ftrace: Use breakpoint method to update ftrace caller
ftrace: Synchronize variable setting with breakpoints -
This reverts the tty layer change to use per-tty locking, because it's
not correct yet, and fixing it will require some more deep surgery.The main revert is d29f3ef39be4 ("tty_lock: Localise the lock"), but
there are several smaller commits that built upon it, they also get
reverted here. The list of reverted commits is:fde86d310886 - tty: add lockdep annotations
8f6576ad476b - tty: fix ldisc lock inversion trace
d3ca8b64b97e - pty: Fix lock inversion
b1d679afd766 - tty: drop the pty lock during hangup
abcefe5fc357 - tty/amiserial: Add missing argument for tty_unlock()
fd11b42e3598 - cris: fix missing tty arg in wait_event_interruptible_tty call
d29f3ef39be4 - tty_lock: Localise the lockThe revert had a trivial conflict in the 68360serial.c staging driver
that got removed in the meantime.Signed-off-by: Linus Torvalds
-
skb_defer_rx_timestamp was called with a freshly allocated skb but must
be called with rskb instead.Signed-off-by: Stephan Gatzka
Cc: stable
Acked-by: Richard Cochran
Signed-off-by: David S. Miller -
Add .status callback that detects link state changes.
Tested with MCS7832CV-AA chip (9710:7830, identified as rev.C by the driver).
Fixes https://bugzilla.kernel.org/show_bug.cgi?id=28532Signed-off-by: Ondrej Zary
Signed-off-by: David S. Miller -
Pull vfs fix and a fix from the signal changes for frv from Al Viro.
The __kernel_nlink_t for powerpc got scrogged because 64-bit powerpc
actually depended on the default "unsigned long", while 32-bit powerpc
had an explicit override to "unsigned short". Al didn't notice, and
made both of them be the unsigned short.The frv signal fix is fallout from simplifying the do_notify_resume()
code, and leaving an extra parenthesis.* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
powerpc: Fix size of st_nlink on 64bit* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal:
frv: Remove bogus closing parenthesis
02 Jun, 2012
2 commits
-
commit e57f93cc53b7 (powerpc: get rid of nlink_t uses, switch to
explicitly-sized type) changed the size of st_nlink on ppc64 from
a long to a short, resulting in boot failures.Signed-off-by: Anton Blanchard
Signed-off-by: Al Viro -
Introduced by commit 6fd84c0831ec78d98736b76dc5e9b849f1dbfc9e
("TIF_RESTORE_SIGMASK can be set only when TIF_SIGPENDING is set")Signed-off-by: Geert Uytterhoeven
Signed-off-by: Al Viro