Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756295AbbGGHdu (ORCPT ); Tue, 7 Jul 2015 03:33:50 -0400 Received: from mx02.posteo.de ([89.146.194.165]:36849 "EHLO mx02.posteo.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753097AbbGGHdm (ORCPT ); Tue, 7 Jul 2015 03:33:42 -0400 Message-ID: <559B808B.30806@posteo.de> Date: Tue, 07 Jul 2015 09:32:27 +0200 From: Martin Kepplinger User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Icedove/31.7.0 MIME-Version: 1.0 To: Jonathan Cameron , Martin Fuzzey , Jonathan Cameron , knaack.h@gmx.de, lars@metafoo.de, pmeerw@pmeerw.net, roberta.dobrescu@gmail.com, christoph.muellner@theobroma-systems.com CC: linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Martin Kepplinger Subject: Re: [PATCH 7/9] iio: mma8452: change iio event type to IIO_EV_TYPE_MAG References: <1436018110-3903-1-git-send-email-martink@posteo.de> <1436018110-3903-8-git-send-email-martink@posteo.de> <559919F5.8070107@kernel.org> <559A3EB0.2060200@parkeon.com> In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 4879 Lines: 132 Am 2015-07-07 um 09:05 schrieb Jonathan Cameron: > > > On 6 July 2015 09:39:12 BST, Martin Fuzzey wrote: >> On 05/07/15 13:50, Jonathan Cameron wrote: >>> On 04/07/15 14:55, Martin Kepplinger wrote: >>>> IIO_EV_TYPE_THRESH in rising direction describes an event where the >>>> threshold is crossed in rising direction, positive or negative >> values >>>> being possible. This is not the case here. >>>> >>>> Since the threshold is no signed value and only the magnitude is >> compared, >>>> IIO_EV_TYPE_MAG is what describes the behaviour of these devices, >> see the >>>> sysfs-bus-iio ABI Documentation. >> >> Fwiw there was some discussion of this before the initial submission: >> >> http://www.spinics.net/lists/linux-iio/msg14039.html >> >> Initially I used a magnitude too but Jonathan convinced me it should be >> >> a threshold. >> >> " >> >> The moment you know the sign of the magnitude it stops being a >> magnitude >> and becomes a generic threshold. Report it as such and control it as >> such. >> >> " >> >> Thing is that the hardware indeed only compares the absolute value for >> the threshold *but* indicates with the event the sign. >> However it is true that the driver doesn't currently do anything with >> the sign information. > Ah. That explains the confusion. > This is a common enough case. > Usual approach is the slightly hacky option of having two threshold events. Setting limit on either effects both. > Enabling either effects both (or you can eat the wrong one in driver if you prefer > when only one is enabled) I tried to implement THRESH somehow but it gets too messy. Yes, what you *can* read for an event is positive or negative acceleration value (g, whatever). But, say, positive g doesn't at all indicate THRESH RISING . It could be negative g in freefall mode on one axis, and so on... So the sign of the current value doesn't help you turning MAG into TRESH. Really I think, MAG is what describes these devices. >> >> >>>> Signed-off-by: Martin Kepplinger >> >>>> Signed-off-by: Christoph Muellner >> >>> This is a fix and so should have been the first patch in the series. >> It will >>> want to go via a different tree (iio-fixes) and probably be marked >> for stable. >>> >>> I would however like Peter's ack on this as well before taking it. >>>> --- >>>> drivers/iio/accel/mma8452.c | 10 +++++----- >>>> 1 file changed, 5 insertions(+), 5 deletions(-) >>>> >>>> diff --git a/drivers/iio/accel/mma8452.c >> b/drivers/iio/accel/mma8452.c >>>> index 7f6e3b4..e23ebd0 100644 >>>> --- a/drivers/iio/accel/mma8452.c >>>> +++ b/drivers/iio/accel/mma8452.c >>>> @@ -598,21 +598,21 @@ static void mma8452_transient_interrupt(struct >> iio_dev *indio_dev) >>>> if (src & data->chip_info->ev_src_xe) >>>> iio_push_event(indio_dev, >>>> IIO_MOD_EVENT_CODE(IIO_ACCEL, 0, IIO_MOD_X, >>>> - IIO_EV_TYPE_THRESH, >>>> + IIO_EV_TYPE_MAG, >>>> IIO_EV_DIR_RISING), >>>> ts); >>>> >>>> if (src & data->chip_info->ev_src_ye) >>>> iio_push_event(indio_dev, >>>> IIO_MOD_EVENT_CODE(IIO_ACCEL, 0, IIO_MOD_Y, >>>> - IIO_EV_TYPE_THRESH, >>>> + IIO_EV_TYPE_MAG, >>>> IIO_EV_DIR_RISING), >>>> ts); >>>> >>>> if (src & data->chip_info->ev_src_ze) >>>> iio_push_event(indio_dev, >>>> IIO_MOD_EVENT_CODE(IIO_ACCEL, 0, IIO_MOD_Z, >>>> - IIO_EV_TYPE_THRESH, >>>> + IIO_EV_TYPE_MAG, >>>> IIO_EV_DIR_RISING), >>>> ts); >>>> } >>>> @@ -689,7 +689,7 @@ static int mma8452_reg_access_dbg(struct iio_dev >> *indio_dev, >>>> >>>> static const struct iio_event_spec mma8452_transient_event[] = { >>>> { >>>> - .type = IIO_EV_TYPE_THRESH, >>>> + .type = IIO_EV_TYPE_MAG, >>>> .dir = IIO_EV_DIR_RISING, >>>> .mask_separate = BIT(IIO_EV_INFO_ENABLE), >>>> .mask_shared_by_type = BIT(IIO_EV_INFO_VALUE) | >>>> @@ -700,7 +700,7 @@ static const struct iio_event_spec >> mma8452_transient_event[] = { >>>> >>>> static const struct iio_event_spec mma8452_motion_event[] = { >>>> { >>>> - .type = IIO_EV_TYPE_THRESH, >>>> + .type = IIO_EV_TYPE_MAG, >>>> .dir = IIO_EV_DIR_RISING, >>>> .mask_separate = BIT(IIO_EV_INFO_ENABLE), >>>> .mask_shared_by_type = BIT(IIO_EV_INFO_VALUE) | >>>> >> >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-iio" in >> the body of a message to majordomo@vger.kernel.org >> More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/