• Linus Walleij's avatar
    Input: ads7846 - Convert to use software nodes · 767d8336
    Linus Walleij authored
    The Nokia 770 is using GPIOs from the global numberspace on the
    CBUS node to pass down to the LCD controller. This regresses when we
    let the OMAP GPIO driver use dynamic GPIO base.
    
    The Nokia 770 now has dynamic allocation of IRQ numbers, so this
    needs to be fixed for it to work.
    
    As this is the only user of LCD MIPID we can easily augment the
    driver to use a GPIO descriptor instead and resolve the issue.
    
    The platform data .shutdown() callback wasn't even used in the
    code, but we encode a shutdown asserting RESET in the remove()
    callback for completeness sake.
    
    The CBUS also has the ADS7846 touchscreen attached.
    
    Populate the devices on the Nokia 770 CBUS I2C using software
    nodes instead of platform data quirks. This includes the LCD
    and the ADS7846 touchscreen so the conversion just brings the LCD
    along with it as software nodes is an all-or-nothing design
    pattern.
    
    The ADS7846 has some limited support for using GPIO descriptors,
    let's convert it over completely to using device properties and then
    fix all remaining boardfile users to provide all platform data using
    software nodes.
    
    Dump the of includes and of_match_ptr() in the ADS7846 driver as part
    of the job.
    
    Since we have to move ADS7846 over to obtaining the GPIOs it is
    using exclusively from descriptors, we provide descriptor tables
    for the two remaining in-kernel boardfiles using ADS7846:
    
    - PXA Spitz
    - MIPS Alchemy DB1000 development board
    
    It was too hard for me to include software node conversion of
    these two remaining users at this time: the spitz is using a
    hscync callback in the platform data that would require further
    GPIO descriptor conversion of the Spitz, and moving the hsync
    callback down into the driver: it will just become too big of
    a job, but it can be done separately.
    
    The MIPS Alchemy DB1000 is simply something I cannot test, so take
    the easier approach of just providing some GPIO descriptors in
    this case as I don't want the patch to grow too intrusive.
    
    As we see that several device trees have incorrect polarity flags
    and just expect to bypass the gpiolib polarity handling, fix up
    all device trees too, in a separate patch.
    Suggested-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
    Fixes: 92bf78b3 ("gpio: omap: use dynamic allocation of base")
    Acked-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
    Reviewed-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    767d8336
spitz.c 26.5 KB