This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM1808 UI Board 20x4 Character LCD Support

Other Parts Discussed in Thread: AM1808

Hello,

I am developing using the Zoom AM1808 EVM Development Kit and Davinci PSP SDK 03.20.00.12.  I have a customer who needs a 20x4 character LCD.  I'd like to test this out on the Zoom UI board, but it currently only supports a 24x2 display.  I had the UI board modified to allow connecting an HD44780 compatible 20x4 display.  The display powers up and I'm able to write up to 24 characters per line to the screen (the last four characters wrap around since it is only a 20 column display).  Software seems to be limiting how many characters can be written to the display.

So far I've been unsuccessful in modifying kernel source to support the larger display.  I've been concentrating on /drivers/staging/panel.c and /drivers/staging/parport-da8xx.c, but after some experimentation, I'm not sure what needs to be changed to support the larger display.  Can anyone point me in the right direction where a software change is needed?  Is it even possible to support the larger display?

Matt

  • Hi,

    I assume you have tried modifying the lcd_width and lcd_height module parameters without any success. When we developed the code we only tried with the default 24x2 display which comes with the EVM.

    Also, you can post this question at linux-parport@lists.infradead.org for help.

    Regards, Sudhakar

  • Hi Sudhakar,

    Thanks for the reply.  Yes, I did try modifying the lcd_width and lcd_height parameters.  It seems that these two variables are -1 by default, then during lcd_init(), the variables would get set as follows:

    if(lcd_width < 0)
      lcd_width = 16;
    if(lcd_bwidth < 0)
      lcd_bwidth = 40;
    if(lcd_hwidth < 0)
      lcd_hwidth = 64;
    if(lcd_height < 0)
      lcd_height = 2;

     

    As a test, I took out the conditional statements and just hard-coded the values but did not see different results.  Can you tell me if the function lcd_init() is the only place where these module parameters would be set?  Or is some other software perhaps changing the variables outside of the panel.c file? 

    Based on the HD44780 addressing scheme, I would actually expect to be able to write to the entire 20x4 display without  changing panel.c at all.  However, some logic would have to be added to get the lines to wrap properly.  By default, line 1 wraps to line 3, and line 2 wraps to line 4.  That is just a consequence of the HD44780 addressing.

    One final comment, I am starting to question the integrity of 20x4 lcd screen itself.  At first I thought software must be limiting what could be displayed since the default LCD is 24 characters wide and I seemed to be getting limited to 24 characters.  However, I'm trying to eliminate the possibility that maybe the screen itself is bad and some of the character positions don't light up.  I will update this thread when I'm able to verify that one way or the other.

    Matt

  • Confirmed today that we had a hardware problem - the screen had burned out characters.  I got the old LCD screen replaced and we were able to see characters in all 80 positions on the new 20x4 display.  As noted above, a small bit of logic is necessary in lcd_gotoxy() to map the screen addresses correctly, but that is no big deal now that the screen works.

    Matt

  • Thanks for confirming that it works. This information may be useful for other customers as well.

    Regards, Sudhakar