Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932115AbWHGON6 (ORCPT ); Mon, 7 Aug 2006 10:13:58 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S932116AbWHGON5 (ORCPT ); Mon, 7 Aug 2006 10:13:57 -0400 Received: from gprs189-60.eurotel.cz ([160.218.189.60]:30226 "EHLO spitz.ucw.cz") by vger.kernel.org with ESMTP id S932112AbWHGONl (ORCPT ); Mon, 7 Aug 2006 10:13:41 -0400 Date: Mon, 7 Aug 2006 14:02:23 +0000 From: Pavel Machek To: Shem Multinymous Cc: Robert Love , Jean Delvare , Greg Kroah-Hartman , Alan Cox , linux-kernel@vger.kernel.org, hdaps-devel@lists.sourceforge.net Subject: Re: [PATCH 03/12] hdaps: Unify and cache hdaps readouts Message-ID: <20060807140222.GG4032@ucw.cz> References: <11548492171301-git-send-email-multinymous@gmail.com> <1154849246822-git-send-email-multinymous@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1154849246822-git-send-email-multinymous@gmail.com> User-Agent: Mutt/1.5.9i Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1938 Lines: 51 Hi! > The current hdaps driver queries the hardware on (almost) any sysfs > read, reading just the information it needs and discarding the rest > This is inefficient, because every hardware query actually gives all > information. It also means we're losing data, because readouts are > offered by the hardware at a constant rate and each query "eats up" > a readout. It also results in unnecessarily complex code. > > This patch moves all hardware value reading+parsing to a single > function, __hdaps_update(). All values are cached, and easily > referenced afterwards. This function is still invoked on every sysfs > read. This will be fixed in a later patch. > > Signed-off-by: Shem Multinymous Signed-off-by: Pavel Machek > +/* __hdaps_update - read current state and update global state variables. > + * Also prefetches the next read, to reduce udelay busy-waiting. > + * If fast!=0, do one quick attempt without retries. > + * Caller must hold controller lock. > */ Linuxdoc, please. > + /* Parse position data: */ > + pos_x = *(s16*)(data.val+EC_ACCEL_IDX_XPOS1) * (hdaps_invert?-1:1); > + pos_y = *(s16*)(data.val+EC_ACCEL_IDX_YPOS1) * (hdaps_invert?-1:1); > + > + /* Parse so-called "variance" data: */ > + var_x = *(s16*)(data.val+EC_ACCEL_IDX_XPOS2) * (hdaps_invert?-1:1); > + var_y = *(s16*)(data.val+EC_ACCEL_IDX_YPOS2) * (hdaps_invert?-1:1); Perhaps hdaps_invert should already have 1/-1 values. > { > - int ret = thinkpad_ec_lock(); > + int ret; > + ret = thinkpad_ec_lock(); I actually liked the previous version more, and this change does not really belong here. Pavel -- Thanks for all the (sleeping) penguins. - 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/