21 Aug, 2012

3 commits

  • The patch adds support for Lenovo IdeaPad Z570 laptop. It makes all special
    keys working, adds possibility to control fan like Windows does, controls
    Touchpad Disabled LED, toggles touchpad state via keyboard controller and
    corrects touchpad behavior on resume from suspend. It is new, modified
    version of patch. Now it does not depend on psmouse and does not need patching
    of input subsystem.

    Signed-off-by: Maxim Mikityanskiy

    This is the part 3 for fan control

    Signed-off-by: Ike Panhc
    Signed-off-by: Matthew Garrett

    Maxim Mikityanskiy
     
  • The patch adds support for Lenovo IdeaPad Z570 laptop. It makes all special
    keys working, adds possibility to control fan like Windows does, controls
    Touchpad Disabled LED, toggles touchpad state via keyboard controller and
    corrects touchpad behavior on resume from suspend. It is new, modified
    version of patch. Now it does not depend on psmouse and does not need patching
    of input subsystem.

    Signed-off-by: Maxim Mikityanskiy

    This is part 2 for touchpad toggle

    Signed-off-by: Ike Panhc
    Signed-off-by: Matthew Garrett

    Maxim Mikityanskiy
     
  • The patch adds support for Lenovo IdeaPad Z570 laptop. It makes all special
    keys working, adds possibility to control fan like Windows does, controls
    Touchpad Disabled LED, toggles touchpad state via keyboard controller and
    corrects touchpad behavior on resume from suspend. It is new, modified
    version of patch. Now it does not depend on psmouse and does not need patching
    of input subsystem.

    Signed-off-by: Maxim Mikityanskiy

    This is part 1 for special button handling.

    Signed-off-by: Ike Panhc
    Signed-off-by: Matthew Garrett

    Maxim Mikityanskiy
     

18 Aug, 2012

