pwm-bl: regression on all pxa platforms

From: robert.jarzmik@free.fr (Robert Jarzmik)
Date: 2015-09-21 20:41:23
Also in: linux-pwm

Hi Thierry,

Since a bit of time, the PWM backlight based pxa platforms are broken.
All of these platforms rely on a registering such as the one in [1].

At least I think the commit 68feaca0b13e ("backlight: pwm: Handle EPROBE_DEFER
while requesting the PWM") breaks my platforms because :
 (a) no pwm table is added (legacy platforms)
 (b) in this case, in pwm_get(), pmw_lookup_list is empty, and therefore chosen
      == NULL, and therefore pwm_get() returns NULL, and pwm_get() return
      -EPROBE_DEFER
 (c) as a consequence, this code is unreachable in pwm_bl.c :
	if (IS_ERR(pb->pwm)) {
		ret = PTR_ERR(pb->pwm);
		dev_info(&pdev->dev, "%s:%d(): %d\n", __func__, __LINE__, ret);
		if (ret == -EPROBE_DEFER)
			goto err_alloc;

		dev_err(&pdev->dev, "unable to request PWM, trying legacy API\n");
		pb->legacy = true;
		pb->pwm = pwm_request(data->pwm_id, "pwm-backlight");

Could you either revert 68feaca0b13e or find a better solution to repair the
legacy platorms please ?

Cheers.

-- 
Robert

[1] Backlight registration
static struct platform_pwm_backlight_data cm_x300_backlight_data = {
	.pwm_id		= 2,
	.max_brightness	= 100,
	.dft_brightness	= 100,
	.pwm_period_ns	= 10000,
	.enable_gpio	= -1,
};

static struct platform_device cm_x300_backlight_device = {
	.name		= "pwm-backlight",
	.dev		= {
		.parent = &pxa27x_device_pwm0.dev,
		.platform_data	= &cm_x300_backlight_data,
	},
};

static void cm_x300_init_bl(void)
{
	platform_device_register(&cm_x300_backlight_device);
}
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help