From: Hans de Goede <hdegoede@redhat.com> To: Jonathan Cameron <jic23@kernel.org>, Liam Girdwood <lgirdwood@gmail.com>, Mark Brown <broonie@kernel.org> Cc: Hans de Goede <hdegoede@redhat.com>, Lars-Peter Clausen <lars@metafoo.de>, Jeremy Cline <jeremy@jcline.org>, linux-iio@vger.kernel.org, Charles Keepax <ckeepax@opensource.cirrus.com>, patches@opensource.cirrus.com, alsa-devel@alsa-project.org Subject: [PATCH 0/8] iio: accel: bmc150: Add support for yoga's with dual accelerometers with an ACPI HID of DUAL250E Date: Fri, 21 May 2021 19:14:10 +0200 [thread overview] Message-ID: <20210521171418.393871-1-hdegoede@redhat.com> (raw) Hi All, Some 360 degree hinges (yoga) style 2-in-1 devices use 2 bmc150 accels to allow the OS to determine the angle between the display and the base of the device, so that the OS can determine if the 2-in-1 is in laptop or in tablet-mode. We already support this setup on devices using a single ACPI node with a HID of "BOSC0200" to describe both accelerometers. This patch set extends this support to also support the same setup but then using a HID of "DUAL250E". While testing this I found some crashes on rmmod, patches 1-2 fix those patches, patch 3 does some refactoring and patch 4 adds support for the "DUAL250E" HID. Unfortunately we need some more special handling though, which the rest of the patches are for. On Windows both accelerometers are read (polled) by a special service and this service calls a DSM (Device Specific Method), which in turn translates the angles to one of laptop/tablet/tent/stand mode and then notifies the EC about the new mode and the EC then enables or disables the builtin keyboard and touchpad based in the mode. When the 2-in-1 is powered-on or resumed folded in tablet mode the EC senses this independent of the DSM by using a HALL effect sensor which senses that the keyboard has been folded away behind the display. At power-on or resume the EC disables the keyboard based on this and the only way to get the keyboard to work after this is to call the DSM to re-enable it (similar to how we also need to call a special DSM in the kxcjk-1013.c accel driver to re-enable the keyboard). Patches 5-7 deal with the DSM mess and patch 8 adds labels to the 2 accelerometers specifying which one is which. Regards, Hans Hans de Goede (8): iio: accel: bmc150: Fix dereferencing the wrong pointer in bmc150_get/set_second_device iio: accel: bmc150: Don't make the remove function of the second accelerometer unregister itself iio: accel: bmc150: Move check for second ACPI device into a separate function iio: accel: bmc150: Add support for dual-accelerometers with a DUAL250E HID iio: accel: bmc150: Move struct bmc150_accel_data definition to bmc150-accel.h iio: accel: bmc150: Remove bmc150_set/get_second_device() accessor functions iio: accel: bmc150: Add support for DUAL250E ACPI DSM for setting the hinge angle iio: accel: bmc150: Set label based on accel-location for ACPI DUAL250E fwnodes drivers/iio/accel/bmc150-accel-core.c | 87 ++---------- drivers/iio/accel/bmc150-accel-i2c.c | 192 +++++++++++++++++++++----- drivers/iio/accel/bmc150-accel.h | 66 ++++++++- 3 files changed, 239 insertions(+), 106 deletions(-) -- 2.31.1
WARNING: multiple messages have this Message-ID (diff)
From: Hans de Goede <hdegoede@redhat.com> To: Jonathan Cameron <jic23@kernel.org>, Liam Girdwood <lgirdwood@gmail.com>, Mark Brown <broonie@kernel.org> Cc: alsa-devel@alsa-project.org, Lars-Peter Clausen <lars@metafoo.de>, Charles Keepax <ckeepax@opensource.cirrus.com>, linux-iio@vger.kernel.org, patches@opensource.cirrus.com, Jeremy Cline <jeremy@jcline.org>, Hans de Goede <hdegoede@redhat.com> Subject: [PATCH 0/8] iio: accel: bmc150: Add support for yoga's with dual accelerometers with an ACPI HID of DUAL250E Date: Fri, 21 May 2021 19:14:10 +0200 [thread overview] Message-ID: <20210521171418.393871-1-hdegoede@redhat.com> (raw) Hi All, Some 360 degree hinges (yoga) style 2-in-1 devices use 2 bmc150 accels to allow the OS to determine the angle between the display and the base of the device, so that the OS can determine if the 2-in-1 is in laptop or in tablet-mode. We already support this setup on devices using a single ACPI node with a HID of "BOSC0200" to describe both accelerometers. This patch set extends this support to also support the same setup but then using a HID of "DUAL250E". While testing this I found some crashes on rmmod, patches 1-2 fix those patches, patch 3 does some refactoring and patch 4 adds support for the "DUAL250E" HID. Unfortunately we need some more special handling though, which the rest of the patches are for. On Windows both accelerometers are read (polled) by a special service and this service calls a DSM (Device Specific Method), which in turn translates the angles to one of laptop/tablet/tent/stand mode and then notifies the EC about the new mode and the EC then enables or disables the builtin keyboard and touchpad based in the mode. When the 2-in-1 is powered-on or resumed folded in tablet mode the EC senses this independent of the DSM by using a HALL effect sensor which senses that the keyboard has been folded away behind the display. At power-on or resume the EC disables the keyboard based on this and the only way to get the keyboard to work after this is to call the DSM to re-enable it (similar to how we also need to call a special DSM in the kxcjk-1013.c accel driver to re-enable the keyboard). Patches 5-7 deal with the DSM mess and patch 8 adds labels to the 2 accelerometers specifying which one is which. Regards, Hans Hans de Goede (8): iio: accel: bmc150: Fix dereferencing the wrong pointer in bmc150_get/set_second_device iio: accel: bmc150: Don't make the remove function of the second accelerometer unregister itself iio: accel: bmc150: Move check for second ACPI device into a separate function iio: accel: bmc150: Add support for dual-accelerometers with a DUAL250E HID iio: accel: bmc150: Move struct bmc150_accel_data definition to bmc150-accel.h iio: accel: bmc150: Remove bmc150_set/get_second_device() accessor functions iio: accel: bmc150: Add support for DUAL250E ACPI DSM for setting the hinge angle iio: accel: bmc150: Set label based on accel-location for ACPI DUAL250E fwnodes drivers/iio/accel/bmc150-accel-core.c | 87 ++---------- drivers/iio/accel/bmc150-accel-i2c.c | 192 +++++++++++++++++++++----- drivers/iio/accel/bmc150-accel.h | 66 ++++++++- 3 files changed, 239 insertions(+), 106 deletions(-) -- 2.31.1
next reply other threads:[~2021-05-21 17:14 UTC|newest] Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-05-21 17:14 Hans de Goede [this message] 2021-05-21 17:14 ` [PATCH 0/8] iio: accel: bmc150: Add support for yoga's with dual accelerometers with an ACPI HID of DUAL250E Hans de Goede 2021-05-21 17:14 ` [PATCH 1/8] iio: accel: bmc150: Fix dereferencing the wrong pointer in bmc150_get/set_second_device Hans de Goede 2021-05-21 17:14 ` Hans de Goede 2021-05-21 17:14 ` [PATCH 2/8] iio: accel: bmc150: Don't make the remove function of the second accelerometer unregister itself Hans de Goede 2021-05-21 17:14 ` Hans de Goede 2021-05-22 18:06 ` Andy Shevchenko 2021-05-22 18:06 ` Andy Shevchenko 2021-05-22 18:10 ` Hans de Goede 2021-05-22 18:10 ` Hans de Goede 2021-05-21 17:14 ` [PATCH 3/8] iio: accel: bmc150: Move check for second ACPI device into a separate function Hans de Goede 2021-05-21 17:14 ` Hans de Goede 2021-05-22 17:37 ` Jonathan Cameron 2021-05-22 17:37 ` Jonathan Cameron 2021-05-22 17:39 ` Hans de Goede 2021-05-22 17:39 ` Hans de Goede 2021-05-22 18:09 ` Andy Shevchenko 2021-05-22 18:09 ` Andy Shevchenko 2021-05-22 18:57 ` Hans de Goede 2021-05-22 18:57 ` Hans de Goede 2021-05-21 17:14 ` [PATCH 4/8] iio: accel: bmc150: Add support for dual-accelerometers with a DUAL250E HID Hans de Goede 2021-05-21 17:14 ` Hans de Goede 2021-05-22 17:43 ` Jonathan Cameron 2021-05-22 17:43 ` Jonathan Cameron 2021-05-22 17:44 ` Hans de Goede 2021-05-22 17:44 ` Hans de Goede 2021-05-22 17:56 ` Jonathan Cameron 2021-05-22 17:56 ` Jonathan Cameron 2021-05-22 18:11 ` Andy Shevchenko 2021-05-22 18:11 ` Andy Shevchenko 2021-05-22 18:59 ` Hans de Goede 2021-05-22 18:59 ` Hans de Goede 2021-05-21 17:14 ` [PATCH 5/8] iio: accel: bmc150: Move struct bmc150_accel_data definition to bmc150-accel.h Hans de Goede 2021-05-21 17:14 ` Hans de Goede 2021-05-21 17:14 ` [PATCH 6/8] iio: accel: bmc150: Remove bmc150_set/get_second_device() accessor functions Hans de Goede 2021-05-21 17:14 ` Hans de Goede 2021-05-21 17:14 ` [PATCH 7/8] iio: accel: bmc150: Add support for DUAL250E ACPI DSM for setting the hinge angle Hans de Goede 2021-05-21 17:14 ` Hans de Goede 2021-05-22 17:53 ` Jonathan Cameron 2021-05-22 17:53 ` Jonathan Cameron 2021-05-22 18:21 ` Andy Shevchenko 2021-05-22 18:21 ` Andy Shevchenko 2021-05-22 19:02 ` Hans de Goede 2021-05-22 19:02 ` Hans de Goede 2021-05-21 17:14 ` [PATCH 8/8] iio: accel: bmc150: Set label based on accel-location for ACPI DUAL250E fwnodes Hans de Goede 2021-05-21 17:14 ` Hans de Goede 2021-05-22 18:34 ` Andy Shevchenko 2021-05-22 18:34 ` Andy Shevchenko 2021-05-22 19:04 ` Hans de Goede 2021-05-22 19:04 ` Hans de Goede 2021-05-22 18:01 ` [PATCH 0/8] iio: accel: bmc150: Add support for yoga's with dual accelerometers with an ACPI HID of DUAL250E Jonathan Cameron 2021-05-22 18:01 ` Jonathan Cameron 2021-05-22 18:03 ` Andy Shevchenko 2021-05-22 18:03 ` Andy Shevchenko 2021-05-22 18:49 ` Jonathan Cameron 2021-05-22 18:49 ` Jonathan Cameron 2021-05-23 11:05 ` Hans de Goede 2021-05-23 11:05 ` Hans de Goede
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20210521171418.393871-1-hdegoede@redhat.com \ --to=hdegoede@redhat.com \ --cc=alsa-devel@alsa-project.org \ --cc=broonie@kernel.org \ --cc=ckeepax@opensource.cirrus.com \ --cc=jeremy@jcline.org \ --cc=jic23@kernel.org \ --cc=lars@metafoo.de \ --cc=lgirdwood@gmail.com \ --cc=linux-iio@vger.kernel.org \ --cc=patches@opensource.cirrus.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.