Electronic – Avoiding copyright violations when writing header files

legal

Many manufacturers apply licenses to the header files they publish for their products. These files usually consist of a long list of #defines which are a correlation between the names and adjacent numbers in the datasheets.

If I want to produce a driver or other software solution which is free of these license restrictions, will using the same names in my header file be valid? Am I allowed to copy the #defines straight out of the license file? Does it matter whether I type it out by hand from the datasheet or programmatically access the .pdf file or other data structure containing this information? (the datasheet isn't covered by the license.)

I'll assume that I need to leave licensed macros, functions, comments, and all other information outside of the #defines behind, but do I need to do more, like use a common prefix for these names (which I might do anyways to avoid namespace conflicts) or come up with my own acronyms/abbreviations? Do I have to reverse-engineer the registers without looking at the datasheet? Or is it completely impossible to produce a copyleft header file?

Best Answer

The defines for things like hardware addresses are fundamentally facts and facts can't be copyrighted. I might like to change the format of the defines for my own purposes but there's absolutely no way you can get by without using those values. The only thing you can do is change the name of the define which would be a simple search and replace - not much effort if you do plan to do it.

Chip manufacturers generally want you to use their chips and do a lot to ensure that you can. If they prevented you from using the register definitions in any reasonable way then no one would use their chips.

EDIT: After discussion I don't believe that I actually answered the question with regards to license-free implementations of header files. I decided to do some digging and the MSPGCC project seemed to be a good place to start. Turns out they (basically) use the TI-provided headers for each device (rewritten to their formatting and maintainability standards). The headers don't seem to have a license included or stated in the header file, nor could I find any licensing information. The only documentation I found was a description of where the headers came from and how/why they were modified. They do say that the files are created such that the register definitions match the names in the datasheet, so theoretically you could recreate it from the datasheet.

I took a look at one TI datasheet I have an didn't find any licensing info - just a copyright notice which applies to the document as a whole (so I assume).

Thus, I've come to the conclusion that it is NOT permissible to take a licensed file, strip out parts and release it under a different license. You should start from a blank file and implement a header as per the description in the chip datasheet (after ensuring there's no license attached to it, but if TI doesn't do it I doubt others will). Alternately, if there's no license attached to the released chip-specific header files, use the hell out of them instead :)