Commit Graph

34 Commits

Author SHA1 Message Date
Marc Dietrich 3b769edd58 staging/nvec: fix compilation error in nvec.c
This fixes a compilation error in nvec.c due to the missing module.h include.

Signed-off-by: Marc Dietrich <marvin24@gmx.de>
Cc: Julian Andres Klode <jak@jak-linux.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-10-17 15:24:11 -07:00
Marc Dietrich 9feeb0147f staging: nvec: send suspend messages synchronously
The suspend commands need to be sent using the
synchronous method, otherwise the power gets
disabled before the messages are transferred.

Signed-off-by: Marc Dietrich <marvin24@gmx.de>
[jak@jak-linux.org: Rewrote commit message]
Signed-off-by: Julian Andres Klode <jak@jak-linux.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-09-29 17:41:40 -07:00
Julian Andres Klode de839b8f06 staging: nvec: Add a udelay(100) to nvec_interrupt
As the comment indicates, adding that udelay seems to
improve the stability of the communication, although
it is not known why this is the case.

Signed-off-by: Julian Andres Klode <jak@jak-linux.org>
Acked-by: Marc Dietrich <marvin24@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-09-29 17:41:39 -07:00
Julian Andres Klode 12b5a55d72 staging: nvec: Add missing includes and reorder them
Add the includes that are currently missing in nvec.h
and nvec.c and reorder them alphabetically.

Signed-off-by: Julian Andres Klode <jak@jak-linux.org>
Acked-by: Marc Dietrich <marvin24@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-09-29 17:41:39 -07:00
Julian Andres Klode d6bdcf2e10 staging: nvec: Add battery quirk to ignore incomplete responses
The nvec_power system polls nvec for battery information. In some
cases, that part seems to be overloaded and unable to respond
fast in which case it sends an incomplete response. We need to
mark the transfer as completed, though, in order to prevent
endless retries which can kill nvec.

Signed-off-by: Julian Andres Klode <jak@jak-linux.org>
Acked-by: Marc Dietrich <marvin24@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-09-29 17:41:38 -07:00
Julian Andres Klode 1e46e6273b staging: nvec: ps2: Always sample 4 bytes instead of just 1
Get 4 bytes of data from nvec at once instead of just a single
byte. This makes the driver more similar to nvidias and might
improve reliability.

Signed-off-by: Julian Andres Klode <jak@jak-linux.org>
Acked-by: Marc Dietrich <marvin24@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-09-29 17:41:38 -07:00
Julian Andres Klode ff006d1266 staging: nvec: Return error in PS2 driver if write fails
Return the return value of nvec_write_async() in the methods
returning an int.

Signed-off-by: Julian Andres Klode <jak@jak-linux.org>
Acked-by: Marc Dietrich <marvin24@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-09-29 17:41:38 -07:00
Julian Andres Klode 210ceb4f68 staging: nvec: Reject incomplete messages
Reject incomplete messages, causing the request to be
transmitted again. This should fix various problems
out there.

Signed-off-by: Julian Andres Klode <jak@jak-linux.org>
Acked-by: Marc Dietrich <marvin24@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-09-29 17:41:37 -07:00
Julian Andres Klode 8da7986343 staging: nvec: Handle filled up RX buffers
If no RX buffer is available in state 1, jump to state
0 again. This will produce an incredible amount of
warnings, but it is not supposed to happen anyway.

Signed-off-by: Julian Andres Klode <jak@jak-linux.org>
Acked-by: Marc Dietrich <marvin24@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-09-29 17:41:37 -07:00
Julian Andres Klode bb0590e272 staging: nvec: Allow TX buffers only in the upper 75% of the pool
Allow TX buffers to be allocated only in the upper 75% of the pool
to avoid a completely filled buffer preventing the driver from
processing responses. This also improves performance, as RX
allocations do not require checking buffers allocated for TX
unless there are more than 16 incoming messages -- which is
highly unlikely.

An earlier version used the lower 75% for TX messages, but
that was considered to be not that effective due to the
overlaps of RX and TX buffers mentioned above.

Signed-off-by: Julian Andres Klode <jak@jak-linux.org>
Acked-by: Marc Dietrich <marvin24@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-09-29 17:41:36 -07:00
Julian Andres Klode 198dd26714 staging: nvec: Export nvec_msg_free() to clients
Client code wishing to make use of nvec_write_sync() must
have a way to free the returned pointer, otherwise we run
out of poool memory fairly soon.

