mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-27 03:10:12 +00:00
![Greg Kroah-Hartman](/assets/img/avatar_default.png)
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>
242 lines
8.5 KiB
C
242 lines
8.5 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef __HD64570_H
|
|
#define __HD64570_H
|
|
|
|
/* SCA HD64570 register definitions - all addresses for mode 0 (8086 MPU)
|
|
and 1 (64180 MPU). For modes 2 and 3, XOR the address with 0x01.
|
|
|
|
Source: HD64570 SCA User's Manual
|
|
*/
|
|
|
|
|
|
|
|
/* SCA Control Registers */
|
|
#define LPR 0x00 /* Low Power */
|
|
|
|
/* Wait controller registers */
|
|
#define PABR0 0x02 /* Physical Address Boundary 0 */
|
|
#define PABR1 0x03 /* Physical Address Boundary 1 */
|
|
#define WCRL 0x04 /* Wait Control L */
|
|
#define WCRM 0x05 /* Wait Control M */
|
|
#define WCRH 0x06 /* Wait Control H */
|
|
|
|
#define PCR 0x08 /* DMA Priority Control */
|
|
#define DMER 0x09 /* DMA Master Enable */
|
|
|
|
|
|
/* Interrupt registers */
|
|
#define ISR0 0x10 /* Interrupt Status 0 */
|
|
#define ISR1 0x11 /* Interrupt Status 1 */
|
|
#define ISR2 0x12 /* Interrupt Status 2 */
|
|
|
|
#define IER0 0x14 /* Interrupt Enable 0 */
|
|
#define IER1 0x15 /* Interrupt Enable 1 */
|
|
#define IER2 0x16 /* Interrupt Enable 2 */
|
|
|
|
#define ITCR 0x18 /* Interrupt Control */
|
|
#define IVR 0x1A /* Interrupt Vector */
|
|
#define IMVR 0x1C /* Interrupt Modified Vector */
|
|
|
|
|
|
|
|
/* MSCI channel (port) 0 registers - offset 0x20
|
|
MSCI channel (port) 1 registers - offset 0x40 */
|
|
|
|
#define MSCI0_OFFSET 0x20
|
|
#define MSCI1_OFFSET 0x40
|
|
|
|
#define TRBL 0x00 /* TX/RX buffer L */
|
|
#define TRBH 0x01 /* TX/RX buffer H */
|
|
#define ST0 0x02 /* Status 0 */
|
|
#define ST1 0x03 /* Status 1 */
|
|
#define ST2 0x04 /* Status 2 */
|
|
#define ST3 0x05 /* Status 3 */
|
|
#define FST 0x06 /* Frame Status */
|
|
#define IE0 0x08 /* Interrupt Enable 0 */
|
|
#define IE1 0x09 /* Interrupt Enable 1 */
|
|
#define IE2 0x0A /* Interrupt Enable 2 */
|
|
#define FIE 0x0B /* Frame Interrupt Enable */
|
|
#define CMD 0x0C /* Command */
|
|
#define MD0 0x0E /* Mode 0 */
|
|
#define MD1 0x0F /* Mode 1 */
|
|
#define MD2 0x10 /* Mode 2 */
|
|
#define CTL 0x11 /* Control */
|
|
#define SA0 0x12 /* Sync/Address 0 */
|
|
#define SA1 0x13 /* Sync/Address 1 */
|
|
#define IDL 0x14 /* Idle Pattern */
|
|
#define TMC 0x15 /* Time Constant */
|
|
#define RXS 0x16 /* RX Clock Source */
|
|
#define TXS 0x17 /* TX Clock Source */
|
|
#define TRC0 0x18 /* TX Ready Control 0 */
|
|
#define TRC1 0x19 /* TX Ready Control 1 */
|
|
#define RRC 0x1A /* RX Ready Control */
|
|
#define CST0 0x1C /* Current Status 0 */
|
|
#define CST1 0x1D /* Current Status 1 */
|
|
|
|
|
|
/* Timer channel 0 (port 0 RX) registers - offset 0x60
|
|
Timer channel 1 (port 0 TX) registers - offset 0x68
|
|
Timer channel 2 (port 1 RX) registers - offset 0x70
|
|
Timer channel 3 (port 1 TX) registers - offset 0x78
|
|
*/
|
|
|
|
#define TIMER0RX_OFFSET 0x60
|
|
#define TIMER0TX_OFFSET 0x68
|
|
#define TIMER1RX_OFFSET 0x70
|
|
#define TIMER1TX_OFFSET 0x78
|
|
|
|
#define TCNTL 0x00 /* Up-counter L */
|
|
#define TCNTH 0x01 /* Up-counter H */
|
|
#define TCONRL 0x02 /* Constant L */
|
|
#define TCONRH 0x03 /* Constant H */
|
|
#define TCSR 0x04 /* Control/Status */
|
|
#define TEPR 0x05 /* Expand Prescale */
|
|
|
|
|
|
|
|
/* DMA channel 0 (port 0 RX) registers - offset 0x80
|
|
DMA channel 1 (port 0 TX) registers - offset 0xA0
|
|
DMA channel 2 (port 1 RX) registers - offset 0xC0
|
|
DMA channel 3 (port 1 TX) registers - offset 0xE0
|
|
*/
|
|
|
|
#define DMAC0RX_OFFSET 0x80
|
|
#define DMAC0TX_OFFSET 0xA0
|
|
#define DMAC1RX_OFFSET 0xC0
|
|
#define DMAC1TX_OFFSET 0xE0
|
|
|
|
#define BARL 0x00 /* Buffer Address L (chained block) */
|
|
#define BARH 0x01 /* Buffer Address H (chained block) */
|
|
#define BARB 0x02 /* Buffer Address B (chained block) */
|
|
|
|
#define DARL 0x00 /* RX Destination Addr L (single block) */
|
|
#define DARH 0x01 /* RX Destination Addr H (single block) */
|
|
#define DARB 0x02 /* RX Destination Addr B (single block) */
|
|
|
|
#define SARL 0x04 /* TX Source Address L (single block) */
|
|
#define SARH 0x05 /* TX Source Address H (single block) */
|
|
#define SARB 0x06 /* TX Source Address B (single block) */
|
|
|
|
#define CPB 0x06 /* Chain Pointer Base (chained block) */
|
|
|
|
#define CDAL 0x08 /* Current Descriptor Addr L (chained block) */
|
|
#define CDAH 0x09 /* Current Descriptor Addr H (chained block) */
|
|
#define EDAL 0x0A /* Error Descriptor Addr L (chained block) */
|
|
#define EDAH 0x0B /* Error Descriptor Addr H (chained block) */
|
|
#define BFLL 0x0C /* RX Receive Buffer Length L (chained block)*/
|
|
#define BFLH 0x0D /* RX Receive Buffer Length H (chained block)*/
|
|
#define BCRL 0x0E /* Byte Count L */
|
|
#define BCRH 0x0F /* Byte Count H */
|
|
#define DSR 0x10 /* DMA Status */
|
|
#define DSR_RX(node) (DSR + (node ? DMAC1RX_OFFSET : DMAC0RX_OFFSET))
|
|
#define DSR_TX(node) (DSR + (node ? DMAC1TX_OFFSET : DMAC0TX_OFFSET))
|
|
#define DMR 0x11 /* DMA Mode */
|
|
#define DMR_RX(node) (DMR + (node ? DMAC1RX_OFFSET : DMAC0RX_OFFSET))
|
|
#define DMR_TX(node) (DMR + (node ? DMAC1TX_OFFSET : DMAC0TX_OFFSET))
|
|
#define FCT 0x13 /* Frame End Interrupt Counter */
|
|
#define FCT_RX(node) (FCT + (node ? DMAC1RX_OFFSET : DMAC0RX_OFFSET))
|
|
#define FCT_TX(node) (FCT + (node ? DMAC1TX_OFFSET : DMAC0TX_OFFSET))
|
|
#define DIR 0x14 /* DMA Interrupt Enable */
|
|
#define DIR_RX(node) (DIR + (node ? DMAC1RX_OFFSET : DMAC0RX_OFFSET))
|
|
#define DIR_TX(node) (DIR + (node ? DMAC1TX_OFFSET : DMAC0TX_OFFSET))
|
|
#define DCR 0x15 /* DMA Command */
|
|
#define DCR_RX(node) (DCR + (node ? DMAC1RX_OFFSET : DMAC0RX_OFFSET))
|
|
#define DCR_TX(node) (DCR + (node ? DMAC1TX_OFFSET : DMAC0TX_OFFSET))
|
|
|
|
|
|
|
|
|
|
/* Descriptor Structure */
|
|
|
|
typedef struct {
|
|
u16 cp; /* Chain Pointer */
|
|
u32 bp; /* Buffer Pointer (24 bits) */
|
|
u16 len; /* Data Length */
|
|
u8 stat; /* Status */
|
|
u8 unused; /* pads to 2-byte boundary */
|
|
}__packed pkt_desc;
|
|
|
|
|
|
/* Packet Descriptor Status bits */
|
|
|
|
#define ST_TX_EOM 0x80 /* End of frame */
|
|
#define ST_TX_EOT 0x01 /* End of transmission */
|
|
|
|
#define ST_RX_EOM 0x80 /* End of frame */
|
|
#define ST_RX_SHORT 0x40 /* Short frame */
|
|
#define ST_RX_ABORT 0x20 /* Abort */
|
|
#define ST_RX_RESBIT 0x10 /* Residual bit */
|
|
#define ST_RX_OVERRUN 0x08 /* Overrun */
|
|
#define ST_RX_CRC 0x04 /* CRC */
|
|
|
|
#define ST_ERROR_MASK 0x7C
|
|
|
|
#define DIR_EOTE 0x80 /* Transfer completed */
|
|
#define DIR_EOME 0x40 /* Frame Transfer Completed (chained-block) */
|
|
#define DIR_BOFE 0x20 /* Buffer Overflow/Underflow (chained-block)*/
|
|
#define DIR_COFE 0x10 /* Counter Overflow (chained-block) */
|
|
|
|
|
|
#define DSR_EOT 0x80 /* Transfer completed */
|
|
#define DSR_EOM 0x40 /* Frame Transfer Completed (chained-block) */
|
|
#define DSR_BOF 0x20 /* Buffer Overflow/Underflow (chained-block)*/
|
|
#define DSR_COF 0x10 /* Counter Overflow (chained-block) */
|
|
#define DSR_DE 0x02 /* DMA Enable */
|
|
#define DSR_DWE 0x01 /* DMA Write Disable */
|
|
|
|
/* DMA Master Enable Register (DMER) bits */
|
|
#define DMER_DME 0x80 /* DMA Master Enable */
|
|
|
|
|
|
#define CMD_RESET 0x21 /* Reset Channel */
|
|
#define CMD_TX_ENABLE 0x02 /* Start transmitter */
|
|
#define CMD_RX_ENABLE 0x12 /* Start receiver */
|
|
|
|
#define MD0_HDLC 0x80 /* Bit-sync HDLC mode */
|
|
#define MD0_CRC_ENA 0x04 /* Enable CRC code calculation */
|
|
#define MD0_CRC_CCITT 0x02 /* CCITT CRC instead of CRC-16 */
|
|
#define MD0_CRC_PR1 0x01 /* Initial all-ones instead of all-zeros */
|
|
|
|
#define MD0_CRC_NONE 0x00
|
|
#define MD0_CRC_16_0 0x04
|
|
#define MD0_CRC_16 0x05
|
|
#define MD0_CRC_ITU_0 0x06
|
|
#define MD0_CRC_ITU 0x07
|
|
|
|
#define MD2_NRZ 0x00
|
|
#define MD2_NRZI 0x20
|
|
#define MD2_MANCHESTER 0x80
|
|
#define MD2_FM_MARK 0xA0
|
|
#define MD2_FM_SPACE 0xC0
|
|
#define MD2_LOOPBACK 0x03 /* Local data Loopback */
|
|
|
|
#define CTL_NORTS 0x01
|
|
#define CTL_IDLE 0x10 /* Transmit an idle pattern */
|
|
#define CTL_UDRNC 0x20 /* Idle after CRC or FCS+flag transmission */
|
|
|
|
#define ST0_TXRDY 0x02 /* TX ready */
|
|
#define ST0_RXRDY 0x01 /* RX ready */
|
|
|
|
#define ST1_UDRN 0x80 /* MSCI TX underrun */
|
|
#define ST1_CDCD 0x04 /* DCD level changed */
|
|
|
|
#define ST3_CTS 0x08 /* modem input - /CTS */
|
|
#define ST3_DCD 0x04 /* modem input - /DCD */
|
|
|
|
#define IE0_TXINT 0x80 /* TX INT MSCI interrupt enable */
|
|
#define IE0_RXINTA 0x40 /* RX INT A MSCI interrupt enable */
|
|
#define IE1_UDRN 0x80 /* TX underrun MSCI interrupt enable */
|
|
#define IE1_CDCD 0x04 /* DCD level changed */
|
|
|
|
#define DCR_ABORT 0x01 /* Software abort command */
|
|
#define DCR_CLEAR_EOF 0x02 /* Clear EOF interrupt */
|
|
|
|
/* TX and RX Clock Source - RXS and TXS */
|
|
#define CLK_BRG_MASK 0x0F
|
|
#define CLK_LINE_RX 0x00 /* TX/RX clock line input */
|
|
#define CLK_LINE_TX 0x00 /* TX/RX line input */
|
|
#define CLK_BRG_RX 0x40 /* internal baud rate generator */
|
|
#define CLK_BRG_TX 0x40 /* internal baud rate generator */
|
|
#define CLK_RXCLK_TX 0x60 /* TX clock from RX clock */
|
|
|
|
#endif
|