[Hero CDMA Android Development] maejrep:
Then don't modify GPL'ed work. Honestly, whatever "ticks you off" is irrelevant. We aren't asking HTC to be nice so we can go play with it. We're informing HTC that they don't have a choice. My job is in web development as well, so I know fully what you're talking about. But guess what: my work is proprietary, not licensed under the GPL. All I'm saying is we aren't doing this to beat up on HTC. They decided to put the kernel binary on their phone and distribute it. International copyright law says you can't distribute someone else's work without permission from the original creator. The original creators all said implicitly "you already have my permission to redistribute this, IF AND ONLY IF you agree to abide by the GPL". By not abiding by the GPL, they have no license to distribute (that is, no permission). By distributing someone else's work without permission, they're in violation of the copyright. So please stop trying to think that we're bullying HTC. They have no choice in the matter (well, they could choose to stop selling and distributing the devices, but that's bad for business).

Yeah I've tried it. The GSM source code contains some references to the CDMA hero, but is missing very important files (like board-heroc.c, which acts as the glue to piece together all the individual bits of hardware and tell the kernel what drivers to use for what pieces of hardware). The GSM version is named "hero", and uses a board file named "board-hero.c". The CDMA version is named "heroc", thus requires "board-heroc.c". That file is missing, and we need that file to be able to tell the kernel how to use the hardware (i.e., memory addresses, i2c chip addresses, shared memory segments, ...) There are other things missing too -- mostly drivers that are mentioned in our config.gz (which you've already looked into), and exist inside the Makefiles, but are missing in Kconfig, or the files are missing all together. Basically they had already added the CDMA hero support into their kernel branch before they released the source code, but for one reason or another decided to yank all the "HEROC"-specific references (as well as for other devices: HEROCT, NEONC, DESIREC, etc). Some of those missing drivers are for other phones, not ours, so less of an issue. Another useful comparison is looking at the diff between System.map from a kernel that has the CDMA board files copied from the GSM files (and makefiles fixed), and /proc/kallsyms. There's not a lot of functionality that is missing (and most of it is based on the other phones that we aren't interested in), which means the only reason it doesn't boot is something else in the board file -- probably a memory address, or buffer size, or something like that.

As for modules, it's actually *better* to have what you need compiled into the kernel, not as modules. Allowing portable modules actually bloats the kernel. When you know you have the hardware, what's the point in using external modules? :) That said, our kernel actually does have support for modules, but the only module that we use on the phone is wlan.ko, for wifi.

And you wouldn't ever be able to match md5 of a freshly compiled kernel with the md5 of the kernel on the device, because a) compile dates, username, hostnames, toolchain versions, etc, all go into the kernel; every recompile is guaranteed to change the binary output, even if no source code changed. and b) the kernel on our device actually has support for other phones which we obviously still have no kernel source for (some haven't been sold yet, so they're not obligated to release the source yet)