From mboxrd@z Thu Jan 1 00:00:00 1970 From: Derald D. Woods Date: Sun, 28 Feb 2016 17:45:42 -0600 Subject: [U-Boot] [PATCH] dm: ns16550: Add support for reg-offset property In-Reply-To: <56D3772E.3060104@suse.de> References: <70bfc564698cfd32c932a382a98321be169ccd87.1455635867.git.michal.simek@xilinx.com> <56CABB54.8070901@xilinx.com> <56CD9351.20802@xilinx.com> <20160225044745.GA25633@exodus> <56CEB72C.6050001@xilinx.com> <20160225133819.GB25633@exodus> <56D3772E.3060104@suse.de> Message-ID: <56D386A6.9070603@gmail.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 02/28/2016 04:39 PM, Alexander Graf wrote: > > > On 02/25/2016 02:38 PM, Derald D. Woods wrote: >> On Thu, Feb 25, 2016 at 09:11:24AM +0100, Michal Simek wrote: >>> On 25.2.2016 05:47, Derald D. Woods wrote: >>>> On Wed, Feb 24, 2016 at 12:26:09PM +0100, Michal Simek wrote: >>>>> On 24.2.2016 11:56, Adam Ford wrote: >>>>>> On Tue, Feb 23, 2016 at 12:38 AM, Simon Glass >>>>>> wrote: >>>>>>> Hi Michal, >>>>>>> >>>>>>> On 22 February 2016 at 00:40, Michal Simek >>>>>>> wrote: >>>>>>>> On 19.2.2016 21:55, Simon Glass wrote: >>>>>>>>> Hi Michal, >>>>>>>>> >>>>>>>>> On 16 February 2016 at 08:17, Michal Simek >>>>>>>>> wrote: >>>>>>>>>> reg-offset is the part of standard 8250 binding in the kernel. >>>>>>>>>> It is shifting start of address space by reg-offset. >>>>>>>>>> On Xilinx platform this offset is typically 0x1000. >>>>>>>>>> >>>>>>>>>> Signed-off-by: Michal Simek >>>>>>>>>> --- >>>>>>>>>> >>>>>>>>>> drivers/serial/ns16550.c | 6 ++++-- >>>>>>>>>> include/ns16550.h | 1 + >>>>>>>>>> 2 files changed, 5 insertions(+), 2 deletions(-) >>>>>>>>> Reviewed-by: Simon Glass >>>>>>>>> >>>>>>>>> Do you support the debug UART feature on your boards? >>>>>>>> yes. I do support it but there you can put just address plus >>>>>>>> offset and >>>>>>>> there is no reason to add one more option to Kconfig. >>>>>>>> But let me know if you think that this is incorrect flow. >>>>>> This patch seems to break my OMAP3 board. Does anyone know if I >>>>>> need >>>>>> to set a certain offset for OMAP3 to make this work (and where is >>>>>> the >>>>>> right place for it) ? >>>>> Are you using DT init? Check your DT description if there is >>>>> reg-offset >>>>> property. I expect if your board worked before and you remove this >>>>> property it will start to work again. >>>>> >>>> I am seeing the same problem with my BeagleBoard Rev. C4. There is >>>> something common, to more than one board, happening with this commit. >>> You should enable debug console and send the log. >>> Do you have enough space for malloc? >>> >> I will have little time this weekend to go further. Some things will >> need to be un-configured to have enough space. I am around 7 KiB over >> with DEBUG enabled. > > I'm not quite sure what exactly is going wrong here - maybe some asm > code is accessing the fields without proper offset generation? > > Either way, the patch below seems to fix the issue for me (on > beaglebone): > > diff --git a/include/ns16550.h b/include/ns16550.h > index 5eeacd6..1311f4c 100644 > --- a/include/ns16550.h > +++ b/include/ns16550.h > @@ -54,9 +54,9 @@ > */ > struct ns16550_platdata { > unsigned long base; > - int reg_offset; > int reg_shift; > int clock; > + int reg_offset; > }; > > struct udevice; > I see the following grep results: $ grep -RI -e "const struct ns16550_platdata" . ./arch/arm/cpu/armv7/am33xx/board.c:static const struct ns16550_platdata am33xx_serial[] = { ./arch/arm/cpu/arm926ejs/lpc32xx/devices.c:static const struct ns16550_platdata lpc32xx_uart[] = { ./board/timll/devkit8000/devkit8000.c:static const struct ns16550_platdata devkit8000_serial = { ./board/ti/beagle/beagle.c:static const struct ns16550_platdata beagle_serial = { ./board/logicpd/zoom1/zoom1.c:static const struct ns16550_platdata zoom1_serial = { ./board/logicpd/omap3som/omap3logic.c:static const struct ns16550_platdata omap3logic_serial = { ./board/quipos/cairo/cairo.c:static const struct ns16550_platdata cairo_serial = { ./board/lge/sniper/sniper.c:static const struct ns16550_platdata serial_omap_platdata = { ./board/isee/igep00x0/igep00x0.c:static const struct ns16550_platdata igep_serial = { ./board/overo/overo.c:static const struct ns16550_platdata overo_serial = { Could the use of 'const' be a part of the problem? - Derald