[Eee Pad Transformer General] sidneyk:
I'll start by saying that I am NOT a programming expert, but having done some programming way, way back, I do understand some of the concepts and have, at least, a basic understanding of things.

First, as far as the Xoom, it is my understanding that it is one of the Google flagship devices and is based on AOSP. If it is using current proprietary bits from nVidia and if nVidia is now unifying those drivers, then they would be getting some of the same bits from nVidia and adding that and bits for other hardware maybe to their AOSP build.

Many companies with diverse hardware now are unifying their drivers when they can or using common code bases where possible. It's about reusing code and not reinventing the wheel. If the rest of their code is written properly then it should only pull in and install the parts needed for the particular device it's running on, i.e. a Tegra 2 device isn't going to pull in Tegra 3 bits unless there is a bug or error somewhere. Just because the code for multiple devices may reside in some installation file somewhere doesn't mean that the bits for different hardware are installed, unless there's an error somewhere. Then, of course, if you're using a driver for the wrong hardware it's going to be problematic.

I don't know what Asus gets from nVidia, i.e. separate drivers per device or unified drivers. It appears to me that they are doing separate ROM (firmware) builds for each device since there are separate downloads for each, else we would just get one file, a one size fits all that would be used across their line of tablets. There has to be at least minor differences, maybe only model numbers, serial numbers, etc. A one size fits all would probably be way too big and need more complex logic to get flashed in Android system. It;s the reason why you aren't going to see a one size fits all release of Win 8 RT for ARM tablets, because it has to be built for each device. Look at Windows. It's kind of one-size-fits-all software package and has to have a very complex setup program that can detect all the different hardware and then pick the right pieces to install. It doesn't install every driver for every device into your system. It may put the files for other devices somewhere, but they're not all installed.

I don't know all the details, but I'm pretty sure that the normal flashing methods that we use with Android and ARM devices is nowhere near as robust as Windows setup program and it's capabilities. We have much more limited storage space and limits on partition sizes. We can, through the flash process push this file here and delete files there and so one and format partitions, but I don't believe the logic and complexity is there to take a one-size-fits-all file and make ll the decisions to pull out and place the correct files after deciding what device it's installing on. We have to have ROMs built for our particular devices and the files have to be already built into the ROM and that ROM is limited in how big it can be, too.

I don't know if Asus starts with builds from nVidia for the actual ROM or if they build their own from source, adding the nVidia and other proprietary hardware bits and adding their own proprietary software packages. I would guess that it's more likely the latter. Sure they use common code where possible, it saves resources. Yes, the kernel source now has parts for both Tegra 2 and Tegra 3 and proably one day will have Tegra 4, 5, 6, etc. If you look at the kernel source you will see that there are many different device files and bits in there. But the kernel build system is very complex and through configuration files and such has the logic and ability to build for what it is told to build, similar to the Windows setup example. A kernel built for Tegra 3 isn't going to work on a Tegra 2 device unless when built it was instructed to build both parts and that's not usually the case with ARM devices, it would probably make the kernel too big.

I would tend to think that Asus' issues, since they affect only some and with different software packages may be more hardware differences and changes made when the devices were manufactured or maybe some defect in how a device was built, maybe something loose or bridged solder joints or something. There could always be variance even when the same parts are used. The silicon used today may be slightly different than the silicon used tomorrow.