mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-27 19:29:37 +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>
338 lines
10 KiB
C
338 lines
10 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef _AHA152X_H
|
|
#define _AHA152X_H
|
|
|
|
/*
|
|
* $Id: aha152x.h,v 2.7 2004/01/24 11:39:03 fischer Exp $
|
|
*/
|
|
|
|
/* number of queueable commands
|
|
(unless we support more than 1 cmd_per_lun this should do) */
|
|
#define AHA152X_MAXQUEUE 7
|
|
|
|
#define AHA152X_REVID "Adaptec 152x SCSI driver; $Revision: 2.7 $"
|
|
|
|
/* port addresses */
|
|
#define SCSISEQ (HOSTIOPORT0+0x00) /* SCSI sequence control */
|
|
#define SXFRCTL0 (HOSTIOPORT0+0x01) /* SCSI transfer control 0 */
|
|
#define SXFRCTL1 (HOSTIOPORT0+0x02) /* SCSI transfer control 1 */
|
|
#define SCSISIG (HOSTIOPORT0+0x03) /* SCSI signal in/out */
|
|
#define SCSIRATE (HOSTIOPORT0+0x04) /* SCSI rate control */
|
|
#define SELID (HOSTIOPORT0+0x05) /* selection/reselection ID */
|
|
#define SCSIID SELID /* SCSI ID */
|
|
#define SCSIDAT (HOSTIOPORT0+0x06) /* SCSI latched data */
|
|
#define SCSIBUS (HOSTIOPORT0+0x07) /* SCSI data bus */
|
|
#define STCNT0 (HOSTIOPORT0+0x08) /* SCSI transfer count 0 */
|
|
#define STCNT1 (HOSTIOPORT0+0x09) /* SCSI transfer count 1 */
|
|
#define STCNT2 (HOSTIOPORT0+0x0a) /* SCSI transfer count 2 */
|
|
#define SSTAT0 (HOSTIOPORT0+0x0b) /* SCSI interrupt status 0 */
|
|
#define SSTAT1 (HOSTIOPORT0+0x0c) /* SCSI interrupt status 1 */
|
|
#define SSTAT2 (HOSTIOPORT0+0x0d) /* SCSI interrupt status 2 */
|
|
#define SCSITEST (HOSTIOPORT0+0x0e) /* SCSI test control */
|
|
#define SSTAT3 SCSITEST /* SCSI interrupt status 3 */
|
|
#define SSTAT4 (HOSTIOPORT0+0x0f) /* SCSI status 4 */
|
|
#define SIMODE0 (HOSTIOPORT1+0x10) /* SCSI interrupt mode 0 */
|
|
#define SIMODE1 (HOSTIOPORT1+0x11) /* SCSI interrupt mode 1 */
|
|
#define DMACNTRL0 (HOSTIOPORT1+0x12) /* DMA control 0 */
|
|
#define DMACNTRL1 (HOSTIOPORT1+0x13) /* DMA control 1 */
|
|
#define DMASTAT (HOSTIOPORT1+0x14) /* DMA status */
|
|
#define FIFOSTAT (HOSTIOPORT1+0x15) /* FIFO status */
|
|
#define DATAPORT (HOSTIOPORT1+0x16) /* DATA port */
|
|
#define BRSTCNTRL (HOSTIOPORT1+0x18) /* burst control */
|
|
#define PORTA (HOSTIOPORT1+0x1a) /* PORT A */
|
|
#define PORTB (HOSTIOPORT1+0x1b) /* PORT B */
|
|
#define REV (HOSTIOPORT1+0x1c) /* revision */
|
|
#define STACK (HOSTIOPORT1+0x1d) /* stack */
|
|
#define TEST (HOSTIOPORT1+0x1e) /* test register */
|
|
|
|
#define IO_RANGE 0x20
|
|
|
|
/* used in aha152x_porttest */
|
|
#define O_PORTA 0x1a /* PORT A */
|
|
#define O_PORTB 0x1b /* PORT B */
|
|
#define O_DMACNTRL1 0x13 /* DMA control 1 */
|
|
#define O_STACK 0x1d /* stack */
|
|
|
|
/* used in tc1550_porttest */
|
|
#define O_TC_PORTA 0x0a /* PORT A */
|
|
#define O_TC_PORTB 0x0b /* PORT B */
|
|
#define O_TC_DMACNTRL1 0x03 /* DMA control 1 */
|
|
#define O_TC_STACK 0x0d /* stack */
|
|
|
|
/* bits and bitmasks to ports */
|
|
|
|
/* SCSI sequence control */
|
|
#define TEMODEO 0x80
|
|
#define ENSELO 0x40
|
|
#define ENSELI 0x20
|
|
#define ENRESELI 0x10
|
|
#define ENAUTOATNO 0x08
|
|
#define ENAUTOATNI 0x04
|
|
#define ENAUTOATNP 0x02
|
|
#define SCSIRSTO 0x01
|
|
|
|
/* SCSI transfer control 0 */
|
|
#define SCSIEN 0x80
|
|
#define DMAEN 0x40
|
|
#define CH1 0x20
|
|
#define CLRSTCNT 0x10
|
|
#define SPIOEN 0x08
|
|
#define CLRCH1 0x02
|
|
|
|
/* SCSI transfer control 1 */
|
|
#define BITBUCKET 0x80
|
|
#define SWRAPEN 0x40
|
|
#define ENSPCHK 0x20
|
|
#define STIMESEL 0x18 /* mask */
|
|
#define STIMESEL_ 3
|
|
#define ENSTIMER 0x04
|
|
#define BYTEALIGN 0x02
|
|
|
|
/* SCSI signal IN */
|
|
#define SIG_CDI 0x80
|
|
#define SIG_IOI 0x40
|
|
#define SIG_MSGI 0x20
|
|
#define SIG_ATNI 0x10
|
|
#define SIG_SELI 0x08
|
|
#define SIG_BSYI 0x04
|
|
#define SIG_REQI 0x02
|
|
#define SIG_ACKI 0x01
|
|
|
|
/* SCSI Phases */
|
|
#define P_MASK (SIG_MSGI|SIG_CDI|SIG_IOI)
|
|
#define P_DATAO (0)
|
|
#define P_DATAI (SIG_IOI)
|
|
#define P_CMD (SIG_CDI)
|
|
#define P_STATUS (SIG_CDI|SIG_IOI)
|
|
#define P_MSGO (SIG_MSGI|SIG_CDI)
|
|
#define P_MSGI (SIG_MSGI|SIG_CDI|SIG_IOI)
|
|
|
|
/* SCSI signal OUT */
|
|
#define SIG_CDO 0x80
|
|
#define SIG_IOO 0x40
|
|
#define SIG_MSGO 0x20
|
|
#define SIG_ATNO 0x10
|
|
#define SIG_SELO 0x08
|
|
#define SIG_BSYO 0x04
|
|
#define SIG_REQO 0x02
|
|
#define SIG_ACKO 0x01
|
|
|
|
/* SCSI rate control */
|
|
#define SXFR 0x70 /* mask */
|
|
#define SXFR_ 4
|
|
#define SOFS 0x0f /* mask */
|
|
|
|
/* SCSI ID */
|
|
#define OID 0x70
|
|
#define OID_ 4
|
|
#define TID 0x07
|
|
|
|
/* SCSI transfer count */
|
|
#define GETSTCNT() ( (GETPORT(STCNT2)<<16) \
|
|
+ (GETPORT(STCNT1)<< 8) \
|
|
+ GETPORT(STCNT0) )
|
|
|
|
#define SETSTCNT(X) { SETPORT(STCNT2, ((X) & 0xFF0000) >> 16); \
|
|
SETPORT(STCNT1, ((X) & 0x00FF00) >> 8); \
|
|
SETPORT(STCNT0, ((X) & 0x0000FF) ); }
|
|
|
|
/* SCSI interrupt status */
|
|
#define TARGET 0x80
|
|
#define SELDO 0x40
|
|
#define SELDI 0x20
|
|
#define SELINGO 0x10
|
|
#define SWRAP 0x08
|
|
#define SDONE 0x04
|
|
#define SPIORDY 0x02
|
|
#define DMADONE 0x01
|
|
|
|
#define SETSDONE 0x80
|
|
#define CLRSELDO 0x40
|
|
#define CLRSELDI 0x20
|
|
#define CLRSELINGO 0x10
|
|
#define CLRSWRAP 0x08
|
|
#define CLRSDONE 0x04
|
|
#define CLRSPIORDY 0x02
|
|
#define CLRDMADONE 0x01
|
|
|
|
/* SCSI status 1 */
|
|
#define SELTO 0x80
|
|
#define ATNTARG 0x40
|
|
#define SCSIRSTI 0x20
|
|
#define PHASEMIS 0x10
|
|
#define BUSFREE 0x08
|
|
#define SCSIPERR 0x04
|
|
#define PHASECHG 0x02
|
|
#define REQINIT 0x01
|
|
|
|
#define CLRSELTIMO 0x80
|
|
#define CLRATNO 0x40
|
|
#define CLRSCSIRSTI 0x20
|
|
#define CLRBUSFREE 0x08
|
|
#define CLRSCSIPERR 0x04
|
|
#define CLRPHASECHG 0x02
|
|
#define CLRREQINIT 0x01
|
|
|
|
/* SCSI status 2 */
|
|
#define SOFFSET 0x20
|
|
#define SEMPTY 0x10
|
|
#define SFULL 0x08
|
|
#define SFCNT 0x07 /* mask */
|
|
|
|
/* SCSI status 3 */
|
|
#define SCSICNT 0xf0 /* mask */
|
|
#define SCSICNT_ 4
|
|
#define OFFCNT 0x0f /* mask */
|
|
|
|
/* SCSI TEST control */
|
|
#define SCTESTU 0x08
|
|
#define SCTESTD 0x04
|
|
#define STCTEST 0x01
|
|
|
|
/* SCSI status 4 */
|
|
#define SYNCERR 0x04
|
|
#define FWERR 0x02
|
|
#define FRERR 0x01
|
|
|
|
#define CLRSYNCERR 0x04
|
|
#define CLRFWERR 0x02
|
|
#define CLRFRERR 0x01
|
|
|
|
/* SCSI interrupt mode 0 */
|
|
#define ENSELDO 0x40
|
|
#define ENSELDI 0x20
|
|
#define ENSELINGO 0x10
|
|
#define ENSWRAP 0x08
|
|
#define ENSDONE 0x04
|
|
#define ENSPIORDY 0x02
|
|
#define ENDMADONE 0x01
|
|
|
|
/* SCSI interrupt mode 1 */
|
|
#define ENSELTIMO 0x80
|
|
#define ENATNTARG 0x40
|
|
#define ENSCSIRST 0x20
|
|
#define ENPHASEMIS 0x10
|
|
#define ENBUSFREE 0x08
|
|
#define ENSCSIPERR 0x04
|
|
#define ENPHASECHG 0x02
|
|
#define ENREQINIT 0x01
|
|
|
|
/* DMA control 0 */
|
|
#define ENDMA 0x80
|
|
#define _8BIT 0x40
|
|
#define DMA 0x20
|
|
#define WRITE_READ 0x08
|
|
#define INTEN 0x04
|
|
#define RSTFIFO 0x02
|
|
#define SWINT 0x01
|
|
|
|
/* DMA control 1 */
|
|
#define PWRDWN 0x80
|
|
#define STK 0x07 /* mask */
|
|
|
|
/* DMA status */
|
|
#define ATDONE 0x80
|
|
#define WORDRDY 0x40
|
|
#define INTSTAT 0x20
|
|
#define DFIFOFULL 0x10
|
|
#define DFIFOEMP 0x08
|
|
|
|
/* BURST control */
|
|
#define BON 0xf0
|
|
#define BOFF 0x0f
|
|
|
|
/* TEST REGISTER */
|
|
#define BOFFTMR 0x40
|
|
#define BONTMR 0x20
|
|
#define STCNTH 0x10
|
|
#define STCNTM 0x08
|
|
#define STCNTL 0x04
|
|
#define SCSIBLK 0x02
|
|
#define DMABLK 0x01
|
|
|
|
/* On the AHA-152x board PORTA and PORTB contain
|
|
some information about the board's configuration. */
|
|
typedef union {
|
|
struct {
|
|
unsigned reserved:2; /* reserved */
|
|
unsigned tardisc:1; /* Target disconnect: 0=disabled, 1=enabled */
|
|
unsigned syncneg:1; /* Initial sync neg: 0=disabled, 1=enabled */
|
|
unsigned msgclasses:2; /* Message classes
|
|
0=#4
|
|
1=#0, #1, #2, #3, #4
|
|
2=#0, #3, #4
|
|
3=#0, #4
|
|
*/
|
|
unsigned boot:1; /* boot: 0=disabled, 1=enabled */
|
|
unsigned dma:1; /* Transfer mode: 0=PIO; 1=DMA */
|
|
unsigned id:3; /* SCSI-id */
|
|
unsigned irq:2; /* IRQ-Channel: 0,3=12, 1=10, 2=11 */
|
|
unsigned dmachan:2; /* DMA-Channel: 0=0, 1=5, 2=6, 3=7 */
|
|
unsigned parity:1; /* SCSI-parity: 1=enabled 0=disabled */
|
|
} fields;
|
|
unsigned short port;
|
|
} aha152x_config ;
|
|
|
|
#define cf_parity fields.parity
|
|
#define cf_dmachan fields.dmachan
|
|
#define cf_irq fields.irq
|
|
#define cf_id fields.id
|
|
#define cf_dma fields.dma
|
|
#define cf_boot fields.boot
|
|
#define cf_msgclasses fields.msgclasses
|
|
#define cf_syncneg fields.syncneg
|
|
#define cf_tardisc fields.tardisc
|
|
#define cf_port port
|
|
|
|
/* Some macros to manipulate ports and their bits */
|
|
|
|
#define SETPORT(PORT, VAL) outb( (VAL), (PORT) )
|
|
#define GETPORT(PORT) inb( PORT )
|
|
#define SETBITS(PORT, BITS) outb( (inb(PORT) | (BITS)), (PORT) )
|
|
#define CLRBITS(PORT, BITS) outb( (inb(PORT) & ~(BITS)), (PORT) )
|
|
#define TESTHI(PORT, BITS) ((inb(PORT) & (BITS)) == (BITS))
|
|
#define TESTLO(PORT, BITS) ((inb(PORT) & (BITS)) == 0)
|
|
|
|
#define SETRATE(RATE) SETPORT(SCSIRATE,(RATE) & 0x7f)
|
|
|
|
#if defined(AHA152X_DEBUG)
|
|
enum {
|
|
debug_procinfo = 0x0001,
|
|
debug_queue = 0x0002,
|
|
debug_locking = 0x0004,
|
|
debug_intr = 0x0008,
|
|
debug_selection = 0x0010,
|
|
debug_msgo = 0x0020,
|
|
debug_msgi = 0x0040,
|
|
debug_status = 0x0080,
|
|
debug_cmd = 0x0100,
|
|
debug_datai = 0x0200,
|
|
debug_datao = 0x0400,
|
|
debug_eh = 0x0800,
|
|
debug_done = 0x1000,
|
|
debug_phases = 0x2000,
|
|
};
|
|
#endif
|
|
|
|
/* for the pcmcia stub */
|
|
struct aha152x_setup {
|
|
int io_port;
|
|
int irq;
|
|
int scsiid;
|
|
int reconnect;
|
|
int parity;
|
|
int synchronous;
|
|
int delay;
|
|
int ext_trans;
|
|
int tc1550;
|
|
#if defined(AHA152X_DEBUG)
|
|
int debug;
|
|
#endif
|
|
char *conf;
|
|
};
|
|
|
|
struct Scsi_Host *aha152x_probe_one(struct aha152x_setup *);
|
|
void aha152x_release(struct Scsi_Host *);
|
|
int aha152x_host_reset_host(struct Scsi_Host *);
|
|
|
|
#endif /* _AHA152X_H */
|