04 Nov, 2020

13 commits

  • Change the calling interface for gotoxy from supplying the x and y
    coordinates in the charlcd struct to explicitly supplying x and y in
    the function arguments. This is more intuitive and allows for moving
    the cursor to positions independent from the position saved in the
    charlcd struct.

    Reviewed-by: Willy Tarreau
    Signed-off-by: Lars Poeschel
    Signed-off-by: Miguel Ojeda

    Lars Poeschel
     
  • Take the code to redefine characters out of charlcd and move it to
    hd44780_common, as this is hd44780 specific.
    There is now a function hd44780_common_redefine_char that drivers use
    and charlcd calls it through its ops function pointer.

    Reviewed-by: Willy Tarreau
    Signed-off-by: Lars Poeschel
    Signed-off-by: Miguel Ojeda

    Lars Poeschel
     
  • This implements various hd44780_common_ functions for hd44780 compatible
    display drivers to use. charlcd then calls these functions through its
    ops function pointer.
    The functions namely are:
    - hd44780_common_shift_cursor
    - hd44780_common_display_shift
    - hd44780_common_display
    - hd44780_common_cursor
    - hd44780_common_blink
    - hd44780_common_fontsize
    - hd44780_common_lines

    Reviewed-by: Willy Tarreau
    Signed-off-by: Lars Poeschel
    Signed-off-by: Miguel Ojeda

    Lars Poeschel
     
  • The init_display function is moved over to hd44780_common. charlcd uses
    it via its ops function pointer and drivers initialize the ops with the
    common hd44780_common_init_display function.

    Reviewed-by: Willy Tarreau
    Signed-off-by: Lars Poeschel
    Signed-off-by: Miguel Ojeda

    Lars Poeschel
     
  • This moves the clear_display function from charlcd to hd44780_common.
    This is one more step to make charlcd independent from device specific
    code. The two hd44780 drivers use the new function from hd44780_common
    and charlcd calls this function through its function pointer in its ops
    structure.

    Reviewed-by: Willy Tarreau
    Signed-off-by: Lars Poeschel
    Signed-off-by: Miguel Ojeda

    Lars Poeschel
     
  • This adds a home function to the charlcd_ops struct and offer an
    implementation for hd44780_common. This implementation is used by our
    two hd44780 drivers. This is to make charlcd device independent.

    Reviewed-by: Willy Tarreau
    Signed-off-by: Lars Poeschel
    Signed-off-by: Miguel Ojeda

    Lars Poeschel
     
  • Provide a hd44780_common_gotoxy function and a pointer in the ops for
    charlcd to use to move the cursor.

    Reviewed-by: Willy Tarreau
    Signed-off-by: Lars Poeschel
    Signed-off-by: Miguel Ojeda

    Lars Poeschel
     
  • We create a hd44780_common_print function. It is derived from the
    original charlcd_print. charlcd_print becomes a device independent print
    function, that then only calls via its ops function pointers, into the
    print function offered by drivers.

    Reported-by: kernel test robot
    Reviewed-by: Willy Tarreau
    Signed-off-by: Lars Poeschel
    Signed-off-by: Miguel Ojeda

    Lars Poeschel
     
  • The write_cmd function is used to send commands to hd44780 displays.
    The individual hd44780 drivers then implement their appropriate way of
    doing this with their supported displays. So we move this pointer so
    hd44780_common.

    Reviewed-by: Willy Tarreau
    Signed-off-by: Lars Poeschel
    Signed-off-by: Miguel Ojeda

    Lars Poeschel
     
  • This moves the write_data function pointer from struct charlcd_ops to
    struct hd44780_common. This is the function that actually writes the
    character to the display. This hd44780 hardware specific function is
    used by two drivers at the moment.

    Reviewed-by: Willy Tarreau
    Signed-off-by: Lars Poeschel
    Signed-off-by: Miguel Ojeda

    Lars Poeschel
     
  • Move struct charlcd member ifwidth to our new struct hd44780_common.
    ifwidth is hd44780 device specific and is used by two drivers at the
    moment, so we move it to a common place, where both can use this.

    Reviewed-by: Willy Tarreau
    Signed-off-by: Lars Poeschel
    Signed-off-by: Miguel Ojeda

    Lars Poeschel
     
  • hwidth is for the hardware buffer size and bwidth is for the buffer
    width of one single line. This is specific to the hd44780 displays and
    so it is moved out from charlcd to struct hd44780_common.

    Reviewed-by: Willy Tarreau
    Signed-off-by: Lars Poeschel
    Signed-off-by: Miguel Ojeda

    Lars Poeschel
     
  • There is some hd44780 specific code in charlcd and this code is used by
    multiple drivers. To make charlcd independent from this device specific
    code this has to be moved to a place where the multiple drivers can
    share their common code. This common place is now introduced as
    hd44780_common.

    Reviewed-by: Willy Tarreau
    Signed-off-by: Lars Poeschel
    Signed-off-by: Miguel Ojeda

    Lars Poeschel