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?


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 :)

  • \$\begingroup\$ I agree that you can't copyright facts, though you can copyright a presentation of facts. More importantly, they're not copyrighted, they're licensed. \$\endgroup\$ – Kevin Vermeer Mar 31 '11 at 16:10
  • 3
    \$\begingroup\$ A license implies copyright (or trademark or patent). If the files are not copyrighted, then no license would be needed. \$\endgroup\$ – markrages Mar 31 '11 at 17:04
  • \$\begingroup\$ A license implies nothing of the sort - it's simply an agreement between two parties. While licenses such as GPL deal with restrictions and agreements on copyrighted materials it's not a necessary condition. \$\endgroup\$ – AngryEE Mar 31 '11 at 17:19
  • \$\begingroup\$ @AngryEE - TI and Atmel both have decent licensing/copyright (take your pick, or choose something different) policies, as evidenced by MSPGCC, the Stellaris headers, Atmel's avr-gcc and avr-libc, etc. I guess I'm pointing a finger at Microchip. \$\endgroup\$ – Kevin Vermeer Mar 31 '11 at 17:39
  • 1
    \$\begingroup\$ @AngryEE You are incorrect about this. A copyright/trademark/patent/trade secret creates the prohibition of use. The license is an agreement to remove the prohibition. \$\endgroup\$ – markrages Mar 31 '11 at 20:38

Reverse engineering clauses could apply here but for this you would most likely need to change all the names.

To be fully covered you should manually or automatically rewrite the header file from the datasheet or ask the manufacturer to release an unlicensed header file.

PS. Also (at least in Poland) there is a provision in the copyright law that databases are not covered under copyright.

PS2. This remind me of an unrelated thing with fonts. Font files fall under copyright but the font design itself does not. So you can print the font and legally make a new one from the printout.

  • \$\begingroup\$ IANAL, but the font thing seems like a very similar issue. They've placed a copyright/license on the source code, but I think that means it can be copied out of the datasheet. \$\endgroup\$ – Kevin Vermeer Mar 31 '11 at 16:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.