mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 22:21:40 +00: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>
206 lines
6.3 KiB
C
206 lines
6.3 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
Aureal Vortex Soundcard driver.
|
|
|
|
IO addr collected from asp4core.vxd:
|
|
function address
|
|
0005D5A0 13004
|
|
00080674 14004
|
|
00080AFF 12818
|
|
|
|
*/
|
|
|
|
#define CHIP_AU8820
|
|
|
|
#define CARD_NAME "Aureal Vortex"
|
|
#define CARD_NAME_SHORT "au8820"
|
|
|
|
/* Number of ADB and WT channels */
|
|
#define NR_ADB 0x10
|
|
#define NR_WT 0x20
|
|
#define NR_SRC 0x10
|
|
#define NR_A3D 0x00
|
|
#define NR_MIXIN 0x10
|
|
#define NR_MIXOUT 0x10
|
|
|
|
|
|
/* ADBDMA */
|
|
#define VORTEX_ADBDMA_STAT 0x105c0 /* read only, subbuffer, DMA pos */
|
|
#define POS_MASK 0x00000fff
|
|
#define POS_SHIFT 0x0
|
|
#define ADB_SUBBUF_MASK 0x00003000 /* ADB only. */
|
|
#define ADB_SUBBUF_SHIFT 0xc /* ADB only. */
|
|
#define VORTEX_ADBDMA_CTRL 0x10580 /* write only, format, flags, DMA pos */
|
|
#define OFFSET_MASK 0x00000fff
|
|
#define OFFSET_SHIFT 0x0
|
|
#define IE_MASK 0x00001000 /* interrupt enable. */
|
|
#define IE_SHIFT 0xc
|
|
#define DIR_MASK 0x00002000 /* Direction. */
|
|
#define DIR_SHIFT 0xd
|
|
#define FMT_MASK 0x0003c000
|
|
#define FMT_SHIFT 0xe
|
|
// The masks and shift also work for the wtdma, if not specified otherwise.
|
|
#define VORTEX_ADBDMA_BUFCFG0 0x10400
|
|
#define VORTEX_ADBDMA_BUFCFG1 0x10404
|
|
#define VORTEX_ADBDMA_BUFBASE 0x10200
|
|
#define VORTEX_ADBDMA_START 0x106c0 /* Which subbuffer starts */
|
|
#define VORTEX_ADBDMA_STATUS 0x10600 /* stored at AdbDma->this_10 / 2 DWORD in size. */
|
|
|
|
/* ADB */
|
|
#define VORTEX_ADB_SR 0x10a00 /* Samplerates enable/disable */
|
|
#define VORTEX_ADB_RTBASE 0x10800
|
|
#define VORTEX_ADB_RTBASE_COUNT 103
|
|
#define VORTEX_ADB_CHNBASE 0x1099c
|
|
#define VORTEX_ADB_CHNBASE_COUNT 22
|
|
#define ROUTE_MASK 0x3fff
|
|
#define ADB_MASK 0x7f
|
|
#define ADB_SHIFT 0x7
|
|
//#define ADB_MIX_MASK 0xf
|
|
/* ADB address */
|
|
#define OFFSET_ADBDMA 0x00
|
|
#define OFFSET_SRCOUT 0x10 /* on channel 0x11 */
|
|
#define OFFSET_SRCIN 0x10 /* on channel < 0x11 */
|
|
#define OFFSET_MIXOUT 0x20 /* source */
|
|
#define OFFSET_MIXIN 0x30 /* sink */
|
|
#define OFFSET_CODECIN 0x48 /* ADB source */
|
|
#define OFFSET_CODECOUT 0x58 /* ADB sink/target */
|
|
#define OFFSET_SPORTOUT 0x60 /* sink */
|
|
#define OFFSET_SPORTIN 0x50 /* source */
|
|
#define OFFSET_EFXOUT 0x50 /* sink */
|
|
#define OFFSET_EFXIN 0x40 /* source */
|
|
#define OFFSET_A3DOUT 0x00 /* This card has no HRTF :( */
|
|
#define OFFSET_A3DIN 0x00
|
|
#define OFFSET_WTOUT 0x58 /* */
|
|
|
|
/* ADB route translate helper */
|
|
#define ADB_DMA(x) (x + OFFSET_ADBDMA)
|
|
#define ADB_SRCOUT(x) (x + OFFSET_SRCOUT)
|
|
#define ADB_SRCIN(x) (x + OFFSET_SRCIN)
|
|
#define ADB_MIXOUT(x) (x + OFFSET_MIXOUT)
|
|
#define ADB_MIXIN(x) (x + OFFSET_MIXIN)
|
|
#define ADB_CODECIN(x) (x + OFFSET_CODECIN)
|
|
#define ADB_CODECOUT(x) (x + OFFSET_CODECOUT)
|
|
#define ADB_SPORTOUT(x) (x + OFFSET_SPORTOUT)
|
|
#define ADB_SPORTIN(x) (x + OFFSET_SPORTIN) /* */
|
|
#define ADB_A3DOUT(x) (x + OFFSET_A3DOUT) /* 8 A3D blocks */
|
|
#define ADB_A3DIN(x) (x + OFFSET_A3DIN)
|
|
#define ADB_WTOUT(x,y) (y + OFFSET_WTOUT)
|
|
|
|
/* WTDMA */
|
|
#define VORTEX_WTDMA_CTRL 0x10500 /* format, DMA pos */
|
|
#define VORTEX_WTDMA_STAT 0x10500 /* DMA subbuf, DMA pos */
|
|
#define WT_SUBBUF_MASK (0x3 << WT_SUBBUF_SHIFT)
|
|
#define WT_SUBBUF_SHIFT 0x15
|
|
#define VORTEX_WTDMA_BUFBASE 0x10000
|
|
#define VORTEX_WTDMA_BUFCFG0 0x10300
|
|
#define VORTEX_WTDMA_BUFCFG1 0x10304
|
|
#define VORTEX_WTDMA_START 0x10640 /* which subbuffer is first */
|
|
|
|
#define VORTEX_WT_BASE 0x9000
|
|
|
|
/* MIXER */
|
|
#define VORTEX_MIXER_SR 0x9f00
|
|
#define VORTEX_MIXER_CLIP 0x9f80
|
|
#define VORTEX_MIXER_CHNBASE 0x9e40
|
|
#define VORTEX_MIXER_RTBASE 0x9e00
|
|
#define MIXER_RTBASE_SIZE 0x26
|
|
#define VORTEX_MIX_ENIN 0x9a00 /* Input enable bits. 4 bits wide. */
|
|
#define VORTEX_MIX_SMP 0x9c00
|
|
|
|
/* MIX */
|
|
#define VORTEX_MIX_INVOL_A 0x9000 /* in? */
|
|
#define VORTEX_MIX_INVOL_B 0x8000 /* out? */
|
|
#define VORTEX_MIX_VOL_A 0x9800
|
|
#define VORTEX_MIX_VOL_B 0x8800
|
|
|
|
#define VOL_MIN 0x80 /* Input volume when muted. */
|
|
#define VOL_MAX 0x7f /* FIXME: Not confirmed! Just guessed. */
|
|
|
|
//#define MIX_OUTL 0xe
|
|
//#define MIX_OUTR 0xf
|
|
//#define MIX_INL 0xe
|
|
//#define MIX_INR 0xf
|
|
#define MIX_DEFIGAIN 0x08 /* 0x8 => 6dB */
|
|
#define MIX_DEFOGAIN 0x08
|
|
|
|
/* SRC */
|
|
#define VORTEX_SRCBLOCK_SR 0xccc0
|
|
#define VORTEX_SRC_CHNBASE 0xcc40
|
|
#define VORTEX_SRC_RTBASE 0xcc00
|
|
#define VORTEX_SRC_SOURCE 0xccc4
|
|
#define VORTEX_SRC_SOURCESIZE 0xccc8
|
|
#define VORTEX_SRC_U0 0xce00
|
|
#define VORTEX_SRC_DRIFT0 0xce80
|
|
#define VORTEX_SRC_DRIFT1 0xcec0
|
|
#define VORTEX_SRC_U1 0xcf00
|
|
#define VORTEX_SRC_DRIFT2 0xcf40
|
|
#define VORTEX_SRC_U2 0xcf80
|
|
#define VORTEX_SRC_DATA 0xc800
|
|
#define VORTEX_SRC_DATA0 0xc000
|
|
#define VORTEX_SRC_CONVRATIO 0xce40
|
|
//#define SRC_RATIO(x) ((((x<<15)/48000) + 1)/2) /* Playback */
|
|
//#define SRC_RATIO2(x) ((((48000<<15)/x) + 1)/2) /* Recording */
|
|
|
|
/* FIFO */
|
|
#define VORTEX_FIFO_ADBCTRL 0xf800 /* Control bits. */
|
|
#define VORTEX_FIFO_WTCTRL 0xf840
|
|
#define FIFO_RDONLY 0x00000001
|
|
#define FIFO_CTRL 0x00000002 /* Allow ctrl. ? */
|
|
#define FIFO_VALID 0x00000010
|
|
#define FIFO_EMPTY 0x00000020
|
|
#define FIFO_U0 0x00001000 /* Unknown. */
|
|
#define FIFO_U1 0x00010000
|
|
#define FIFO_SIZE_BITS 5
|
|
#define FIFO_SIZE (1<<FIFO_SIZE_BITS) // 0x20
|
|
#define FIFO_MASK (FIFO_SIZE-1) //0x1f /* at shift left 0xc */
|
|
#define VORTEX_FIFO_ADBDATA 0xe000
|
|
#define VORTEX_FIFO_WTDATA 0xe800
|
|
|
|
/* CODEC */
|
|
#define VORTEX_CODEC_CTRL 0x11984
|
|
#define VORTEX_CODEC_EN 0x11990
|
|
#define EN_CODEC 0x00000300
|
|
#define EN_SPORT 0x00030000
|
|
#define EN_SPDIF 0x000c0000
|
|
#define VORTEX_CODEC_CHN 0x11880
|
|
#define VORTEX_CODEC_IO 0x11988
|
|
|
|
#define VORTEX_SPDIF_FLAGS 0x1005c /* FIXME */
|
|
#define VORTEX_SPDIF_CFG0 0x119D0
|
|
#define VORTEX_SPDIF_CFG1 0x119D4
|
|
#define VORTEX_SPDIF_SMPRATE 0x11994
|
|
|
|
/* Sample timer */
|
|
#define VORTEX_SMP_TIME 0x11998
|
|
|
|
/* IRQ */
|
|
#define VORTEX_IRQ_SOURCE 0x12800 /* Interrupt source flags. */
|
|
#define VORTEX_IRQ_CTRL 0x12804 /* Interrupt source mask. */
|
|
|
|
#define VORTEX_STAT 0x12808 /* ?? */
|
|
|
|
#define VORTEX_CTRL 0x1280c
|
|
#define CTRL_MIDI_EN 0x00000001
|
|
#define CTRL_MIDI_PORT 0x00000060
|
|
#define CTRL_GAME_EN 0x00000008
|
|
#define CTRL_GAME_PORT 0x00000e00
|
|
#define CTRL_IRQ_ENABLE 0x4000
|
|
|
|
/* write: Timer period config / read: TIMER IRQ ack. */
|
|
#define VORTEX_IRQ_STAT 0x1199c
|
|
|
|
/* DMA */
|
|
#define VORTEX_DMA_BUFFER 0x10200
|
|
#define VORTEX_ENGINE_CTRL 0x1060c
|
|
#define ENGINE_INIT 0x0L
|
|
|
|
/* MIDI *//* GAME. */
|
|
#define VORTEX_MIDI_DATA 0x11000
|
|
#define VORTEX_MIDI_CMD 0x11004 /* Write command / Read status */
|
|
#define VORTEX_GAME_LEGACY 0x11008
|
|
#define VORTEX_CTRL2 0x1100c
|
|
#define CTRL2_GAME_ADCMODE 0x40
|
|
#define VORTEX_GAME_AXIS 0x11010
|
|
#define AXIS_SIZE 4
|
|
#define AXIS_RANGE 0x1fff
|