From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andy Shevchenko Subject: Re: [PATCH] serial: Do not treat the IIR register as a bitfield Date: Thu, 30 Mar 2017 12:56:03 +0300 Message-ID: <1490867763.708.62.camel@linux.intel.com> References: <20170329184431.6226-1-oliver@schinagl.nl> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <20170329184431.6226-1-oliver@schinagl.nl> Sender: linux-kernel-owner@vger.kernel.org To: Olliver Schinagl , Greg Kroah-Hartman , Jiri Slaby , Laxman Dewangan , Stephen Warren , Thierry Reding , Alexandre Courbot , "David S . Miller" Cc: dev@linux-sunxi.org, Ed Blake , Alexander Sverdlin , Yegor Yefremov , Wan Ahmad Zainie , Kefeng Wang , Heikki Krogerus , Heiko Stuebner , Jason Uy , Douglas Anderson , Peter Hurley , Tony Lindgren , Vignesh R , Thor Thayer , David Lechner , Jan Kiszka , linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, linux-tegra@vger.kernel.org, sparclinux@vger.kernel.org List-Id: linux-serial@vger.kernel.org On Wed, 2017-03-29 at 20:44 +0200, Olliver Schinagl wrote: > It seems that at some point, someone made the assumption that the UART > Interrupt ID Register was a bitfield and started to check if certain > bits where set. > > Actually however the register contains interrupt ID's where only the > MSB > seems to be used singular and the rest share at least one bit. Thus > doing bitfield operations is wrong. > > This patch cleans up the serial_reg include file by ordering it and > replacing the UART_IIR_ID 'mask' with a proper mask for the register. > The OMAP uart appears to have used the two commonly 'reserved' bits 4 > and 5 and thus get an UART_IIR_EXT_MASK for these two bits. > > This patch then goes over all UART_IIR_* users and changes the code > from > bitfield checking, to ID checking instead. Looking to implementation I would rather go with some helper like int serial_in_IIR(port, [additional mask]) { return port->serial_in(port, UART_IIR) & (_IIR_MASK [| additional mask]); } -- Andy Shevchenko Intel Finland Oy