License cleanup: add SPDX GPL-2.0 license identifier to files with no license
Many source files in the tree are missing licensing information, which
makes it harder for compliance tools to determine the correct license.
By default all files without license information are under the default
license of the kernel, which is GPL version 2.
Update the files which contain no license information with the 'GPL-2.0'
SPDX license identifier. The SPDX identifier is a legally binding
shorthand, which can be used instead of the full boiler plate text.
This patch is based on work done by Thomas Gleixner and Kate Stewart and
Philippe Ombredanne.
How this work was done:
Patches were generated and checked against linux-4.14-rc6 for a subset of
the use cases:
- file had no licensing information it it.
- file was a */uapi/* one with no licensing information in it,
- file was a */uapi/* one with existing licensing information,
Further patches will be generated in subsequent months to fix up cases
where non-standard license headers were used, and references to license
had to be inferred by heuristics based on keywords.
The analysis to determine which SPDX License Identifier to be applied to
a file was done in a spreadsheet of side by side results from of the
output of two independent scanners (ScanCode & Windriver) producing SPDX
tag:value files created by Philippe Ombredanne. Philippe prepared the
base worksheet, and did an initial spot review of a few 1000 files.
The 4.13 kernel was the starting point of the analysis with 60,537 files
assessed. Kate Stewart did a file by file comparison of the scanner
results in the spreadsheet to determine which SPDX license identifier(s)
to be applied to the file. She confirmed any determination that was not
immediately clear with lawyers working with the Linux Foundation.
Criteria used to select files for SPDX license identifier tagging was:
- Files considered eligible had to be source code files.
- Make and config files were included as candidates if they contained >5
lines of source
- File already had some variant of a license header in it (even if <5
lines).
All documentation files were explicitly excluded.
The following heuristics were used to determine which SPDX license
identifiers to apply.
- when both scanners couldn't find any license traces, file was
considered to have no license information in it, and the top level
COPYING file license applied.
For non */uapi/* files that summary was:
SPDX license identifier # files
---------------------------------------------------|-------
GPL-2.0 11139
and resulted in the first patch in this series.
If that file was a */uapi/* path one, it was "GPL-2.0 WITH
Linux-syscall-note" otherwise it was "GPL-2.0". Results of that was:
SPDX license identifier # files
---------------------------------------------------|-------
GPL-2.0 WITH Linux-syscall-note 930
and resulted in the second patch in this series.
- if a file had some form of licensing information in it, and was one
of the */uapi/* ones, it was denoted with the Linux-syscall-note if
any GPL family license was found in the file or had no licensing in
it (per prior point). Results summary:
SPDX license identifier # files
---------------------------------------------------|------
GPL-2.0 WITH Linux-syscall-note 270
GPL-2.0+ WITH Linux-syscall-note 169
((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) 21
((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) 17
LGPL-2.1+ WITH Linux-syscall-note 15
GPL-1.0+ WITH Linux-syscall-note 14
((GPL-2.0+ WITH Linux-syscall-note) OR BSD-3-Clause) 5
LGPL-2.0+ WITH Linux-syscall-note 4
LGPL-2.1 WITH Linux-syscall-note 3
((GPL-2.0 WITH Linux-syscall-note) OR MIT) 3
((GPL-2.0 WITH Linux-syscall-note) AND MIT) 1
and that resulted in the third patch in this series.
- when the two scanners agreed on the detected license(s), that became
the concluded license(s).
- when there was disagreement between the two scanners (one detected a
license but the other didn't, or they both detected different
licenses) a manual inspection of the file occurred.
- In most cases a manual inspection of the information in the file
resulted in a clear resolution of the license that should apply (and
which scanner probably needed to revisit its heuristics).
- When it was not immediately clear, the license identifier was
confirmed with lawyers working with the Linux Foundation.
- If there was any question as to the appropriate license identifier,
the file was flagged for further research and to be revisited later
in time.
In total, over 70 hours of logged manual review was done on the
spreadsheet to determine the SPDX license identifiers to apply to the
source files by Kate, Philippe, Thomas and, in some cases, confirmation
by lawyers working with the Linux Foundation.
Kate also obtained a third independent scan of the 4.13 code base from
FOSSology, and compared selected files where the other two scanners
disagreed against that SPDX file, to see if there was new insights. The
Windriver scanner is based on an older version of FOSSology in part, so
they are related.
Thomas did random spot checks in about 500 files from the spreadsheets
for the uapi headers and agreed with SPDX license identifier in the
files he inspected. For the non-uapi files Thomas did random spot checks
in about 15000 files.
In initial set of patches against 4.14-rc6, 3 files were found to have
copy/paste license identifier errors, and have been fixed to reflect the
correct identifier.
Additionally Philippe spent 10 hours this week doing a detailed manual
inspection and review of the 12,461 patched files from the initial patch
version early this week with:
- a full scancode scan run, collecting the matched texts, detected
license ids and scores
- reviewing anything where there was a license detected (about 500+
files) to ensure that the applied SPDX license was correct
- reviewing anything where there was no detection but the patch license
was not GPL-2.0 WITH Linux-syscall-note to ensure that the applied
SPDX license was correct
This produced a worksheet with 20 files needing minor correction. This
worksheet was then exported into 3 different .csv files for the
different types of files to be modified.
These .csv files were then reviewed by Greg. Thomas wrote a script to
parse the csv files and add the proper SPDX tag to the file, in the
format that the file expected. This script was further refined by Greg
based on the output to detect more types of files automatically and to
distinguish between header and source .c files (which need different
comment types.) Finally Greg ran the script using the .csv files to
generate the patches.
Reviewed-by: Kate Stewart <kstewart@linuxfoundation.org>
Reviewed-by: Philippe Ombredanne <pombredanne@nexb.com>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2017-11-01 22:07:57 +08:00
|
|
|
/* SPDX-License-Identifier: GPL-2.0 */
|
2005-04-17 06:20:36 +08:00
|
|
|
/****************************************************************************/
|
|
|
|
|
|
|
|
/*
|
|
|
|
* mcfuart.h -- ColdFire internal UART support defines.
|
|
|
|
*
|
|
|
|
* (C) Copyright 1999-2003, Greg Ungerer (gerg@snapgear.com)
|
|
|
|
* (C) Copyright 2000, Lineo Inc. (www.lineo.com)
|
|
|
|
*/
|
|
|
|
|
|
|
|
/****************************************************************************/
|
|
|
|
#ifndef mcfuart_h
|
|
|
|
#define mcfuart_h
|
|
|
|
/****************************************************************************/
|
|
|
|
|
2007-10-24 10:03:56 +08:00
|
|
|
#include <linux/serial_core.h>
|
|
|
|
#include <linux/platform_device.h>
|
|
|
|
|
|
|
|
struct mcf_platform_uart {
|
|
|
|
unsigned long mapbase; /* Physical address base */
|
|
|
|
void __iomem *membase; /* Virtual address if mapped */
|
|
|
|
unsigned int irq; /* Interrupt vector */
|
|
|
|
unsigned int uartclk; /* UART clock rate */
|
|
|
|
};
|
|
|
|
|
2005-04-17 06:20:36 +08:00
|
|
|
/*
|
|
|
|
* Define the ColdFire UART register set addresses.
|
|
|
|
*/
|
|
|
|
#define MCFUART_UMR 0x00 /* Mode register (r/w) */
|
|
|
|
#define MCFUART_USR 0x04 /* Status register (r) */
|
|
|
|
#define MCFUART_UCSR 0x04 /* Clock Select (w) */
|
|
|
|
#define MCFUART_UCR 0x08 /* Command register (w) */
|
|
|
|
#define MCFUART_URB 0x0c /* Receiver Buffer (r) */
|
|
|
|
#define MCFUART_UTB 0x0c /* Transmit Buffer (w) */
|
|
|
|
#define MCFUART_UIPCR 0x10 /* Input Port Change (r) */
|
|
|
|
#define MCFUART_UACR 0x10 /* Auxiliary Control (w) */
|
2008-02-03 23:38:04 +08:00
|
|
|
#define MCFUART_UISR 0x14 /* Interrupt Status (r) */
|
2005-04-17 06:20:36 +08:00
|
|
|
#define MCFUART_UIMR 0x14 /* Interrupt Mask (w) */
|
|
|
|
#define MCFUART_UBG1 0x18 /* Baud Rate MSB (r/w) */
|
|
|
|
#define MCFUART_UBG2 0x1c /* Baud Rate LSB (r/w) */
|
|
|
|
#ifdef CONFIG_M5272
|
|
|
|
#define MCFUART_UTF 0x28 /* Transmitter FIFO (r/w) */
|
|
|
|
#define MCFUART_URF 0x2c /* Receiver FIFO (r/w) */
|
|
|
|
#define MCFUART_UFPD 0x30 /* Frac Prec. Divider (r/w) */
|
2011-12-23 23:23:35 +08:00
|
|
|
#endif
|
|
|
|
#if defined(CONFIG_M5206) || defined(CONFIG_M5206e) || \
|
2012-06-05 23:23:08 +08:00
|
|
|
defined(CONFIG_M5249) || defined(CONFIG_M525x) || \
|
|
|
|
defined(CONFIG_M5307) || defined(CONFIG_M5407)
|
2005-04-17 06:20:36 +08:00
|
|
|
#define MCFUART_UIVR 0x30 /* Interrupt Vector (r/w) */
|
|
|
|
#endif
|
|
|
|
#define MCFUART_UIPR 0x34 /* Input Port (r) */
|
|
|
|
#define MCFUART_UOP1 0x38 /* Output Port Bit Set (w) */
|
|
|
|
#define MCFUART_UOP0 0x3c /* Output Port Bit Reset (w) */
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Define bit flags in Mode Register 1 (MR1).
|
|
|
|
*/
|
|
|
|
#define MCFUART_MR1_RXRTS 0x80 /* Auto RTS flow control */
|
|
|
|
#define MCFUART_MR1_RXIRQFULL 0x40 /* RX IRQ type FULL */
|
|
|
|
#define MCFUART_MR1_RXIRQRDY 0x00 /* RX IRQ type RDY */
|
|
|
|
#define MCFUART_MR1_RXERRBLOCK 0x20 /* RX block error mode */
|
|
|
|
#define MCFUART_MR1_RXERRCHAR 0x00 /* RX char error mode */
|
|
|
|
|
|
|
|
#define MCFUART_MR1_PARITYNONE 0x10 /* No parity */
|
|
|
|
#define MCFUART_MR1_PARITYEVEN 0x00 /* Even parity */
|
|
|
|
#define MCFUART_MR1_PARITYODD 0x04 /* Odd parity */
|
|
|
|
#define MCFUART_MR1_PARITYSPACE 0x08 /* Space parity */
|
|
|
|
#define MCFUART_MR1_PARITYMARK 0x0c /* Mark parity */
|
|
|
|
|
|
|
|
#define MCFUART_MR1_CS5 0x00 /* 5 bits per char */
|
|
|
|
#define MCFUART_MR1_CS6 0x01 /* 6 bits per char */
|
|
|
|
#define MCFUART_MR1_CS7 0x02 /* 7 bits per char */
|
|
|
|
#define MCFUART_MR1_CS8 0x03 /* 8 bits per char */
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Define bit flags in Mode Register 2 (MR2).
|
|
|
|
*/
|
|
|
|
#define MCFUART_MR2_LOOPBACK 0x80 /* Loopback mode */
|
|
|
|
#define MCFUART_MR2_REMOTELOOP 0xc0 /* Remote loopback mode */
|
|
|
|
#define MCFUART_MR2_AUTOECHO 0x40 /* Automatic echo */
|
|
|
|
#define MCFUART_MR2_TXRTS 0x20 /* Assert RTS on TX */
|
|
|
|
#define MCFUART_MR2_TXCTS 0x10 /* Auto CTS flow control */
|
|
|
|
|
|
|
|
#define MCFUART_MR2_STOP1 0x07 /* 1 stop bit */
|
|
|
|
#define MCFUART_MR2_STOP15 0x08 /* 1.5 stop bits */
|
|
|
|
#define MCFUART_MR2_STOP2 0x0f /* 2 stop bits */
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Define bit flags in Status Register (USR).
|
|
|
|
*/
|
|
|
|
#define MCFUART_USR_RXBREAK 0x80 /* Received BREAK */
|
|
|
|
#define MCFUART_USR_RXFRAMING 0x40 /* Received framing error */
|
|
|
|
#define MCFUART_USR_RXPARITY 0x20 /* Received parity error */
|
|
|
|
#define MCFUART_USR_RXOVERRUN 0x10 /* Received overrun error */
|
|
|
|
#define MCFUART_USR_TXEMPTY 0x08 /* Transmitter empty */
|
|
|
|
#define MCFUART_USR_TXREADY 0x04 /* Transmitter ready */
|
|
|
|
#define MCFUART_USR_RXFULL 0x02 /* Receiver full */
|
|
|
|
#define MCFUART_USR_RXREADY 0x01 /* Receiver ready */
|
|
|
|
|
|
|
|
#define MCFUART_USR_RXERR (MCFUART_USR_RXBREAK | MCFUART_USR_RXFRAMING | \
|
|
|
|
MCFUART_USR_RXPARITY | MCFUART_USR_RXOVERRUN)
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Define bit flags in Clock Select Register (UCSR).
|
|
|
|
*/
|
|
|
|
#define MCFUART_UCSR_RXCLKTIMER 0xd0 /* RX clock is timer */
|
|
|
|
#define MCFUART_UCSR_RXCLKEXT16 0xe0 /* RX clock is external x16 */
|
|
|
|
#define MCFUART_UCSR_RXCLKEXT1 0xf0 /* RX clock is external x1 */
|
|
|
|
|
|
|
|
#define MCFUART_UCSR_TXCLKTIMER 0x0d /* TX clock is timer */
|
|
|
|
#define MCFUART_UCSR_TXCLKEXT16 0x0e /* TX clock is external x16 */
|
|
|
|
#define MCFUART_UCSR_TXCLKEXT1 0x0f /* TX clock is external x1 */
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Define bit flags in Command Register (UCR).
|
|
|
|
*/
|
|
|
|
#define MCFUART_UCR_CMDNULL 0x00 /* No command */
|
|
|
|
#define MCFUART_UCR_CMDRESETMRPTR 0x10 /* Reset MR pointer */
|
|
|
|
#define MCFUART_UCR_CMDRESETRX 0x20 /* Reset receiver */
|
|
|
|
#define MCFUART_UCR_CMDRESETTX 0x30 /* Reset transmitter */
|
|
|
|
#define MCFUART_UCR_CMDRESETERR 0x40 /* Reset error status */
|
|
|
|
#define MCFUART_UCR_CMDRESETBREAK 0x50 /* Reset BREAK change */
|
|
|
|
#define MCFUART_UCR_CMDBREAKSTART 0x60 /* Start BREAK */
|
|
|
|
#define MCFUART_UCR_CMDBREAKSTOP 0x70 /* Stop BREAK */
|
|
|
|
|
|
|
|
#define MCFUART_UCR_TXNULL 0x00 /* No TX command */
|
|
|
|
#define MCFUART_UCR_TXENABLE 0x04 /* Enable TX */
|
|
|
|
#define MCFUART_UCR_TXDISABLE 0x08 /* Disable TX */
|
|
|
|
#define MCFUART_UCR_RXNULL 0x00 /* No RX command */
|
|
|
|
#define MCFUART_UCR_RXENABLE 0x01 /* Enable RX */
|
|
|
|
#define MCFUART_UCR_RXDISABLE 0x02 /* Disable RX */
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Define bit flags in Input Port Change Register (UIPCR).
|
|
|
|
*/
|
|
|
|
#define MCFUART_UIPCR_CTSCOS 0x10 /* CTS change of state */
|
|
|
|
#define MCFUART_UIPCR_CTS 0x01 /* CTS value */
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Define bit flags in Input Port Register (UIP).
|
|
|
|
*/
|
|
|
|
#define MCFUART_UIPR_CTS 0x01 /* CTS value */
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Define bit flags in Output Port Registers (UOP).
|
|
|
|
* Clear bit by writing to UOP0, set by writing to UOP1.
|
|
|
|
*/
|
|
|
|
#define MCFUART_UOP_RTS 0x01 /* RTS set or clear */
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Define bit flags in the Auxiliary Control Register (UACR).
|
|
|
|
*/
|
|
|
|
#define MCFUART_UACR_IEC 0x01 /* Input enable control */
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Define bit flags in Interrupt Status Register (UISR).
|
|
|
|
* These same bits are used for the Interrupt Mask Register (UIMR).
|
|
|
|
*/
|
|
|
|
#define MCFUART_UIR_COS 0x80 /* Change of state (CTS) */
|
|
|
|
#define MCFUART_UIR_DELTABREAK 0x04 /* Break start or stop */
|
|
|
|
#define MCFUART_UIR_RXREADY 0x02 /* Receiver ready */
|
|
|
|
#define MCFUART_UIR_TXREADY 0x01 /* Transmitter ready */
|
|
|
|
|
|
|
|
#ifdef CONFIG_M5272
|
|
|
|
/*
|
|
|
|
* Define bit flags in the Transmitter FIFO Register (UTF).
|
|
|
|
*/
|
|
|
|
#define MCFUART_UTF_TXB 0x1f /* Transmitter data level */
|
|
|
|
#define MCFUART_UTF_FULL 0x20 /* Transmitter fifo full */
|
|
|
|
#define MCFUART_UTF_TXS 0xc0 /* Transmitter status */
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Define bit flags in the Receiver FIFO Register (URF).
|
|
|
|
*/
|
|
|
|
#define MCFUART_URF_RXB 0x1f /* Receiver data level */
|
|
|
|
#define MCFUART_URF_FULL 0x20 /* Receiver fifo full */
|
|
|
|
#define MCFUART_URF_RXS 0xc0 /* Receiver status */
|
|
|
|
#endif
|
|
|
|
|
2010-11-02 10:05:29 +08:00
|
|
|
#if defined(CONFIG_M54xx)
|
2010-09-21 23:14:36 +08:00
|
|
|
#define MCFUART_TXFIFOSIZE 512
|
|
|
|
#elif defined(CONFIG_M5272)
|
2010-04-02 23:56:08 +08:00
|
|
|
#define MCFUART_TXFIFOSIZE 25
|
|
|
|
#else
|
|
|
|
#define MCFUART_TXFIFOSIZE 1
|
|
|
|
#endif
|
2005-04-17 06:20:36 +08:00
|
|
|
/****************************************************************************/
|
|
|
|
#endif /* mcfuart_h */
|