mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-24 01:41:39 +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>
323 lines
8.6 KiB
C
323 lines
8.6 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/* sunsab.h: Register Definitions for the Siemens SAB82532 DUSCC
|
|
*
|
|
* Copyright (C) 1997 Eddie C. Dost (ecd@skynet.be)
|
|
*/
|
|
|
|
#ifndef _SUNSAB_H
|
|
#define _SUNSAB_H
|
|
|
|
struct sab82532_async_rd_regs {
|
|
u8 rfifo[0x20]; /* Receive FIFO */
|
|
u8 star; /* Status Register */
|
|
u8 __pad1;
|
|
u8 mode; /* Mode Register */
|
|
u8 timr; /* Timer Register */
|
|
u8 xon; /* XON Character */
|
|
u8 xoff; /* XOFF Character */
|
|
u8 tcr; /* Termination Character Register */
|
|
u8 dafo; /* Data Format */
|
|
u8 rfc; /* RFIFO Control Register */
|
|
u8 __pad2;
|
|
u8 rbcl; /* Receive Byte Count Low */
|
|
u8 rbch; /* Receive Byte Count High */
|
|
u8 ccr0; /* Channel Configuration Register 0 */
|
|
u8 ccr1; /* Channel Configuration Register 1 */
|
|
u8 ccr2; /* Channel Configuration Register 2 */
|
|
u8 ccr3; /* Channel Configuration Register 3 */
|
|
u8 __pad3[4];
|
|
u8 vstr; /* Version Status Register */
|
|
u8 __pad4[3];
|
|
u8 gis; /* Global Interrupt Status */
|
|
u8 ipc; /* Interrupt Port Configuration */
|
|
u8 isr0; /* Interrupt Status 0 */
|
|
u8 isr1; /* Interrupt Status 1 */
|
|
u8 pvr; /* Port Value Register */
|
|
u8 pis; /* Port Interrupt Status */
|
|
u8 pcr; /* Port Configuration Register */
|
|
u8 ccr4; /* Channel Configuration Register 4 */
|
|
};
|
|
|
|
struct sab82532_async_wr_regs {
|
|
u8 xfifo[0x20]; /* Transmit FIFO */
|
|
u8 cmdr; /* Command Register */
|
|
u8 __pad1;
|
|
u8 mode;
|
|
u8 timr;
|
|
u8 xon;
|
|
u8 xoff;
|
|
u8 tcr;
|
|
u8 dafo;
|
|
u8 rfc;
|
|
u8 __pad2;
|
|
u8 xbcl; /* Transmit Byte Count Low */
|
|
u8 xbch; /* Transmit Byte Count High */
|
|
u8 ccr0;
|
|
u8 ccr1;
|
|
u8 ccr2;
|
|
u8 ccr3;
|
|
u8 tsax; /* Time-Slot Assignment Reg. Transmit */
|
|
u8 tsar; /* Time-Slot Assignment Reg. Receive */
|
|
u8 xccr; /* Transmit Channel Capacity Register */
|
|
u8 rccr; /* Receive Channel Capacity Register */
|
|
u8 bgr; /* Baud Rate Generator Register */
|
|
u8 tic; /* Transmit Immediate Character */
|
|
u8 mxn; /* Mask XON Character */
|
|
u8 mxf; /* Mask XOFF Character */
|
|
u8 iva; /* Interrupt Vector Address */
|
|
u8 ipc;
|
|
u8 imr0; /* Interrupt Mask Register 0 */
|
|
u8 imr1; /* Interrupt Mask Register 1 */
|
|
u8 pvr;
|
|
u8 pim; /* Port Interrupt Mask */
|
|
u8 pcr;
|
|
u8 ccr4;
|
|
};
|
|
|
|
struct sab82532_async_rw_regs { /* Read/Write registers */
|
|
u8 __pad1[0x20];
|
|
u8 __pad2;
|
|
u8 __pad3;
|
|
u8 mode;
|
|
u8 timr;
|
|
u8 xon;
|
|
u8 xoff;
|
|
u8 tcr;
|
|
u8 dafo;
|
|
u8 rfc;
|
|
u8 __pad4;
|
|
u8 __pad5;
|
|
u8 __pad6;
|
|
u8 ccr0;
|
|
u8 ccr1;
|
|
u8 ccr2;
|
|
u8 ccr3;
|
|
u8 __pad7;
|
|
u8 __pad8;
|
|
u8 __pad9;
|
|
u8 __pad10;
|
|
u8 __pad11;
|
|
u8 __pad12;
|
|
u8 __pad13;
|
|
u8 __pad14;
|
|
u8 __pad15;
|
|
u8 ipc;
|
|
u8 __pad16;
|
|
u8 __pad17;
|
|
u8 pvr;
|
|
u8 __pad18;
|
|
u8 pcr;
|
|
u8 ccr4;
|
|
};
|
|
|
|
union sab82532_async_regs {
|
|
__volatile__ struct sab82532_async_rd_regs r;
|
|
__volatile__ struct sab82532_async_wr_regs w;
|
|
__volatile__ struct sab82532_async_rw_regs rw;
|
|
};
|
|
|
|
union sab82532_irq_status {
|
|
unsigned short stat;
|
|
struct {
|
|
unsigned char isr0;
|
|
unsigned char isr1;
|
|
} sreg;
|
|
};
|
|
|
|
/* irqflags bits */
|
|
#define SAB82532_ALLS 0x00000001
|
|
#define SAB82532_XPR 0x00000002
|
|
#define SAB82532_REGS_PENDING 0x00000004
|
|
|
|
/* RFIFO Status Byte */
|
|
#define SAB82532_RSTAT_PE 0x80
|
|
#define SAB82532_RSTAT_FE 0x40
|
|
#define SAB82532_RSTAT_PARITY 0x01
|
|
|
|
/* Status Register (STAR) */
|
|
#define SAB82532_STAR_XDOV 0x80
|
|
#define SAB82532_STAR_XFW 0x40
|
|
#define SAB82532_STAR_RFNE 0x20
|
|
#define SAB82532_STAR_FCS 0x10
|
|
#define SAB82532_STAR_TEC 0x08
|
|
#define SAB82532_STAR_CEC 0x04
|
|
#define SAB82532_STAR_CTS 0x02
|
|
|
|
/* Command Register (CMDR) */
|
|
#define SAB82532_CMDR_RMC 0x80
|
|
#define SAB82532_CMDR_RRES 0x40
|
|
#define SAB82532_CMDR_RFRD 0x20
|
|
#define SAB82532_CMDR_STI 0x10
|
|
#define SAB82532_CMDR_XF 0x08
|
|
#define SAB82532_CMDR_XRES 0x01
|
|
|
|
/* Mode Register (MODE) */
|
|
#define SAB82532_MODE_FRTS 0x40
|
|
#define SAB82532_MODE_FCTS 0x20
|
|
#define SAB82532_MODE_FLON 0x10
|
|
#define SAB82532_MODE_RAC 0x08
|
|
#define SAB82532_MODE_RTS 0x04
|
|
#define SAB82532_MODE_TRS 0x02
|
|
#define SAB82532_MODE_TLP 0x01
|
|
|
|
/* Timer Register (TIMR) */
|
|
#define SAB82532_TIMR_CNT_MASK 0xe0
|
|
#define SAB82532_TIMR_VALUE_MASK 0x1f
|
|
|
|
/* Data Format (DAFO) */
|
|
#define SAB82532_DAFO_XBRK 0x40
|
|
#define SAB82532_DAFO_STOP 0x20
|
|
#define SAB82532_DAFO_PAR_SPACE 0x00
|
|
#define SAB82532_DAFO_PAR_ODD 0x08
|
|
#define SAB82532_DAFO_PAR_EVEN 0x10
|
|
#define SAB82532_DAFO_PAR_MARK 0x18
|
|
#define SAB82532_DAFO_PARE 0x04
|
|
#define SAB82532_DAFO_CHL8 0x00
|
|
#define SAB82532_DAFO_CHL7 0x01
|
|
#define SAB82532_DAFO_CHL6 0x02
|
|
#define SAB82532_DAFO_CHL5 0x03
|
|
|
|
/* RFIFO Control Register (RFC) */
|
|
#define SAB82532_RFC_DPS 0x40
|
|
#define SAB82532_RFC_DXS 0x20
|
|
#define SAB82532_RFC_RFDF 0x10
|
|
#define SAB82532_RFC_RFTH_1 0x00
|
|
#define SAB82532_RFC_RFTH_4 0x04
|
|
#define SAB82532_RFC_RFTH_16 0x08
|
|
#define SAB82532_RFC_RFTH_32 0x0c
|
|
#define SAB82532_RFC_TCDE 0x01
|
|
|
|
/* Received Byte Count High (RBCH) */
|
|
#define SAB82532_RBCH_DMA 0x80
|
|
#define SAB82532_RBCH_CAS 0x20
|
|
|
|
/* Transmit Byte Count High (XBCH) */
|
|
#define SAB82532_XBCH_DMA 0x80
|
|
#define SAB82532_XBCH_CAS 0x20
|
|
#define SAB82532_XBCH_XC 0x10
|
|
|
|
/* Channel Configuration Register 0 (CCR0) */
|
|
#define SAB82532_CCR0_PU 0x80
|
|
#define SAB82532_CCR0_MCE 0x40
|
|
#define SAB82532_CCR0_SC_NRZ 0x00
|
|
#define SAB82532_CCR0_SC_NRZI 0x08
|
|
#define SAB82532_CCR0_SC_FM0 0x10
|
|
#define SAB82532_CCR0_SC_FM1 0x14
|
|
#define SAB82532_CCR0_SC_MANCH 0x18
|
|
#define SAB82532_CCR0_SM_HDLC 0x00
|
|
#define SAB82532_CCR0_SM_SDLC_LOOP 0x01
|
|
#define SAB82532_CCR0_SM_BISYNC 0x02
|
|
#define SAB82532_CCR0_SM_ASYNC 0x03
|
|
|
|
/* Channel Configuration Register 1 (CCR1) */
|
|
#define SAB82532_CCR1_ODS 0x10
|
|
#define SAB82532_CCR1_BCR 0x08
|
|
#define SAB82532_CCR1_CM_MASK 0x07
|
|
|
|
/* Channel Configuration Register 2 (CCR2) */
|
|
#define SAB82532_CCR2_SOC1 0x80
|
|
#define SAB82532_CCR2_SOC0 0x40
|
|
#define SAB82532_CCR2_BR9 0x80
|
|
#define SAB82532_CCR2_BR8 0x40
|
|
#define SAB82532_CCR2_BDF 0x20
|
|
#define SAB82532_CCR2_SSEL 0x10
|
|
#define SAB82532_CCR2_XCS0 0x20
|
|
#define SAB82532_CCR2_RCS0 0x10
|
|
#define SAB82532_CCR2_TOE 0x08
|
|
#define SAB82532_CCR2_RWX 0x04
|
|
#define SAB82532_CCR2_DIV 0x01
|
|
|
|
/* Channel Configuration Register 3 (CCR3) */
|
|
#define SAB82532_CCR3_PSD 0x01
|
|
|
|
/* Time Slot Assignment Register Transmit (TSAX) */
|
|
#define SAB82532_TSAX_TSNX_MASK 0xfc
|
|
#define SAB82532_TSAX_XCS2 0x02 /* see also CCR2 */
|
|
#define SAB82532_TSAX_XCS1 0x01
|
|
|
|
/* Time Slot Assignment Register Receive (TSAR) */
|
|
#define SAB82532_TSAR_TSNR_MASK 0xfc
|
|
#define SAB82532_TSAR_RCS2 0x02 /* see also CCR2 */
|
|
#define SAB82532_TSAR_RCS1 0x01
|
|
|
|
/* Version Status Register (VSTR) */
|
|
#define SAB82532_VSTR_CD 0x80
|
|
#define SAB82532_VSTR_DPLA 0x40
|
|
#define SAB82532_VSTR_VN_MASK 0x0f
|
|
#define SAB82532_VSTR_VN_1 0x00
|
|
#define SAB82532_VSTR_VN_2 0x01
|
|
#define SAB82532_VSTR_VN_3_2 0x02
|
|
|
|
/* Global Interrupt Status Register (GIS) */
|
|
#define SAB82532_GIS_PI 0x80
|
|
#define SAB82532_GIS_ISA1 0x08
|
|
#define SAB82532_GIS_ISA0 0x04
|
|
#define SAB82532_GIS_ISB1 0x02
|
|
#define SAB82532_GIS_ISB0 0x01
|
|
|
|
/* Interrupt Vector Address (IVA) */
|
|
#define SAB82532_IVA_MASK 0xf1
|
|
|
|
/* Interrupt Port Configuration (IPC) */
|
|
#define SAB82532_IPC_VIS 0x80
|
|
#define SAB82532_IPC_SLA1 0x10
|
|
#define SAB82532_IPC_SLA0 0x08
|
|
#define SAB82532_IPC_CASM 0x04
|
|
#define SAB82532_IPC_IC_OPEN_DRAIN 0x00
|
|
#define SAB82532_IPC_IC_ACT_LOW 0x01
|
|
#define SAB82532_IPC_IC_ACT_HIGH 0x03
|
|
|
|
/* Interrupt Status Register 0 (ISR0) */
|
|
#define SAB82532_ISR0_TCD 0x80
|
|
#define SAB82532_ISR0_TIME 0x40
|
|
#define SAB82532_ISR0_PERR 0x20
|
|
#define SAB82532_ISR0_FERR 0x10
|
|
#define SAB82532_ISR0_PLLA 0x08
|
|
#define SAB82532_ISR0_CDSC 0x04
|
|
#define SAB82532_ISR0_RFO 0x02
|
|
#define SAB82532_ISR0_RPF 0x01
|
|
|
|
/* Interrupt Status Register 1 (ISR1) */
|
|
#define SAB82532_ISR1_BRK 0x80
|
|
#define SAB82532_ISR1_BRKT 0x40
|
|
#define SAB82532_ISR1_ALLS 0x20
|
|
#define SAB82532_ISR1_XOFF 0x10
|
|
#define SAB82532_ISR1_TIN 0x08
|
|
#define SAB82532_ISR1_CSC 0x04
|
|
#define SAB82532_ISR1_XON 0x02
|
|
#define SAB82532_ISR1_XPR 0x01
|
|
|
|
/* Interrupt Mask Register 0 (IMR0) */
|
|
#define SAB82532_IMR0_TCD 0x80
|
|
#define SAB82532_IMR0_TIME 0x40
|
|
#define SAB82532_IMR0_PERR 0x20
|
|
#define SAB82532_IMR0_FERR 0x10
|
|
#define SAB82532_IMR0_PLLA 0x08
|
|
#define SAB82532_IMR0_CDSC 0x04
|
|
#define SAB82532_IMR0_RFO 0x02
|
|
#define SAB82532_IMR0_RPF 0x01
|
|
|
|
/* Interrupt Mask Register 1 (IMR1) */
|
|
#define SAB82532_IMR1_BRK 0x80
|
|
#define SAB82532_IMR1_BRKT 0x40
|
|
#define SAB82532_IMR1_ALLS 0x20
|
|
#define SAB82532_IMR1_XOFF 0x10
|
|
#define SAB82532_IMR1_TIN 0x08
|
|
#define SAB82532_IMR1_CSC 0x04
|
|
#define SAB82532_IMR1_XON 0x02
|
|
#define SAB82532_IMR1_XPR 0x01
|
|
|
|
/* Port Interrupt Status Register (PIS) */
|
|
#define SAB82532_PIS_SYNC_B 0x08
|
|
#define SAB82532_PIS_DTR_B 0x04
|
|
#define SAB82532_PIS_DTR_A 0x02
|
|
#define SAB82532_PIS_SYNC_A 0x01
|
|
|
|
/* Channel Configuration Register 4 (CCR4) */
|
|
#define SAB82532_CCR4_MCK4 0x80
|
|
#define SAB82532_CCR4_EBRG 0x40
|
|
#define SAB82532_CCR4_TST1 0x20
|
|
#define SAB82532_CCR4_ICD 0x10
|
|
|
|
|
|
#endif /* !(_SUNSAB_H) */
|