Good News Everyone!
I have a correctly working backlight on my Ideapad Y510! ...
This has been achieved by using a custom DSDT, and nothing else, no fiddling with ACPI or HAL or anything like that.
After days of trawling and scrolling through the original DSDT I finally figured out that the Lenovo emedded controller seems to be expecting some specific input values, and that there seemed to be a slight mistake in the "Package" of values returned by the _BCL AML method. Additionally ACPI as bundled with Ubuntu and the Kernel at the moment, expects the values to be in the correct order, i.e. <value when on AC>, <value when on Battery>, val0, val1, val2 ...etc the most important thing to note is that ACPI at the moment does not appear to sort the values, and assumes that they are from lowest to highest. In the case of the Ideapad they seem to have been reversed.
I have attached the DSDT.dsl in BZIP2 format to this post for those who want to give this a go.
You will obviously need the Intel ASL compiler:
To compile the DSDT just run:
sudo apt-get install iasl
Once it's compiled put it into the initramfs-tools directory under /etc:
You might need to install the initramfs-tools package
sudo cp DSDT.aml /etc/initramfs-tools/
and then finally regenerate the initrd image
sudo apt-get install initramfs-tools
reboot the machine and then give it a go...
sudo mkinitramfs -o /boot/initrd.img-`uname -r`
Please test this and let me know if anyone is experiencing any other difficulties...