[U-Boot] Using U-Boot in a mixed licensed environment

All,
My question stems from building a "standalone" application for U-Boot with code that has conflicting licenses with GPL v2. The COPYING file states that if I used the standard jump table then the standalone application will not fall under GPL v2. However if I want to expand the functionality that a can be leveraged by a standalone application I have three options. I suspect that option 3 will be the only valid option but I wanted to get your comments on the options.
Option 1: Expand the jump table to include IO functions for networking and flash/drive access. Would expanding the jump table functionality mean that the COPYING statement be invalid since the jump table support has expand beyond the original scope and thus fall under GPL v2?
Option 2: Use the api interface (api_public.h) with my application linked into U-Boot. The api_public.h terms are BSD or GPL v2, by using BSD license it removes the GPL v2 from this header file and interface. However since the COPYING file does not list the API interface as an exemption; not falling under the heading of a derived work. I suspect that using the API interface and linking the standalone code with U-Boot would cause all of the code to fall under GPL v2. Is this a correct assumption?
Option 3: Have U-Boot read the application image from flash into memory then jump to the code. This would follow the same logic as boot linux or any other image. Just load and jump into the new code. The application would not leverage any U-Boot code. The Network and Flash support would have to be added to the application using BSD or other non-GPL code. This seems to be the best way to avoid the GPL v2 issue; unless one of the other options proves valid.
Thanks, Stephen

Dear Stephen Baker,
In message CAChidSLWXW=oo0GCyjohGDNRXrsvK9q8bNV2B8kSHnxRMxc5iQ@mail.gmail.com you wrote:
Option 1: Expand the jump table to include IO functions for networking and flash/drive access. Would expanding the jump table functionality mean that the COPYING statement be invalid since the jump table support has expand beyond the original scope and thus fall under GPL v2?
The jump table is restricted on purpose. If you extend it, your standalone code will have to be released under GPL.
Option 2: Use the api interface (api_public.h) with my application linked into U-Boot. The api_public.h terms are BSD or GPL v2, by using BSD license it removes the GPL v2 from this header file and interface. However since the COPYING file does not list the API interface as an exemption; not falling under the heading of a derived work. I suspect that using the API interface and linking the standalone code with U-Boot would cause all of the code to fall under GPL v2. Is this a correct assumption?
IIUC the intention of the API was to allow for closed source implementations, but I am not a lawyer and I don't know if this actually works this way. You probably should get legal advice on that.
Option 3: Have U-Boot read the application image from flash into memory then jump to the code. This would follow the same logic as boot linux or any other image. Just load and jump into the new code. The application would not leverage any U-Boot code. The Network and Flash support would have to be added to the application using BSD or other non-GPL code. This seems to be the best way to avoid the GPL v2 issue; unless one of the other options proves valid.
This is indeed a possible approach.
But you forget option 4: just release your code under GPL.
Best regards,
Wolfgang Denk
participants (2)
-
Stephen Baker
-
Wolfgang Denk