diff options
3 files changed, 9 insertions, 7 deletions
diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-rb750.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-rb750.c index bcd961e1b..4ef1b10d3 100644 --- a/target/linux/ar71xx/files/arch/mips/ath79/mach-rb750.c +++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-rb750.c @@ -47,11 +47,7 @@ static struct rb750_led_data rb750_leds[] = {  	}  }; -static struct rb750_led_platform_data rb750_leds_data = { -	.num_leds	= ARRAY_SIZE(rb750_leds), -	.leds		= rb750_leds, -}; - +static struct rb750_led_platform_data rb750_leds_data;  static struct platform_device rb750_leds_device = {  	.name	= "leds-rb750",  	.dev	= { @@ -155,6 +151,9 @@ static void __init rb750_setup(void)  	/* WAN port */  	ath79_register_eth(0); +	rb750_leds_data.num_leds = ARRAY_SIZE(rb750_leds); +	rb750_leds_data.leds = rb750_leds; +	rb750_leds_data.latch_change = rb750_nand_latch_change;  	platform_device_register(&rb750_leds_device);  	rb750_nand_data.nce_line = RB750_NAND_NCE; diff --git a/target/linux/ar71xx/files/arch/mips/include/asm/mach-ath79/mach-rb750.h b/target/linux/ar71xx/files/arch/mips/include/asm/mach-ath79/mach-rb750.h index 9509fca71..19d7a1212 100644 --- a/target/linux/ar71xx/files/arch/mips/include/asm/mach-ath79/mach-rb750.h +++ b/target/linux/ar71xx/files/arch/mips/include/asm/mach-ath79/mach-rb750.h @@ -60,6 +60,7 @@ struct rb750_led_data {  struct rb750_led_platform_data {  	int			num_leds;  	struct rb750_led_data	*leds; +	void			(*latch_change)(u32 clear, u32 set);  };  struct rb7xx_nand_platform_data { diff --git a/target/linux/ar71xx/files/drivers/leds/leds-rb750.c b/target/linux/ar71xx/files/drivers/leds/leds-rb750.c index 40469444f..483e4fc96 100644 --- a/target/linux/ar71xx/files/drivers/leds/leds-rb750.c +++ b/target/linux/ar71xx/files/drivers/leds/leds-rb750.c @@ -23,6 +23,7 @@ struct rb750_led_dev {  	struct led_classdev	cdev;  	u32			mask;  	int			active_low; +	void			(*latch_change)(u32 clear, u32 set);  };  struct rb750_led_drvdata { @@ -46,9 +47,9 @@ static void rb750_led_brightness_set(struct led_classdev *led_cdev,  	level ^= rbled->active_low;  	if (level) -		rb750_latch_change(0, rbled->mask); +		rbled->latch_change(0, rbled->mask);  	else -		rb750_latch_change(rbled->mask, 0); +		rbled->latch_change(rbled->mask, 0);  }  static int __devinit rb750_led_probe(struct platform_device *pdev) @@ -82,6 +83,7 @@ static int __devinit rb750_led_probe(struct platform_device *pdev)  		rbled->mask = led_data->mask;  		rbled->active_low = !!led_data->active_low; +		rbled->latch_change = pdata->latch_change;  		ret = led_classdev_register(&pdev->dev, &rbled->cdev);  		if (ret)  | 
