13 Jan, 2012

1 commit


01 Nov, 2011

6 commits

  • The regulator API contains a range of features for stubbing itself out
    when not in use and for transparently restricting the actual effect of
    regulator API calls where they can't be supported on a particular system
    so that drivers don't need to individually implement this. Simplify the
    driver slightly by making use of this idiom.

    The only in tree user is ecovec24 which does not use the regulator API.

    Signed-off-by: Mark Brown
    Cc: Éric Piel
    Cc: Ilkka Koskinen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Mark Brown
     
  • [ilkka.koskinen@nokia.com: fix arg to lis3->read()]
    Signed-off-by: Ilkka Koskinen
    Signed-off-by: Éric Piel
    Cc: Matthew Garrett
    Cc: Witold Pilat
    Cc: Lyall Pearce
    Cc: Malte Starostik
    Cc: Thadeu Lima de Souza Cascardo
    Cc: Christian Lamparter
    Subject: lis3-remove-the-references-to-the-global-variable-in-core-driver-fix
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Éric Piel
     
  • Change exported functions to use the device given as parameter
    instead of the global one.

    Signed-off-by: Ilkka Koskinen
    Signed-off-by: Éric Piel
    Cc: Matthew Garrett
    Cc: Witold Pilat
    Cc: Lyall Pearce
    Cc: Malte Starostik
    Cc: Thadeu Lima de Souza Cascardo
    Cc: Christian Lamparter
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Éric Piel
     
  • Signed-off-by: Ilkka Koskinen
    Signed-off-by: Éric Piel
    Cc: Matthew Garrett
    Cc: Witold Pilat
    Cc: Lyall Pearce
    Cc: Malte Starostik
    Cc: Thadeu Lima de Souza Cascardo
    Cc: Christian Lamparter
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Éric Piel
     
  • Signed-off-by: Ilkka Koskinen
    Signed-off-by: Éric Piel
    Cc: Matthew Garrett
    Cc: Witold Pilat
    Cc: Lyall Pearce
    Cc: Malte Starostik
    Cc: Thadeu Lima de Souza Cascardo
    Cc: Christian Lamparter
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Éric Piel
     
  • After an "unexpected" reboot, I found this Oops in my logs:

    divide error: 0000 [#1] PREEMPT SMP=20
    CPU 0=20
    Modules linked in: lis3lv02d hp_wmi input_polldev [...]
    Pid: 390, comm: modprobe Tainted: G C 2.6.39-rc7-wl+=20
    RIP: 0010:[] []
    lis3lv02d_poweron+0x4e/0x94 [lis3lv02d]
    RSP: 0018:ffff8801d6407cf8 EFLAGS: 00010246
    RAX: 0000000000000bb8 RBX: ffffffffa014e000 RCX: 0000000000000000
    RDX: 0000000000000000 RSI: ffffea00066e4708 RDI: ffff8801df002700
    RBP: ffff8801d6407d18 R08: ffffea00066c5a30 R09: ffffffff812498c9
    R10: ffff8801d7bfcea0 R11: ffff8801d7bfce10 R12: 0000000000000bb8
    R13: 00000000ffffffda R14: ffffffffa0154120 R15: ffffffffa0154030
    =46S: 00007fc0705db700(0000) GS:ffff8801dfa00000(0000) knlGS:0
    CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
    CR2: 00007f33549174f0 CR3: 00000001d65c9000 CR4: 00000000000406f0
    Process modprobe (pid: 390, threadinfo ffff8801d6406000, task ffff8801d6b40=
    000)
    Stack:
    ffffffffa0154120 62ffffffa0154030 ffffffffa014e000 00000000ffffffea
    ffff8801d6407d58 ffffffffa014bcc1 0000000000000000 0000000000000048
    ffff8801d8bae800 00000000ffffffea 00000000ffffffda ffffffffa0154120
    Call Trace:
    [] lis3lv02d_init_device+0x1ce/0x496 [lis3lv02d]
    [] lis3lv02d_add+0x10f/0x17c [hp_accel]
    [] acpi_device_probe+0x49/0x117
    [...]
    Code: 3a 75 06 80 4d ef 50 eb 04 80 4d ef 40 0f b6 55 ef be 21
    00 00 00 48 89 df ff 53 18 44 8b 63 6c e8 3e fc ff ff 89 c1 44
    89 e0 99 f9 89 c7 e8 93 82 ef e0 48 83 7b 30 00 74 2d 45
    31 e4 80 7b=20
    RIP [] lis3lv02d_poweron+0x4e/0x94 [lis3lv02d]
    RSP

    >From my POV, it looks like the hardware is not working as expected
    and returns a bogus data rate. The driver doesn't check the result
    and directly uses it as some sort of divisor in some places:

    msleep(lis3->pwron_delay / lis3lv02d_get_odr());

    Under this circumstances, this could very well cause the
    "divide by zero" exception from above.

    For now, I fixed it the easiest and most obvious way:
    Check if the result is sane and if it isn't use a sane default
    instead. I went for "100" in the latter case, simply because
    /sys/devices/platform/lis3lv02d/rate returns it on a successful
    boot.

    Signed-off-by: Christian Lamparter
    Signed-off-by: Éric Piel
    Cc: Matthew Garrett
    Cc: Witold Pilat
    Cc: Lyall Pearce
    Cc: Malte Starostik
    Cc: Ilkka Koskinen
    Cc: Thadeu Lima de Souza Cascardo
    Cc: Christian Lamparter
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Éric Piel
     

04 Oct, 2011

1 commit

  • Commit 2a7fade7e03 ("hwmon: lis3: Power on corrections") caused a
    regression on HP laptops with 8bit chip. Writing CTRL2_BOOT_8B bit seems
    clearing the BIOS setup, and no proper interrupt for DriveGuard will be
    triggered any more.

    Since the init code there is basically only for embedded devices, put a
    pdata check so that the problematic initialization will be skipped for
    hp_accel stuff.

    Signed-off-by: Takashi Iwai
    Cc: Eric Piel
    Cc: Samu Onkalo
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Takashi Iwai
     

22 Mar, 2011

1 commit

  • The lis3lv02d drivers aren't hardware monitoring drivers, so the don't
    belong to drivers/hwmon. Move them to drivers/misc, short of a better
    home.

    Signed-off-by: Jean Delvare
    Acked-by: Guenter Roeck
    Acked-by: Eric Piel
    Acked-by: Jonathan Cameron
    Tested-by: Eric Piel
    Tested-by: Takashi Iwai

    Jean Delvare