Message ID | 55D25A60.7000900@tul.cz (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Petr Cvek <petr.cvek@tul.cz> writes:
> Add support for alternative LCD backlight with GPIO (no brightness).
Here, I don't understand, the commit message is too short.
Are there 2 brightness controls on magician, or are these 2 different magicians
(hardware wise), each having a different backlight control ? Or is it there is a
GPIO to light up the screen and a PWM backlight ?
I have to understand first.
Cheers.
--
Robert
Dne 20.8.2015 v 22:01 Robert Jarzmik napsal(a): > Petr Cvek <petr.cvek@tul.cz> writes: > >> Add support for alternative LCD backlight with GPIO (no brightness). > Here, I don't understand, the commit message is too short. > > Are there 2 brightness controls on magician, or are these 2 different magicians > (hardware wise), each having a different backlight control ? Or is it there is a > GPIO to light up the screen and a PWM backlight ? > > I have to understand first. > I have aimed for a configuration, where user can use PWM xor GPIO backlight. As pin mux can set GPIO or PWM (or UART :-D) on PWM pin, you can choose if you spare few kB (as magician has only 64MB RAM and 64MB flash) on GPIO or will have smooth backlight with PWM. I have tested both (I think I have added the gpio backlight for debugging a regression in pwm_bl). Only ugly thing is the GPIO definition: #if IS_ENABLED(CONFIG_PWM_PXA) /* PWM 0 - LCD backlight */ GPIO16_PWM0_OUT, #else /* Ensure static backlight without any driver */ MFP_CFG_OUT(GPIO16, AF0, DRIVE_LOW), /* Backlight enabled */ #endif Hmmm.. I think I can do this better in pwm-backlight init/exit (same way as pxa_ficp). During init the pin mux will switch to Alternate Function (PWM) and during exit it will switch to GPIO (which can be used by gpio-backlight). This will remove ugly ifdef. Best regards, Petr
Petr Cvek <petr.cvek@tul.cz> writes: > Dne 20.8.2015 v 22:01 Robert Jarzmik napsal(a): >> Petr Cvek <petr.cvek@tul.cz> writes: >> >>> Add support for alternative LCD backlight with GPIO (no brightness). >> Here, I don't understand, the commit message is too short. >> >> Are there 2 brightness controls on magician, or are these 2 different magicians >> (hardware wise), each having a different backlight control ? Or is it there is a >> GPIO to light up the screen and a PWM backlight ? >> >> I have to understand first. >> > I have aimed for a configuration, where user can use PWM xor GPIO backlight. You probably know that in a backlight case GPIO is just a subcase of PWM, with frequency equal to either 0 or max_backlight_freq. > As pin mux can set GPIO or PWM (or UART :-D) on PWM pin, you can choose if you > spare few kB (as magician has only 64MB RAM and 64MB flash) on GPIO or will > have smooth backlight with PWM. I'm in front of the same dilemna for 5 years ago with the mioa701 (64MB RAM, 2 * 32MB flash). I chose PWM, judging the PWM stack was worth it. Moreover, pwm can be a module, loaded or not : what memory do you spare in that case if you don't load the module ? > I have tested both (I think I have added the gpio backlight for debugging a regression in pwm_bl). > Only ugly thing is the GPIO definition: > > #if IS_ENABLED(CONFIG_PWM_PXA) > /* PWM 0 - LCD backlight */ > GPIO16_PWM0_OUT, > #else > /* Ensure static backlight without any driver */ > MFP_CFG_OUT(GPIO16, AF0, DRIVE_LOW), /* Backlight enabled */ > #endif > > Hmmm.. I think I can do this better in pwm-backlight init/exit (same way as > pxa_ficp). During init the pin mux will switch to Alternate Function (PWM) and > during exit it will switch to GPIO (which can be used by gpio-backlight). This > will remove ugly ifdef. I don't like changing the muxing after initialization that much : the pin muxing should represent what there is in hardware, and that is a backlight frequency switched input pin. The one exception is for hardware workarounds such as the AC97 reset pin. I won't take an init/exit with a manipulation of an mfp. I'll let you choose one way instead : - either the GPIO - or the PWM (module or not) Don't forget that this init/exit thing won't be available for a devicetree magician (if that happens). Cheers.
diff --git a/arch/arm/mach-pxa/magician.c b/arch/arm/mach-pxa/magician.c index 2ec630e..780cc3d 100644 --- a/arch/arm/mach-pxa/magician.c +++ b/arch/arm/mach-pxa/magician.c @@ -102,6 +102,8 @@ #include <mach/udc.h> #include <mach/pxa27x-udc.h> +#include <linux/platform_data/gpio_backlight.h> + #include "devices.h" #include "generic.h" @@ -549,6 +551,21 @@ static struct regulator_consumer_supply pwm_backlight_supply[] = { REGULATOR_SUPPLY("power", "pwm_backlight"), }; +/* Backlight controlled by single GPIO (alternative) */ +static struct gpio_backlight_platform_data gpio_backlight_data = { +/* .fbdev = &pxa_device_fb.dev, */ + .gpio = EGPIO_MAGICIAN_BL_POWER, + .def_value = 1, + .name = "backlight", +}; + +static struct platform_device gpio_backlight = { + .name = "gpio-backlight", + .dev = { + .platform_data = &gpio_backlight_data, + }, +}; + /* * LEDs */ @@ -1269,7 +1286,6 @@ static struct platform_device *devices[] __initdata = { &gpio_keys, &egpio, &strataflash, - &pwm_backlight, &pasic3, &vads7846_device, &bq24022, @@ -1285,6 +1301,10 @@ static struct platform_device *devices[] __initdata = { #if !(IS_ENABLED(CONFIG_USB_PXA27X)) &gpio_vbus, #endif + + /* NOTICE mutually exclusive */ + &pwm_backlight, + &gpio_backlight, }; /*
Add support for alternative LCD backlight with GPIO (no brightness). Signed-off-by: Petr Cvek <petr.cvek@tul.cz> --- arch/arm/mach-pxa/magician.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-)