craskman, on May 4 2011, 07:54, said:
Great news around here. At least we are moving forward.
Thanks for helping Eduardo (portuguese or spanish? Im portuguese btw, so we shouldn't be that far, corvus as well).
Eduardo, I got from 'somewhere' the datasheet for IT7260, including driver sample code, if you know more about i2c layer, you might me able to go further with this doc.
At linux drivers level I don't know too much, basically I tried to port from .32 kernel and I made some changes because some linux APIs have changed from .32 to .36. I will have a look on your code and I will merge. Though my time is lacking atm.
I was able to "get" a text version of the IT7260 datasheet. It would be great to heve the real PDF, especially the communication diagrams, but, i think i have already figured out the communication details.
What i do suspect is that either the pin muxers or the voltage regulators that power some parts of the Tegra soc are not properly configured for bettlegeuse hardware.
Yesterday i was comparing the pinmux configurations of Ventana, Whistler, Harmony and bettlegeuse, and i think they simply copied the configuration from the Harmony board. But, even if Vega is based on Harmony and/or Ventana, not all pins are used for the same purpose as in those reference designs.
So, basically, what i think right now is that the problems we are all having (ADB not working properly, I2C bus not working properly, could be related to misconfiguration of hardware pins. I don't have the schematics of the Vega, so i can´t easily tell the required configuration, but, what we all have is the Advent vega .32 kernel source code, that we know properly works in the hardware, fully exploiting it.
The .32 kernel is using nvODM (it is a sw layer that isolates differences between operating systems, such as Windows CE or Linux. That nvODM has been modified to match the hw by the Shuttle tablet people, and, unfortunately for us, .36 kernel does not use it anymore. They reimplemented everything without nvODM.
One choice is to report nvODM to .36 kernel, but i don't like that idea, though feasible, it is just wrong. The newer implementation is much better than nvODM and probably more efficient.
The other possibility, is to extract the hw configuration information fron nvODM and plug it into the tables of the .36 kernel. I think that that is the way to go, and i don't think it is too much work.
My assumptions are, that, if we get a working kernel (for example, Motorola Xoom kernel), and modify it to configure vega hw, it will work. The reasoning is that Tegra2 IS a SoC (system on chip). There is no difference between Tegra2 present on Xoom, and Tegra2 present on Vega. The only differences are on the external connections and used peripheral devices.
So, all drivers for internal Tegra2 peripherals that already work well on Xoom (read, USB, i2c, spi, display, hdmi, 3d accelerator...) should work without modifications in the Vega.
We only can run into trouble when the tegra2 has to communicate with external devices (accelerometer, USB connections, SDHC/mmc cards, SDRAM, but not because of the drivers themselves, just because we haven't properly tell the Tegra2 hw to what pins of the SoC those external devices are connected.
So, the first and most important step is to identify all those connections and configure Tegra2. We could also need to tell the power regulator controller to turn on some of those devices. After all that, the remaining things are much easier. Quite in fact, we already have the required drivers in place, and with minor tweaks , we should be able to make them work.
Finally, there is a question on what API to support. If we plan to port honeycomb to Vega, right now we don´t have the source code of HoneyComb. So, the only choice is to make the newly ported vega kernel to export exactly the same interfaces as the , for example, Xoom honeycomb applications expect, so we get our hw recognized and usable. Otherwise, probably there won't be Wifi, 3G, accelerometer, camera, touchscreen, screen, etc, etc. Most of those interfaces are the same between Vega and Xoom (they are default linux interfaces), but perhaps , there are some custom ones ... I haven't checked them all, but most seems to be standard ones, so little problems would be expected.
Well, a lot of things still to check...
BTW: It is not that i have a master degree on linux kernels, but in my previous work a ported linux to some (very similar!) piece of hw as vega (ok, it didn't use a Tegra SoC, but it was a SoC), so, i think a have a relatively good idea on how to proceed
-- Even if not having hw schematics, with some care, .32 kernel could become even a better "hw description" ... It is just a matter of "extracting" the information from nvODM ...