19 commits

  • Due to commit cdda911c34006f1089f3c87b1a1f31ab3a4722f2 evdev only
    becomes readable when the buffer contains an EV_SYN/SYN_REPORT event.

    So in order to read the tablet sensor data as it happens we need to
    ensure that we always call input_sync() after input_report_switch()

    Signed-off-by: Carlos Alberto Lopez Perez
    Signed-off-by: Matthew Garrett

    Carlos Alberto Lopez Perez
     
  • In the latest V-series bios DMI_PRODUCT_VERSION does not contain
    the string Lenovo or Thinkpad, but is set to the model number, this
    causes the thinkpad_acpi module to fail to load. Recognize laptop
    as Lenovo using DMI_BIOS_VENDOR instead, which is set to Lenovo.

    Test on V490u
    =============
    == After the patch ==

    [ 1350.295757] thinkpad_acpi: ThinkPad ACPI Extras v0.24
    [ 1350.295760] thinkpad_acpi: http://ibm-acpi.sf.net/
    [ 1350.295761] thinkpad_acpi: ThinkPad BIOS H7ET21WW (1.00 ), EC unknown
    [ 1350.295763] thinkpad_acpi: Lenovo LENOVO, model LV5DXXX
    [ 1350.296086] thinkpad_acpi: detected a 8-level brightness capable ThinkPad
    [ 1350.296694] thinkpad_acpi: radio switch found; radios are enabled
    [ 1350.296703] thinkpad_acpi: possible tablet mode switch found; ThinkPad in laptop mode
    [ 1350.306466] thinkpad_acpi: rfkill switch tpacpi_bluetooth_sw: radio is unblocked
    [ 1350.307082] Registered led device: tpacpi::thinklight
    [ 1350.307215] Registered led device: tpacpi::power
    [ 1350.307255] Registered led device: tpacpi::standby
    [ 1350.307294] Registered led device: tpacpi::thinkvantage
    [ 1350.308160] thinkpad_acpi: Standard ACPI backlight interface available, not loading native one
    [ 1350.308333] thinkpad_acpi: Console audio control enabled, mode: monitor (read only)
    [ 1350.312287] input: ThinkPad Extra Buttons as /devices/platform/thinkpad_acpi/input/input14

    == Before the patch ==
    sudo modprobe thinkpad_acpi
    FATAL: Error inserting thinkpad_acpi (/lib/modules/3.2.0-27-generic/kernel/drivers/platform/x86/thinkpad_acpi.ko): No such device

    Test on B485
    =============
    This patch was also test in a B485 where the thinkpad_acpi module does not
    have any issues loading. But, I tested it to make sure this patch does not
    break on already functioning models of Lenovo products.

    [13486.746359] thinkpad_acpi: ThinkPad ACPI Extras v0.24
    [13486.746364] thinkpad_acpi: http://ibm-acpi.sf.net/
    [13486.746368] thinkpad_acpi: ThinkPad BIOS HJET15WW(1.01), EC unknown
    [13486.746373] thinkpad_acpi: Lenovo Lenovo LB485, model 814TR01
    [13486.747300] thinkpad_acpi: detected a 8-level brightness capable ThinkPad
    [13486.752435] thinkpad_acpi: rfkill switch tpacpi_bluetooth_sw: radio is unblocked
    [13486.752883] Registered led device: tpacpi::thinklight
    [13486.752915] thinkpad_acpi: Standard ACPI backlight interface available, not loading native one
    [13486.753216] thinkpad_acpi: Console audio control enabled, mode: monitor (read only)
    [13486.757147] input: ThinkPad Extra Buttons as /devices/platform/thinkpad_acpi/input/input15

    Signed-off-by: Manoj Iyer
    Signed-off-by: Matthew Garrett

    Manoj Iyer
     
  • Fixed the typo introduced from the below commit
    5f1e88f dell-laptop: Add 6 machines to touchpad led quirk

    Reported-by: Carlos Alberto Lopez Perez
    Signed-off-by: AceLan Kao
    Signed-off-by: Matthew Garrett

    AceLan Kao
     
  • This callback is a no-op in nouveau, and the upcoming apple-gmux
    switcheroo support won't require it either. Rather than forcing drivers
    to stub it out, just make it optional and remove the callback from
    nouveau.

    Signed-off-by: Seth Forshee
    Signed-off-by: Matthew Garrett

    Seth Forshee
     
  • vga_switcheroo assumes that the handler will be registered before the
    last client, otherwise switching will not be enabled. Likewise it's
    assumed that the handler will not be unregistered without at least one
    client also being unregistered, otherwise switching will remain enabled
    despite no longer having a handler. These assumptions cannot be enforced
    if the handler is in a separate driver from both clients, as with the
    gmux found in Apple laptops. Remove this assumption.

    Signed-off-by: Seth Forshee
    Signed-off-by: Matthew Garrett

    Seth Forshee
     
  • Add support for the gmux display muxing functionality and register a mux
    handler with vga_switcheroo.

    Signed-off-by: Andreas Heider
    Signed-off-by: Seth Forshee
    Signed-off-by: Matthew Garrett

    Andreas Heider
     
  • Fix the dependencies of apple-gmux to prevent it from being built-in
    when one or more of its dependencies is built as a module. Otherwise it
    can fail to build due to missing symbols.

    v2: Add dependency on ACPI to fix build failure when ACPI=n

    Reported-by: Arun Raghavan
    Signed-off-by: Seth Forshee
    Signed-off-by: Matthew Garrett

    Seth Forshee
     
  • If the user bit is set, that mean BIOS can't set and record the wlan
    status, it will report the value read from id ASUS_WMI_DEVID_WLAN_LED
    (0x00010012) while we query the wlan status by id ASUS_WMI_DEVID_WLAN
    (0x00010011) through WMI.
    So, we have to record wlan status in id ASUS_WMI_DEVID_WLAN_LED
    (0x00010012) while setting the wlan status through WMI.
    This is also the behavior that windows app will do.

    Quote from ASUS application engineer
    ===
    When you call WMIMethod(DSTS, 0x00010011) to get WLAN status, it may return

    (1) 0x00050001 (On)
    (2) 0x00050000 (Off)
    (3) 0x00030001 (On)
    (4) 0x00030000 (Off)
    (5) 0x00000002 (Unknown)

    (1), (2) means that the model has hardware GPIO for WLAN, you can call
    WMIMethod(DEVS, 0x00010011, 1 or 0) to turn WLAN on/off.
    (3), (4) means that the model doesn’t have hardware GPIO, you need to use
    API or driver library to turn WLAN on/off, and call
    WMIMethod(DEVS, 0x00010012, 1 or 0) to set WLAN LED status.
    After you set WLAN LED status, you can see the WLAN status is changed with
    WMIMethod(DSTS, 0x00010011). Because the status is recorded lastly
    (ex: Windows), you can use it for synchronization.
    (5) means that the model doesn’t have WLAN device.

    WLAN is the ONLY special case with upper rule.

    For other device, like Bluetooth, you just need use
    WMIMethod(DSTS, 0x00010013) to get, and WMIMethod(DEVS, 0x00010013, 1 or 0)
    to set.
    ===

    Signed-off-by: AceLan Kao
    Signed-off-by: Matthew Garrett

    AceLan Kao
     
  • We were only calling acpi_video_unregister() if ACPI video support was built
    in, not if it was a module.

    Signed-off-by: Matthew Garrett

    Matthew Garrett
     
  • New gmux devices have a different method for accessing the registers.
    Update the driver to cope. Incorporates feedback from Bernhard Froemel.

    Signed-off-by: Matthew Garrett
    Cc: Bernhard Froemel
    Cc: Seth Forshee

    Matthew Garrett
     
  • Move the special-cased backlight update function to a generic gmux_write32
    function.

    Signed-off-by: Matthew Garrett
    Cc: Seth Forshee

    Matthew Garrett
     
  • Pull infiniband/rdma fixes from Roland Dreier:
    "Grab bag of InfiniBand/RDMA fixes:
    - IPoIB fixes for regressions introduced by path database conversion
    - mlx4 fixes for bugs with large memory systems and regressions from
    SR-IOV patches
    - RDMA CM fix for passing bad event up to userspace
    - Other minor fixes"

    * tag 'rdma-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband:
    IB/mlx4: Check iboe netdev pointer before dereferencing it
    mlx4_core: Clean up buddy bitmap allocation
    mlx4_core: Fix integer overflow issues around MTT table
    mlx4_core: Allow large mlx4_buddy bitmaps
    IB/srp: Fix a race condition
    IB/qib: Fix error return code in qib_init_7322_variables()
    IB: Fix typos in infiniband drivers
    IB/ipoib: Fix RCU pointer dereference of wrong object
    IB/ipoib: Add missing locking when CM object is deleted
    RDMA/ucma.c: Fix for events with wrong context on iWARP
    RDMA/ocrdma: Don't call vlan_dev_real_dev() for non-VLAN netdevs
    IB/mlx4: Fix possible deadlock on sm_lock spinlock

    Linus Torvalds
     
  • Pull TTY fixes from Greg Kroah-Hartman:
    "Here are 4 tiny patches, each fixing a serial driver problem that
    people have reported.

    Signed-off-by: Greg Kroah-Hartman "

    * tag 'tty-3.6-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty:
    pmac_zilog,kdb: Fix console poll hook to return instead of loop
    serial: mxs-auart: fix the wrong RTS hardware flow control
    serial: ifx6x60: fix paging fault on spi_register_driver
    serial: Change Kconfig entry for CLPS711X-target

    Linus Torvalds
     
  • Pull staging fixes from Greg Kroah-Hartman:
    "Here are some staging driver fixes (and iio driver fixes, they get
    lumped in with the staging stuff due to dependancies) for your 3.6-rc3
    tree.

    Nothing major, just a bunch of fixes that people have reported.

    Signed-off-by: Greg Kroah-Hartman "

    * tag 'staging-3.6-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging: (26 commits)
    iio: lm3533-als: Fix build warnings
    staging:iio:ad7780: Mark channels as unsigned
    staging:iio:ad7192: Report offset and scale for temperature channel
    staging:iio:ad7192: Report channel offset
    staging:iio:ad7192: Mark channels as unsigned
    staging:iio:ad7192: Fix setting ACX
    staging:iio:ad7192: Add missing break in switch statement
    staging:iio:ad7793: Fix internal reference value
    staging:iio:ad7793: Follow new IIO naming spec
    staging:iio:ad7793: Fix temperature scale and offset
    staging:iio:ad7793: Report channel offset
    staging:iio:ad7793: Mark channels as unsigned
    staging:iio:ad7793: Add missing break in switch statement
    iio/adjd_s311: Fix potential memory leak in adjd_s311_update_scan_mode()
    iio: frequency: ADF4350: Fix potential reference div factor overflow.
    iio: staging: ad7298_ring: Fix maybe-uninitialized warning
    staging: comedi: usbduxfast: Declare MODULE_FIRMWARE usage
    staging: comedi: usbdux: Declare MODULE_FIRMWARE usage
    staging: comedi: usbduxsigma: Declare MODULE_FIRMWARE usage
    staging: csr: add INET dependancy
    ...

    Linus Torvalds
     
  • Pull driver core fixes from Greg Kroah-Hartman:
    "Here are two tiny patches, one fixing a dynamic debug problem that the
    printk rework turned up, and the other one fixing an extcon problem
    that people reported.

    Signed-off-by: Greg Kroah-Hartman "

    * tag 'driver-core-3.6-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core:
    extcon: extcon_gpio: Replace gpio_request_one by devm_gpio_request_one
    drivers-core: make structured logging play nice with dynamic-debug

    Linus Torvalds
     
  • Pull Char / Misc driver fixes from Greg Kroah-Hartman:
    "Here are some small misc and w1 driver fixes for 3.6-rc3. Nothing
    major, just some some bugfixes and a new device id for a w1 driver.

    Signed-off-by: Greg Kroah-Hartman "

    * tag 'char-misc-3.6-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc:
    1-Wire: Add support for the maxim ds1825 temperature sensor
    ti-st: Fix check for pdata->chip_awake function pointer
    mei: add mei_quirk_probe function
    mei: fix device stall after wd is stopped

    Linus Torvalds
     
  • Pull USB patches from Greg Kroah-Hartman:
    "Here are a number of small USB patches for 3.6-rc3.

    The "large" one is just a number of device id updates to the option
    driver, done by the manufacturer, properly fixing up the device ids
    based on shipping devices.

    Other than that, some gadget driver fixes, the obligitary XHCI
    patches, and some other device ids and bugs fixed.

    Signed-off-by: Greg Kroah-Hartman "

    * tag 'usb-3.6-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (26 commits)
    USB: qcserial: fix port handling on Gobi 1K and 2K+
    USB: serial: Fix mos7840 timeout
    USB: option: add ZTE K5006-Z
    usb: gadget: u_ether: fix kworker 100% CPU issue with still used interfaces in eth_stop
    usb: host: tegra: fix warning messages in ehci_remove
    usb: host: mips: sead3: Update for EHCI register structure.
    usb: renesas_usbhs: fixup resume method for autonomy mode
    usb: renesas_usbhs: mod_host: add missing .bus_suspend/resume
    update MAINTAINERS for Oliver Neukum
    usb: usb_wwan: resume/suspend can be called after port is gone
    usb: serial: prevent suspend/resume from racing against probe/remove
    usb: usb_wwan: replace release and disconnect with a port_remove hook
    usb: serial: mos7840: Fixup mos7840_chars_in_buffer()
    USB: isp1362-hcd.c: usb message always saved in case of underrun
    OMAP: USB : Fix the EHCI enumeration and core retention issue
    usb: chipidea: fix and improve dependencies if usb host or gadget support is built as module
    USB: support the new interfaces of Huawei Data Card devices in option driver
    USB: ftdi_sio: Add VID/PID for Kondo Serial USB
    xhci: Switch PPT ports to EHCI on shutdown.
    xhci: Fix bug after deq ptr set to link TRB.
    ...

    Linus Torvalds
     
  • Fix fatal error in scripts/kernel-doc by ignoring the "__weak" attribute:

    Error(drivers/pci/pci.c:2820): cannot understand prototype: 'char * __weak pcibios_setup(char *str) '

    Signed-off-by: Randy Dunlap
    Signed-off-by: Linus Torvalds

    Randy Dunlap
     
  • Pull a Yama bugfix from James Morris.

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security:
    Yama: access task_struct->comm directly

    Linus Torvalds
     