Signed-off-by: Julian Andres Klode <jak@jak-linux.org>
Acked-by: Marc Dietrich <marvin24@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-09-29 17:41:36 -07:00
Julian Andres Klode 391d2fa95c staging: nvec: Move implementation-only macros out of the header
Those macros are needed only for implementation purposes and
do not have any use for other code wishing to use nvec.

Signed-off-by: Julian Andres Klode <jak@jak-linux.org>
Acked-by: Marc Dietrich <marvin24@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-09-29 17:41:36 -07:00
Julian Andres Klode bdf034d986 staging: nvec: Document public and private API
Add kernel-doc comments describing the functions
and structs we currently have.

Signed-off-by: Julian Andres Klode <jak@jak-linux.org>
Acked-by: Marc Dietrich <marvin24@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-09-29 17:41:35 -07:00
Julian Andres Klode 1b9bf629ea staging: nvec: Have nvec_write_async() return -ENOMEM on OOM
Change nvec_write_async() to return an integer, 0 by default,
a negative error on failure. Change nvec_write_sync() to
check the return value and abort if it is negative.

Signed-off-by: Julian Andres Klode <jak@jak-linux.org>
Acked-by: Marc Dietrich <marvin24@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-09-29 17:41:35 -07:00
Julian Andres Klode ff169c1487 staging: nvec: Enable the capslock LED in the keyboard driver
When the caps lock key is pressed, toggle the associated
LED. According to Nvidia code, we should send 0x01 where
we sent 0x07, but this does not appear to work correctly
on the AC100.

Signed-off-by: Julian Andres Klode <jak@jak-linux.org>
Acked-by: Marc Dietrich <marvin24@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-09-29 17:41:34 -07:00
Julian Andres Klode 791c4a6427 staging: nvec: Add myself to copyright and authors list
Forgotten in the last commit(s) which contained the copyrightable
material, so let's add it now. I believe that only my nvec.c
contributions are copyrightable, nvec.h is just interface naming,
so does not deserve that yet.

Signed-off-by: Julian Andres Klode <jak@jak-linux.org>
Acked-by: Marc Dietrich <marvin24@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-09-29 17:41:34 -07:00
Julian Andres Klode 7b77065793 staging: nvec: Do not print free message for tx_scratch
The scratch area is not part of the pool and thus gets
no allocation message. Printing a free message would
be confusing, and the pointer subtraction would be
undefined behavior.

Signed-off-by: Julian Andres Klode <jak@jak-linux.org>
Acked-by: Marc Dietrich <marvin24@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-09-29 17:41:33 -07:00
Julian Andres Klode 0cab4cb852 staging: nvec: Rewrite the interrupt handler
Rewrite the interrupt handler to use a state machine similar to
that found in the various kernels for the Advent Vega. This also
changes the code to use the new functions introduced in the
previous commits.

This also merges the rewrite sent in August 2011 by Marc
Dietrich, and thus also includes code by him. His original
patch can be found on the mailing list.

Signed-off-by: Julian Andres Klode <jak@jak-linux.org>
Acked-by: Marc Dietrich <marvin24@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-09-29 17:41:33 -07:00
Julian Andres Klode 8517e879e0 staging: nvec: Add is_event() and size() functions for nvec_msg
Add functions nvec_msg_is_event() and nvec_msg_size() which
do just what the say: tell whether the message is an event,
and getting the size of the message.

Signed-off-by: Julian Andres Klode <jak@jak-linux.org>
Acked-by: Marc Dietrich <marvin24@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-09-29 17:41:33 -07:00
Julian Andres Klode e7c40851fd staging: nvec: Introduce nvec_gpio_set_value()
Introduce nvec_gpio_set_value(), which works like
gpio_set_value(), but also creates a debugging
message, if that's enabled.

Signed-off-by: Julian Andres Klode <jak@jak-linux.org>
Acked-by: Marc Dietrich <marvin24@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-09-29 17:41:32 -07:00
Julian Andres Klode 0b1076c4b2 staging: nvec: Introduce new internal API for msg alloc/free
Introduce two new functions nvec_msg_alloc() and nvec_msg_free()
that allocate and free message buffers from the internal pool
of messages.

Signed-off-by: Julian Andres Klode <jak@jak-linux.org>
Acked-by: Marc Dietrich <marvin24@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-09-29 17:40:40 -07:00
Marc Dietrich b414e2eb3a staging: nvec: fix Kconfig dependencies
This patch adds config dependencies for the NVEC keyboard, mouse,
and power drivers.

