mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-17 01:04:19 +08:00
b24413180f
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>
227 lines
9.8 KiB
C
227 lines
9.8 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* bbc.h: Defines for BootBus Controller found on UltraSPARC-III
|
|
* systems.
|
|
*
|
|
* Copyright (C) 2000 David S. Miller (davem@redhat.com)
|
|
*/
|
|
|
|
#ifndef _SPARC64_BBC_H
|
|
#define _SPARC64_BBC_H
|
|
|
|
/* Register sizes are indicated by "B" (Byte, 1-byte),
|
|
* "H" (Half-word, 2 bytes), "W" (Word, 4 bytes) or
|
|
* "Q" (Quad, 8 bytes) inside brackets.
|
|
*/
|
|
|
|
#define BBC_AID 0x00 /* [B] Agent ID */
|
|
#define BBC_DEVP 0x01 /* [B] Device Present */
|
|
#define BBC_ARB 0x02 /* [B] Arbitration */
|
|
#define BBC_QUIESCE 0x03 /* [B] Quiesce */
|
|
#define BBC_WDACTION 0x04 /* [B] Watchdog Action */
|
|
#define BBC_SPG 0x06 /* [B] Soft POR Gen */
|
|
#define BBC_SXG 0x07 /* [B] Soft XIR Gen */
|
|
#define BBC_PSRC 0x08 /* [W] POR Source */
|
|
#define BBC_XSRC 0x0c /* [B] XIR Source */
|
|
#define BBC_CSC 0x0d /* [B] Clock Synthesizers Control*/
|
|
#define BBC_ES_CTRL 0x0e /* [H] Energy Star Control */
|
|
#define BBC_ES_ACT 0x10 /* [W] E* Assert Change Time */
|
|
#define BBC_ES_DACT 0x14 /* [B] E* De-Assert Change Time */
|
|
#define BBC_ES_DABT 0x15 /* [B] E* De-Assert Bypass Time */
|
|
#define BBC_ES_ABT 0x16 /* [H] E* Assert Bypass Time */
|
|
#define BBC_ES_PST 0x18 /* [W] E* PLL Settle Time */
|
|
#define BBC_ES_FSL 0x1c /* [W] E* Frequency Switch Latency*/
|
|
#define BBC_EBUST 0x20 /* [Q] EBUS Timing */
|
|
#define BBC_JTAG_CMD 0x28 /* [W] JTAG+ Command */
|
|
#define BBC_JTAG_CTRL 0x2c /* [B] JTAG+ Control */
|
|
#define BBC_I2C_SEL 0x2d /* [B] I2C Selection */
|
|
#define BBC_I2C_0_S1 0x2e /* [B] I2C ctrlr-0 reg S1 */
|
|
#define BBC_I2C_0_S0 0x2f /* [B] I2C ctrlr-0 regs S0,S0',S2,S3*/
|
|
#define BBC_I2C_1_S1 0x30 /* [B] I2C ctrlr-1 reg S1 */
|
|
#define BBC_I2C_1_S0 0x31 /* [B] I2C ctrlr-1 regs S0,S0',S2,S3*/
|
|
#define BBC_KBD_BEEP 0x32 /* [B] Keyboard Beep */
|
|
#define BBC_KBD_BCNT 0x34 /* [W] Keyboard Beep Counter */
|
|
|
|
#define BBC_REGS_SIZE 0x40
|
|
|
|
/* There is a 2K scratch ram area at offset 0x80000 but I doubt
|
|
* we will use it for anything.
|
|
*/
|
|
|
|
/* Agent ID register. This register shows the Safari Agent ID
|
|
* for the processors. The value returned depends upon which
|
|
* cpu is reading the register.
|
|
*/
|
|
#define BBC_AID_ID 0x07 /* Safari ID */
|
|
#define BBC_AID_RESV 0xf8 /* Reserved */
|
|
|
|
/* Device Present register. One can determine which cpus are actually
|
|
* present in the machine by interrogating this register.
|
|
*/
|
|
#define BBC_DEVP_CPU0 0x01 /* Processor 0 present */
|
|
#define BBC_DEVP_CPU1 0x02 /* Processor 1 present */
|
|
#define BBC_DEVP_CPU2 0x04 /* Processor 2 present */
|
|
#define BBC_DEVP_CPU3 0x08 /* Processor 3 present */
|
|
#define BBC_DEVP_RESV 0xf0 /* Reserved */
|
|
|
|
/* Arbitration register. This register is used to block access to
|
|
* the BBC from a particular cpu.
|
|
*/
|
|
#define BBC_ARB_CPU0 0x01 /* Enable cpu 0 BBC arbitratrion */
|
|
#define BBC_ARB_CPU1 0x02 /* Enable cpu 1 BBC arbitratrion */
|
|
#define BBC_ARB_CPU2 0x04 /* Enable cpu 2 BBC arbitratrion */
|
|
#define BBC_ARB_CPU3 0x08 /* Enable cpu 3 BBC arbitratrion */
|
|
#define BBC_ARB_RESV 0xf0 /* Reserved */
|
|
|
|
/* Quiesce register. Bus and BBC segments for cpus can be disabled
|
|
* with this register, ie. for hot plugging.
|
|
*/
|
|
#define BBC_QUIESCE_S02 0x01 /* Quiesce Safari segment for cpu 0 and 2 */
|
|
#define BBC_QUIESCE_S13 0x02 /* Quiesce Safari segment for cpu 1 and 3 */
|
|
#define BBC_QUIESCE_B02 0x04 /* Quiesce BBC segment for cpu 0 and 2 */
|
|
#define BBC_QUIESCE_B13 0x08 /* Quiesce BBC segment for cpu 1 and 3 */
|
|
#define BBC_QUIESCE_FD0 0x10 /* Disable Fatal_Error[0] reporting */
|
|
#define BBC_QUIESCE_FD1 0x20 /* Disable Fatal_Error[1] reporting */
|
|
#define BBC_QUIESCE_FD2 0x40 /* Disable Fatal_Error[2] reporting */
|
|
#define BBC_QUIESCE_FD3 0x80 /* Disable Fatal_Error[3] reporting */
|
|
|
|
/* Watchdog Action register. When the watchdog device timer expires
|
|
* a line is enabled to the BBC. The action BBC takes when this line
|
|
* is asserted can be controlled by this regiser.
|
|
*/
|
|
#define BBC_WDACTION_RST 0x01 /* When set, watchdog causes system reset.
|
|
* When clear, BBC ignores watchdog signal.
|
|
*/
|
|
#define BBC_WDACTION_RESV 0xfe /* Reserved */
|
|
|
|
/* Soft_POR_GEN register. The POR (Power On Reset) signal may be asserted
|
|
* for specific processors or all processors via this register.
|
|
*/
|
|
#define BBC_SPG_CPU0 0x01 /* Assert POR for processor 0 */
|
|
#define BBC_SPG_CPU1 0x02 /* Assert POR for processor 1 */
|
|
#define BBC_SPG_CPU2 0x04 /* Assert POR for processor 2 */
|
|
#define BBC_SPG_CPU3 0x08 /* Assert POR for processor 3 */
|
|
#define BBC_SPG_CPUALL 0x10 /* Reset all processors and reset
|
|
* the entire system.
|
|
*/
|
|
#define BBC_SPG_RESV 0xe0 /* Reserved */
|
|
|
|
/* Soft_XIR_GEN register. The XIR (eXternally Initiated Reset) signal
|
|
* may be asserted to specific processors via this register.
|
|
*/
|
|
#define BBC_SXG_CPU0 0x01 /* Assert XIR for processor 0 */
|
|
#define BBC_SXG_CPU1 0x02 /* Assert XIR for processor 1 */
|
|
#define BBC_SXG_CPU2 0x04 /* Assert XIR for processor 2 */
|
|
#define BBC_SXG_CPU3 0x08 /* Assert XIR for processor 3 */
|
|
#define BBC_SXG_RESV 0xf0 /* Reserved */
|
|
|
|
/* POR Source register. One may identify the cause of the most recent
|
|
* reset by reading this register.
|
|
*/
|
|
#define BBC_PSRC_SPG0 0x0001 /* CPU 0 reset via BBC_SPG register */
|
|
#define BBC_PSRC_SPG1 0x0002 /* CPU 1 reset via BBC_SPG register */
|
|
#define BBC_PSRC_SPG2 0x0004 /* CPU 2 reset via BBC_SPG register */
|
|
#define BBC_PSRC_SPG3 0x0008 /* CPU 3 reset via BBC_SPG register */
|
|
#define BBC_PSRC_SPGSYS 0x0010 /* System reset via BBC_SPG register */
|
|
#define BBC_PSRC_JTAG 0x0020 /* System reset via JTAG+ */
|
|
#define BBC_PSRC_BUTTON 0x0040 /* System reset via push-button dongle */
|
|
#define BBC_PSRC_PWRUP 0x0080 /* System reset via power-up */
|
|
#define BBC_PSRC_FE0 0x0100 /* CPU 0 reported Fatal_Error */
|
|
#define BBC_PSRC_FE1 0x0200 /* CPU 1 reported Fatal_Error */
|
|
#define BBC_PSRC_FE2 0x0400 /* CPU 2 reported Fatal_Error */
|
|
#define BBC_PSRC_FE3 0x0800 /* CPU 3 reported Fatal_Error */
|
|
#define BBC_PSRC_FE4 0x1000 /* Schizo reported Fatal_Error */
|
|
#define BBC_PSRC_FE5 0x2000 /* Safari device 5 reported Fatal_Error */
|
|
#define BBC_PSRC_FE6 0x4000 /* CPMS reported Fatal_Error */
|
|
#define BBC_PSRC_SYNTH 0x8000 /* System reset when on-board clock synthesizers
|
|
* were updated.
|
|
*/
|
|
#define BBC_PSRC_WDT 0x10000 /* System reset via Super I/O watchdog */
|
|
#define BBC_PSRC_RSC 0x20000 /* System reset via RSC remote monitoring
|
|
* device
|
|
*/
|
|
|
|
/* XIR Source register. The source of an XIR event sent to a processor may
|
|
* be determined via this register.
|
|
*/
|
|
#define BBC_XSRC_SXG0 0x01 /* CPU 0 received XIR via Soft_XIR_GEN reg */
|
|
#define BBC_XSRC_SXG1 0x02 /* CPU 1 received XIR via Soft_XIR_GEN reg */
|
|
#define BBC_XSRC_SXG2 0x04 /* CPU 2 received XIR via Soft_XIR_GEN reg */
|
|
#define BBC_XSRC_SXG3 0x08 /* CPU 3 received XIR via Soft_XIR_GEN reg */
|
|
#define BBC_XSRC_JTAG 0x10 /* All CPUs received XIR via JTAG+ */
|
|
#define BBC_XSRC_W_OR_B 0x20 /* All CPUs received XIR either because:
|
|
* a) Super I/O watchdog fired, or
|
|
* b) XIR push button was activated
|
|
*/
|
|
#define BBC_XSRC_RESV 0xc0 /* Reserved */
|
|
|
|
/* Clock Synthesizers Control register. This register provides the big-bang
|
|
* programming interface to the two clock synthesizers of the machine.
|
|
*/
|
|
#define BBC_CSC_SLOAD 0x01 /* Directly connected to S_LOAD pins */
|
|
#define BBC_CSC_SDATA 0x02 /* Directly connected to S_DATA pins */
|
|
#define BBC_CSC_SCLOCK 0x04 /* Directly connected to S_CLOCK pins */
|
|
#define BBC_CSC_RESV 0x78 /* Reserved */
|
|
#define BBC_CSC_RST 0x80 /* Generate system reset when S_LOAD==1 */
|
|
|
|
/* Energy Star Control register. This register is used to generate the
|
|
* clock frequency change trigger to the main system devices (Schizo and
|
|
* the processors). The transition occurs when bits in this register
|
|
* go from 0 to 1, only one bit must be set at once else no action
|
|
* occurs. Basically the sequence of events is:
|
|
* a) Choose new frequency: full, 1/2 or 1/32
|
|
* b) Program this desired frequency into the cpus and Schizo.
|
|
* c) Set the same value in this register.
|
|
* d) 16 system clocks later, clear this register.
|
|
*/
|
|
#define BBC_ES_CTRL_1_1 0x01 /* Full frequency */
|
|
#define BBC_ES_CTRL_1_2 0x02 /* 1/2 frequency */
|
|
#define BBC_ES_CTRL_1_32 0x20 /* 1/32 frequency */
|
|
#define BBC_ES_RESV 0xdc /* Reserved */
|
|
|
|
/* Energy Star Assert Change Time register. This determines the number
|
|
* of BBC clock cycles (which is half the system frequency) between
|
|
* the detection of FREEZE_ACK being asserted and the assertion of
|
|
* the CLK_CHANGE_L[2:0] signals.
|
|
*/
|
|
#define BBC_ES_ACT_VAL 0xff
|
|
|
|
/* Energy Star Assert Bypass Time register. This determines the number
|
|
* of BBC clock cycles (which is half the system frequency) between
|
|
* the assertion of the CLK_CHANGE_L[2:0] signals and the assertion of
|
|
* the ESTAR_PLL_BYPASS signal.
|
|
*/
|
|
#define BBC_ES_ABT_VAL 0xffff
|
|
|
|
/* Energy Star PLL Settle Time register. This determines the number of
|
|
* BBC clock cycles (which is half the system frequency) between the
|
|
* de-assertion of CLK_CHANGE_L[2:0] and the de-assertion of the FREEZE_L
|
|
* signal.
|
|
*/
|
|
#define BBC_ES_PST_VAL 0xffffffff
|
|
|
|
/* Energy Star Frequency Switch Latency register. This is the number of
|
|
* BBC clocks between the de-assertion of CLK_CHANGE_L[2:0] and the first
|
|
* edge of the Safari clock at the new frequency.
|
|
*/
|
|
#define BBC_ES_FSL_VAL 0xffffffff
|
|
|
|
/* Keyboard Beep control register. This is a simple enabler for the audio
|
|
* beep sound.
|
|
*/
|
|
#define BBC_KBD_BEEP_ENABLE 0x01 /* Enable beep */
|
|
#define BBC_KBD_BEEP_RESV 0xfe /* Reserved */
|
|
|
|
/* Keyboard Beep Counter register. There is a free-running counter inside
|
|
* the BBC which runs at half the system clock. The bit set in this register
|
|
* determines when the audio sound is generated. So for example if bit
|
|
* 10 is set, the audio beep will oscillate at 1/(2**12). The keyboard beep
|
|
* generator automatically selects a different bit to use if the system clock
|
|
* is changed via Energy Star.
|
|
*/
|
|
#define BBC_KBD_BCNT_BITS 0x0007fc00
|
|
#define BBC_KBC_BCNT_RESV 0xfff803ff
|
|
|
|
#endif /* _SPARC64_BBC_H */
|
|
|