17 Aug, 2012

18 commits

  • Pull C6X atomic64 support from Mark Salter:
    "Enable atomic64 ops in C6X
    - define L1_CACHE_SHIFT
    - select GENERIC_ATOMIC64"

    * tag 'for-linus' of git://linux-c6x.org/git/projects/linux-c6x-upstreaming:
    C6X: select GENERIC_ATOMIC64
    C6X: add Lx_CACHE_SHIFT defines

    Linus Torvalds
     
  • Pull ext4 bug fixes from Ted Ts'o:
    "The following are all bug fixes and regressions. The most notable are
    the ones which cause problems for ext4 on RAID --- a performance
    problem when mounting very large filesystems, and a kernel OOPS when
    doing an rm -rf on large directory hierarchies on fast devices."

    * tag 'ext4_for_linus_stable' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:
    ext4: fix kernel BUG on large-scale rm -rf commands
    ext4: fix long mount times on very big file systems
    ext4: don't call ext4_error while block group is locked
    ext4: avoid kmemcheck complaint from reading uninitialized memory
    ext4: make sure the journal sb is written in ext4_clear_journal_err()

    Linus Torvalds
     
  • In some cases when an autofs indirect mount is contained in a file
    system that is marked as shared (such as when systemd does the
    equivalent of "mount --make-rshared /" early in the boot), mounts
    stop expiring.

    When this happens the first expiry check on a mountpoint dentry in
    autofs_expire_indirect() sees a mountpoint dentry with a higher
    than minimal reference count. Consequently the dentry is condidered
    busy and the actual expiry check is never done.

    This particular check was originally meant as an optimisation to
    detect a path walk in progress but with the addition of rcu-walk
    it can be ineffective anyway.

    Removing the test allows automounts to expire again since the
    actual expire check doesn't rely on the dentry reference count.

    Signed-off-by: Ian Kent
    Signed-off-by: Linus Torvalds

    Ian Kent
     
  • Commit 968dee7722: "ext4: fix hole punch failure when depth is greater
    than 0" introduced a regression in v3.5.1/v3.6-rc1 which caused kernel
    crashes when users ran run "rm -rf" on large directory hierarchy on
    ext4 filesystems on RAID devices:

    BUG: unable to handle kernel NULL pointer dereference at 0000000000000028

    Process rm (pid: 18229, threadinfo ffff8801276bc000, task ffff880123631710)
    Call Trace:
    [] ? __ext4_handle_dirty_metadata+0x83/0x110
    [] ext4_ext_truncate+0x193/0x1d0
    [] ? ext4_mark_inode_dirty+0x7f/0x1f0
    [] ext4_truncate+0xf5/0x100
    [] ext4_evict_inode+0x461/0x490
    [] evict+0xa2/0x1a0
    [] iput+0x103/0x1f0
    [] do_unlinkat+0x154/0x1c0
    [] ? sys_newfstatat+0x2a/0x40
    [] sys_unlinkat+0x1b/0x50
    [] system_call_fastpath+0x16/0x1b
    Code: 8b 4d 20 0f b7 41 02 48 8d 04 40 48 8d 04 81 49 89 45 18 0f b7 49 02 48 83 c1 01 49 89 4d 00 e9 ae f8 ff ff 0f 1f 00 49 8b 45 28 8b 40 28 49 89 45 20 e9 85 f8 ff ff 0f 1f 80 00 00 00

    RIP [] ext4_ext_remove_space+0xa34/0xdf0

    This could be reproduced as follows:

    The problem in commit 968dee7722 was that caused the variable 'i' to
    be left uninitialized if the truncate required more space than was
    available in the journal. This resulted in the function
    ext4_ext_truncate_extend_restart() returning -EAGAIN, which caused
    ext4_ext_remove_space() to restart the truncate operation after
    starting a new jbd2 handle.

    Reported-by: Maciej Żenczykowski
    Reported-by: Marti Raudsepp
    Tested-by: Fengguang Wu
    Signed-off-by: "Theodore Ts'o"
    Cc: stable@vger.kernel.org

    Theodore Ts'o
     
  • Commit 8aeb00ff85a: "ext4: fix overhead calculation used by
    ext4_statfs()" introduced a O(n**2) calculation which makes very large
    file systems take forever to mount. Fix this with an optimization for
    non-bigalloc file systems. (For bigalloc file systems the overhead
    needs to be set in the the superblock.)

    Signed-off-by: "Theodore Ts'o"
    Cc: stable@vger.kernel.org

    Theodore Ts'o
     
  • While in ext4_validate_block_bitmap(), if an block allocation bitmap
    is found to be invalid, we call ext4_error() while the block group is
    still locked. This causes ext4_commit_super() to call a function
    which might sleep while in an atomic context.

    There's no need to keep the block group locked at this point, so hoist
    the ext4_error() call up to ext4_validate_block_bitmap() and release
    the block group spinlock before calling ext4_error().

    The reported stack trace can be found at:

    http://article.gmane.org/gmane.comp.file-systems.ext4/33731

    Reported-by: Dave Jones
    Signed-off-by: "Theodore Ts'o"
    Cc: stable@vger.kernel.org

    Theodore Ts'o
     
  • The core ptrace access checking routine holds a task lock, and when
    reporting a failure, Yama takes a separate task lock. To avoid a
    potential deadlock with two ptracers taking the opposite locks, do not
    use get_task_comm() and just use ->comm directly since accuracy is not
    important for the report.

    Reported-by: Fengguang Wu
    Suggested-by: Oleg Nesterov
    CC: stable@vger.kernel.org
    Signed-off-by: Kees Cook
    Acked-by: John Johansen
    Signed-off-by: James Morris

    Kees Cook
     
  • Linus Torvalds
     
  • …jic23/iio into staging-linus

    IIO fixes for v3.6-rc1

    These mostly consist of fixes from Lars-Peter Clausen that were
    the first part of a large series reworking the drivers concerned.
    Turns out these drivers had quite a wealth of minor bugs.

    Also here are some build warning fixes for lm3533-als and
    adjd_s111 (both new drives in this cycle).
    Final elements are a a div factor overflow and a warning
    related fix in a couple of Analog Devices drivers.

    All in all nothing major, but a worthwhile bunch of short
    fixes.

    Greg Kroah-Hartman
     
  • This patch adds support for maxim ds1825 based 1-wire temperature sensors.

    Signed-off-by: Raphael Assenat
    Signed-off-by: Greg Kroah-Hartman

    Raphael Assenat
     
  • ll_device_want_to_wakeup(): Fix the NULL pointer check on pdata->chip_awake,
    which is performed on the wrong function pointer

    Signed-off-by: Matthias Kaehlcke
    Signed-off-by: Greg Kroah-Hartman

    Matthias Kaehlcke
     
  • Fix below build warnings:
    CC [M] drivers/iio/light/lm3533-als.o
    drivers/iio/light/lm3533-als.c:667:8: warning: initialization from incompatible pointer type [enabled by default]
    drivers/iio/light/lm3533-als.c:667:8: warning: (near initialization for 'dev_attr_in_illuminance0_thresh_either_en.show') [enabled by default]
    drivers/iio/light/lm3533-als.c:667:8: warning: initialization from incompatible pointer type [enabled by default]
    drivers/iio/light/lm3533-als.c:667:8: warning: (near initialization for 'dev_attr_in_illuminance0_thresh_either_en.store') [enabled by default]

    Signed-off-by: Axel Lin

    Axel Lin
     
  • The values reported by the AD7780 are unsigned with a binary offset:

    0x000000 is negative fullscale
    0x800000 is zeroscale
    0xffffff is positive fullscale

    So mark the channel in the channel spec as unsigned rather than signed.

    Signed-off-by: Lars-Peter Clausen
    Signed-off-by: Jonathan Cameron

    Lars-Peter Clausen
     
  • The temperature channel reports values in degree Kelvin with sensitivity of 5630
    codes per degree. If the chip is configured in bipolar mode there is an
    additional binary offset of 0x800000 and the sensitivity is divided by two.

    Currently the driver does the mapping from the raw value to degree Celsius when
    doing a manual conversion. This has several disadvantages, the major one being
    that it does not work for buffered mode, also by doing the division by the
    sensitivity in the driver the precession of the reported value is needlessly
    reduced.

    Furthermore the current calculation only works in bipolar mode and the current
    scale is of by a factor of 1000.

    This patch modifies the driver to report correct offset and scale values in
    both unipolar and bipolar mode and to report the raw temperature value
    for manual conversions.

    Signed-off-by: Lars-Peter Clausen
    Signed-off-by: Jonathan Cameron

    Lars-Peter Clausen
     
  • In bipolar mode there is a a binary offset of 2**(N-1) (with N being the number
    of bits) on the reported value. Currently this value is subtracted when doing a
    manual read. While this works for manual channel readings it does not work for
    buffered mode. So report the offset in the channels offset property, which will
    work in both modes.

    Signed-off-by: Lars-Peter Clausen

    Lars-Peter Clausen
     
  • The values reported by the AD7793 are unsigned.
    In uniploar mode:
    0x000000 is zeroscale
    0xffffff is fullscale
    In bipolar mode:
    0x000000 is negative fullscale
    0x800000 is zeroscale
    0xffffff is positive fullscale

    In bipolar mode there is a binary offset, but the values are still unsigned.

    Signed-off-by: Lars-Peter Clausen
    Signed-off-by: Jonathan Cameron

    Lars-Peter Clausen
     
  • Write to the correct register when setting the ACX bit.

    Signed-off-by: Lars-Peter Clausen
    Signed-off-by: Jonathan Cameron

    Lars-Peter Clausen
     
  • Without the break statement we fall right through to the default case and return
    an error value.

    Signed-off-by: Lars-Peter Clausen
    Signed-off-by: Jonathan Cameron

    Lars-Peter Clausen