[U-Boot] [PATCH] dm: ns16550: Add support for reg-offset property
Derald D. Woods
woods.technical at gmail.com
Mon Feb 29 00:51:46 CET 2016
On 02/28/2016 05:45 PM, Derald D. Woods wrote:
> 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 <sjg at chromium.org>
>>>>>>> wrote:
>>>>>>>> Hi Michal,
>>>>>>>>
>>>>>>>> On 22 February 2016 at 00:40, Michal Simek
>>>>>>>> <michal.simek at xilinx.com> wrote:
>>>>>>>>> On 19.2.2016 21:55, Simon Glass wrote:
>>>>>>>>>> Hi Michal,
>>>>>>>>>>
>>>>>>>>>> On 16 February 2016 at 08:17, Michal Simek
>>>>>>>>>> <michal.simek at xilinx.com> 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 <michal.simek at xilinx.com>
>>>>>>>>>>> ---
>>>>>>>>>>>
>>>>>>>>>>> drivers/serial/ns16550.c | 6 ++++--
>>>>>>>>>>> include/ns16550.h | 1 +
>>>>>>>>>>> 2 files changed, 5 insertions(+), 2 deletions(-)
>>>>>>>>>> Reviewed-by: Simon Glass <sjg at chromium.org>
>>>>>>>>>>
>>>>>>>>>> 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
>
>
The structure initializers need rework for the additional member.
- Derald
More information about the U-Boot
mailing list