Signed-off-by: Julian Andres Klode <jak@jak-linux.org>
Acked-by: Marc Dietrich <marvin24@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-09-29 17:40:40 -07:00
Marc Dietrich 8cdeff497a staging: nvec: update ToDo list
Mostly small stuff only. Hopefully completed during the next
release cycle.

Signed-off-by: Marc Dietrich <marvin24@gmx.de>
[jak@jak-linux.org: Removed some items no longer valid]
Signed-off-by: Julian Andres Klode <jak@jak-linux.org>
Acked-by: Marc Dietrich <marvin24@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-09-29 17:40:39 -07:00
Ilya Petrov 97cc26576f staging: nvec: add LED support
This patch adds support for LEDs connect to a nvec. A single brightness
property is exported to sysfs. LEDs are selected via bitfields in the
brightness value. Also the blinking behavior is selected through this
method. Vendors may use different values for different HW designs.

Signed-off-by: Ilya Petrov <ilya.muromec@gmail.com>
Signed-off-by: Marc Dietrich <marvin24@gmx.de>
[jak@jak-linux.org: Fixed checkpatch warnings]
Signed-off-by: Julian Andres Klode <jak@jak-linux.org>
Acked-by: Marc Dietrich <marvin24@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-09-29 17:40:38 -07:00
Marc Dietrich 6dca320c8f staging: nvec: fix unmute of speakers
The ec command used was for muting, not unmuting.

Signed-off-by: Marc Dietrich <marvin24@gmx.de>
Signed-off-by: Julian Andres Klode <jak@jak-linux.org>
Acked-by: Marc Dietrich <marvin24@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-09-29 17:40:38 -07:00
Marc Dietrich ac8107599e staging: nvec: rework the nvec slave init
Rework the tegra slave controller init to look more like in
tegra-i2c.c. This makes the nvec init reliable. Also add de-init of
the slave to be used during suspend.

Signed-off-by: Marc Dietrich <marvin24@gmx.de>
Signed-off-by: Julian Andres Klode <jak@jak-linux.org>
Acked-by: Marc Dietrich <marvin24@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-09-29 17:40:38 -07:00
Marc Dietrich a3a9aa1a41 staging: nvec: Use print_hex_dump() where appropriate
Split of the previous patch and the next by Marc, as that
patch is not strictly a coding style fix only.

Signed-off-by: Julian Andres Klode <jak@jak-linux.org>
Acked-by: Marc Dietrich <marvin24@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-09-29 17:40:37 -07:00
Marc Dietrich 162c7d8c4b staging: nvec: coding style fixes / add copyright notice
This patch fixes coding style and adds copyright notices.

Signed-off-by: Marc Dietrich <marvin24@gmx.de>
[jak@jak-linux.org: Merge later cleanup into that patch]
Signed-off-by: Julian Andres Klode <jak@jak-linux.org>
Acked-by: Marc Dietrich <marvin24@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-09-29 17:40:37 -07:00
Julian Andres Klode 7974035c00 staging: nvec: Include missing headers
Those headers were apparently included by other headers
previously, but are not anymore.

Signed-off-by: Julian Andres Klode <jak@jak-linux.org>
Acked-by: Marc Dietrich <marvin24@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-09-29 17:39:30 -07:00
Marc Dietrich f686e9affb staging: nvec: convert to use platform register and mfdcells
This patch converts the nvec to use mfd cells and improves the
registration of the platform driver. The child drivers are also
converted to use mfd cells and platform registration.

Signed-off-by: Marc Dietrich <marvin24@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-08-24 14:25:30 -07:00
Colin Brophy 88d94e301e Staging: nvec: fixes coding style issues in nvec_kbd.c
This patches nvec_kbd.c to the file that fixes up errors found by
the checkpath.pl tool.

Signed-off-by: Colin Brophy <colin@brophys.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-08-23 13:26:01 -07:00
Russell King 55dc6ee7de Staging: Add clk API note to nvec/TODO
Add a note about the abuse of the clk API to the nvec/TODO list.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-08-02 16:12:49 -07:00
Vitaliy Ivanov e44ba033c5 treewide: remove duplicate includes
Many stupid corrections of duplicated includes based on the output of
scripts/checkincludes.pl.

Signed-off-by: Vitaliy Ivanov <vitalivanov@gmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
2011-06-20 16:08:19 +02:00
Marc Dietrich 32890b9830 Staging: initial version of the nvec driver
This is an implementation of a NVidia compliant embedded controller
protocol driver. It is used on some ARM-Tegra boards for device
communication.

Signed-off-by: Marc Dietrich <marvin24@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-05-19 15:36:10 -07:00