// SPDX-License-Identifier: GPL-2.0
/*
* R8A66597 driver platform data
*
* Copyright (C) 2009 Renesas Solutions Corp.
*
* Author : Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
*/
#ifndef __LINUX_USB_R8A66597_H
#define __LINUX_USB_R8A66597_H
#define R8A66597_PLATDATA_XTAL_12MHZ 0 x01
#define R8A66597_PLATDATA_XTAL_24MHZ 0 x02
#define R8A66597_PLATDATA_XTAL_48MHZ 0 x03
struct r8a66597_platdata {
/* This callback can control port power instead of DVSTCTR register. */
void (*port_power)(int port, int power);
/* This parameter is for BUSWAIT */
u16 buswait;
/* set one = on chip controller, set zero = external controller */
unsigned on_chip:1 ;
/* (external controller only) set R8A66597_PLATDATA_XTAL_nnMHZ */
unsigned xtal:2 ;
/* set one = 3.3V, set zero = 1.5V */
unsigned vif:1 ;
/* set one = big endian, set zero = little endian */
unsigned endian:1 ;
/* (external controller only) set one = WR0_N shorted to WR1_N */
unsigned wr0_shorted_to_wr1:1 ;
/* set one = using SUDMAC */
unsigned sudmac:1 ;
};
/* Register definitions */
#define SYSCFG0 0 x00
#define SYSCFG1 0 x02
#define SYSSTS0 0 x04
#define SYSSTS1 0 x06
#define DVSTCTR0 0 x08
#define DVSTCTR1 0 x0A
#define TESTMODE 0 x0C
#define PINCFG 0 x0E
#define DMA0CFG 0 x10
#define DMA1CFG 0 x12
#define CFIFO 0 x14
#define D0FIFO 0 x18
#define D1FIFO 0 x1C
#define CFIFOSEL 0 x20
#define CFIFOCTR 0 x22
#define CFIFOSIE 0 x24
#define D0FIFOSEL 0 x28
#define D0FIFOCTR 0 x2A
#define D1FIFOSEL 0 x2C
#define D1FIFOCTR 0 x2E
#define INTENB0 0 x30
#define INTENB1 0 x32
#define INTENB2 0 x34
#define BRDYENB 0 x36
#define NRDYENB 0 x38
#define BEMPENB 0 x3A
#define SOFCFG 0 x3C
#define INTSTS0 0 x40
#define INTSTS1 0 x42
#define INTSTS2 0 x44
#define BRDYSTS 0 x46
#define NRDYSTS 0 x48
#define BEMPSTS 0 x4A
#define FRMNUM 0 x4C
#define UFRMNUM 0 x4E
#define USBADDR 0 x50
#define USBREQ 0 x54
#define USBVAL 0 x56
#define USBINDX 0 x58
#define USBLENG 0 x5A
#define DCPCFG 0 x5C
#define DCPMAXP 0 x5E
#define DCPCTR 0 x60
#define PIPESEL 0 x64
#define PIPECFG 0 x68
#define PIPEBUF 0 x6A
#define PIPEMAXP 0 x6C
#define PIPEPERI 0 x6E
#define PIPE1CTR 0 x70
#define PIPE2CTR 0 x72
#define PIPE3CTR 0 x74
#define PIPE4CTR 0 x76
#define PIPE5CTR 0 x78
#define PIPE6CTR 0 x7A
#define PIPE7CTR 0 x7C
#define PIPE8CTR 0 x7E
#define PIPE9CTR 0 x80
#define PIPE1TRE 0 x90
#define PIPE1TRN 0 x92
#define PIPE2TRE 0 x94
#define PIPE2TRN 0 x96
#define PIPE3TRE 0 x98
#define PIPE3TRN 0 x9A
#define PIPE4TRE 0 x9C
#define PIPE4TRN 0 x9E
#define PIPE5TRE 0 xA0
#define PIPE5TRN 0 xA2
#define DEVADD0 0 xD0
#define DEVADD1 0 xD2
#define DEVADD2 0 xD4
#define DEVADD3 0 xD6
#define DEVADD4 0 xD8
#define DEVADD5 0 xDA
#define DEVADD6 0 xDC
#define DEVADD7 0 xDE
#define DEVADD8 0 xE0
#define DEVADD9 0 xE2
#define DEVADDA 0 xE4
/* System Configuration Control Register */
#define XTAL 0 xC000 /* b15-14: Crystal selection */
#define XTAL48 0 x8000 /* 48MHz */
#define XTAL24 0 x4000 /* 24MHz */
#define XTAL12 0 x0000 /* 12MHz */
#define XCKE 0 x2000 /* b13: External clock enable */
#define PLLC 0 x0800 /* b11: PLL control */
#define SCKE 0 x0400 /* b10: USB clock enable */
#define PCSDIS 0 x0200 /* b9: not CS wakeup */
#define LPSME 0 x0100 /* b8: Low power sleep mode */
#define HSE 0 x0080 /* b7: Hi-speed enable */
#define DCFM 0 x0040 /* b6: Controller function select */
#define DRPD 0 x0020 /* b5: D+/- pull down control */
#define DPRPU 0 x0010 /* b4: D+ pull up control */
#define USBE 0 x0001 /* b0: USB module operation enable */
/* System Configuration Status Register */
#define OVCBIT 0 x8000 /* b15-14: Over-current bit */
#define OVCMON 0 xC000 /* b15-14: Over-current monitor */
#define SOFEA 0 x0020 /* b5: SOF monitor */
#define IDMON 0 x0004 /* b3: ID-pin monitor */
#define LNST 0 x0003 /* b1-0: D+, D- line status */
#define SE1 0 x0003 /* SE1 */
#define FS_KSTS 0 x0002 /* Full-Speed K State */
#define FS_JSTS 0 x0001 /* Full-Speed J State */
#define LS_JSTS 0 x0002 /* Low-Speed J State */
#define LS_KSTS 0 x0001 /* Low-Speed K State */
#define SE0 0 x0000 /* SE0 */
/* Device State Control Register */
#define EXTLP0 0 x0400 /* b10: External port */
#define VBOUT 0 x0200 /* b9: VBUS output */
#define WKUP 0 x0100 /* b8: Remote wakeup */
#define RWUPE 0 x0080 /* b7: Remote wakeup sense */
#define USBRST 0 x0040 /* b6: USB reset enable */
#define RESUME 0 x0020 /* b5: Resume enable */
#define UACT 0 x0010 /* b4: USB bus enable */
#define RHST 0 x0007 /* b1-0: Reset handshake status */
#define HSPROC 0 x0004 /* HS handshake is processing */
#define HSMODE 0 x0003 /* Hi-Speed mode */
#define FSMODE 0 x0002 /* Full-Speed mode */
#define LSMODE 0 x0001 /* Low-Speed mode */
#define UNDECID 0 x0000 /* Undecided */
/* Test Mode Register */
#define UTST 0 x000F /* b3-0: Test select */
#define H_TST_PACKET 0 x000C /* HOST TEST Packet */
#define H_TST_SE0_NAK 0 x000B /* HOST TEST SE0 NAK */
#define H_TST_K 0 x000A /* HOST TEST K */
#define H_TST_J 0 x0009 /* HOST TEST J */
#define H_TST_NORMAL 0 x0000 /* HOST Normal Mode */
#define P_TST_PACKET 0 x0004 /* PERI TEST Packet */
#define P_TST_SE0_NAK 0 x0003 /* PERI TEST SE0 NAK */
#define P_TST_K 0 x0002 /* PERI TEST K */
#define P_TST_J 0 x0001 /* PERI TEST J */
#define P_TST_NORMAL 0 x0000 /* PERI Normal Mode */
/* Data Pin Configuration Register */
#define LDRV 0 x8000 /* b15: Drive Current Adjust */
#define VIF1 0 x0000 /* VIF = 1.8V */
#define VIF3 0 x8000 /* VIF = 3.3V */
#define INTA 0 x0001 /* b1: USB INT-pin active */
/* DMAx Pin Configuration Register */
#define DREQA 0 x4000 /* b14: Dreq active select */
#define BURST 0 x2000 /* b13: Burst mode */
#define DACKA 0 x0400 /* b10: Dack active select */
#define DFORM 0 x0380 /* b9-7: DMA mode select */
#define CPU_ADR_RD_WR 0 x0000 /* Address + RD/WR mode (CPU bus) */
#define CPU_DACK_RD_WR 0 x0100 /* DACK + RD/WR mode (CPU bus) */
#define CPU_DACK_ONLY 0 x0180 /* DACK only mode (CPU bus) */
#define SPLIT_DACK_ONLY 0 x0200 /* DACK only mode (SPLIT bus) */
#define DENDA 0 x0040 /* b6: Dend active select */
#define PKTM 0 x0020 /* b5: Packet mode */
#define DENDE 0 x0010 /* b4: Dend enable */
#define OBUS 0 x0004 /* b2: OUTbus mode */
/* CFIFO/DxFIFO Port Select Register */
#define RCNT 0 x8000 /* b15: Read count mode */
#define REW 0 x4000 /* b14: Buffer rewind */
#define DCLRM 0 x2000 /* b13: DMA buffer clear mode */
#define DREQE 0 x1000 /* b12: DREQ output enable */
#define MBW_8 0 x0000 /* 8bit */
#define MBW_16 0 x0400 /* 16bit */
#define MBW_32 0 x0800 /* 32bit */
#define BIGEND 0 x0100 /* b8: Big endian mode */
#define BYTE_LITTLE 0 x0000 /* little dendian */
#define BYTE_BIG 0 x0100 /* big endifan */
#define ISEL 0 x0020 /* b5: DCP FIFO port direction select */
#define CURPIPE 0 x000F /* b2-0: PIPE select */
/* CFIFO/DxFIFO Port Control Register */
#define BVAL 0 x8000 /* b15: Buffer valid flag */
#define BCLR 0 x4000 /* b14: Buffer clear */
#define FRDY 0 x2000 /* b13: FIFO ready */
#define DTLN 0 x0FFF /* b11-0: FIFO received data length */
/* Interrupt Enable Register 0 */
#define VBSE 0 x8000 /* b15: VBUS interrupt */
#define RSME 0 x4000 /* b14: Resume interrupt */
#define SOFE 0 x2000 /* b13: Frame update interrupt */
#define DVSE 0 x1000 /* b12: Device state transition interrupt */
#define CTRE 0 x0800 /* b11: Control transfer stage transition interrupt */
#define BEMPE 0 x0400 /* b10: Buffer empty interrupt */
#define NRDYE 0 x0200 /* b9: Buffer not ready interrupt */
#define BRDYE 0 x0100 /* b8: Buffer ready interrupt */
/* Interrupt Enable Register 1 */
#define OVRCRE 0 x8000 /* b15: Over-current interrupt */
#define BCHGE 0 x4000 /* b14: USB us chenge interrupt */
#define DTCHE 0 x1000 /* b12: Detach sense interrupt */
#define ATTCHE 0 x0800 /* b11: Attach sense interrupt */
#define EOFERRE 0 x0040 /* b6: EOF error interrupt */
#define SIGNE 0 x0020 /* b5: SETUP IGNORE interrupt */
#define SACKE 0 x0010 /* b4: SETUP ACK interrupt */
/* BRDY Interrupt Enable/Status Register */
#define BRDY9 0 x0200 /* b9: PIPE9 */
#define BRDY8 0 x0100 /* b8: PIPE8 */
#define BRDY7 0 x0080 /* b7: PIPE7 */
#define BRDY6 0 x0040 /* b6: PIPE6 */
#define BRDY5 0 x0020 /* b5: PIPE5 */
#define BRDY4 0 x0010 /* b4: PIPE4 */
#define BRDY3 0 x0008 /* b3: PIPE3 */
#define BRDY2 0 x0004 /* b2: PIPE2 */
#define BRDY1 0 x0002 /* b1: PIPE1 */
#define BRDY0 0 x0001 /* b1: PIPE0 */
/* NRDY Interrupt Enable/Status Register */
#define NRDY9 0 x0200 /* b9: PIPE9 */
#define NRDY8 0 x0100 /* b8: PIPE8 */
#define NRDY7 0 x0080 /* b7: PIPE7 */
#define NRDY6 0 x0040 /* b6: PIPE6 */
#define NRDY5 0 x0020 /* b5: PIPE5 */
#define NRDY4 0 x0010 /* b4: PIPE4 */
#define NRDY3 0 x0008 /* b3: PIPE3 */
#define NRDY2 0 x0004 /* b2: PIPE2 */
#define NRDY1 0 x0002 /* b1: PIPE1 */
#define NRDY0 0 x0001 /* b1: PIPE0 */
/* BEMP Interrupt Enable/Status Register */
#define BEMP9 0 x0200 /* b9: PIPE9 */
#define BEMP8 0 x0100 /* b8: PIPE8 */
#define BEMP7 0 x0080 /* b7: PIPE7 */
#define BEMP6 0 x0040 /* b6: PIPE6 */
#define BEMP5 0 x0020 /* b5: PIPE5 */
#define BEMP4 0 x0010 /* b4: PIPE4 */
#define BEMP3 0 x0008 /* b3: PIPE3 */
#define BEMP2 0 x0004 /* b2: PIPE2 */
#define BEMP1 0 x0002 /* b1: PIPE1 */
#define BEMP0 0 x0001 /* b0: PIPE0 */
/* SOF Pin Configuration Register */
#define TRNENSEL 0 x0100 /* b8: Select transaction enable period */
#define BRDYM 0 x0040 /* b6: BRDY clear timing */
#define INTL 0 x0020 /* b5: Interrupt sense select */
#define EDGESTS 0 x0010 /* b4: */
#define SOFMODE 0 x000C /* b3-2: SOF pin select */
#define SOF_125US 0 x0008 /* SOF OUT 125us Frame Signal */
#define SOF_1MS 0 x0004 /* SOF OUT 1ms Frame Signal */
#define SOF_DISABLE 0 x0000 /* SOF OUT Disable */
/* Interrupt Status Register 0 */
#define VBINT 0 x8000 /* b15: VBUS interrupt */
#define RESM 0 x4000 /* b14: Resume interrupt */
#define SOFR 0 x2000 /* b13: SOF frame update interrupt */
#define DVST 0 x1000 /* b12: Device state transition interrupt */
#define CTRT 0 x0800 /* b11: Control transfer stage transition interrupt */
#define BEMP 0 x0400 /* b10: Buffer empty interrupt */
#define NRDY 0 x0200 /* b9: Buffer not ready interrupt */
#define BRDY 0 x0100 /* b8: Buffer ready interrupt */
#define VBSTS 0 x0080 /* b7: VBUS input port */
#define DVSQ 0 x0070 /* b6-4: Device state */
#define DS_SPD_CNFG 0 x0070 /* Suspend Configured */
#define DS_SPD_ADDR 0 x0060 /* Suspend Address */
#define DS_SPD_DFLT 0 x0050 /* Suspend Default */
#define DS_SPD_POWR 0 x0040 /* Suspend Powered */
#define DS_SUSP 0 x0040 /* Suspend */
#define DS_CNFG 0 x0030 /* Configured */
#define DS_ADDS 0 x0020 /* Address */
#define DS_DFLT 0 x0010 /* Default */
#define DS_POWR 0 x0000 /* Powered */
#define DVSQS 0 x0030 /* b5-4: Device state */
#define VALID 0 x0008 /* b3: Setup packet detected flag */
#define CTSQ 0 x0007 /* b2-0: Control transfer stage */
#define CS_SQER 0 x0006 /* Sequence error */
#define CS_WRND 0 x0005 /* Control write nodata status stage */
#define CS_WRSS 0 x0004 /* Control write status stage */
#define CS_WRDS 0 x0003 /* Control write data stage */
#define CS_RDSS 0 x0002 /* Control read status stage */
#define CS_RDDS 0 x0001 /* Control read data stage */
#define CS_IDST 0 x0000 /* Idle or setup stage */
/* Interrupt Status Register 1 */
#define OVRCR 0 x8000 /* b15: Over-current interrupt */
#define BCHG 0 x4000 /* b14: USB bus chenge interrupt */
#define DTCH 0 x1000 /* b12: Detach sense interrupt */
#define ATTCH 0 x0800 /* b11: Attach sense interrupt */
#define EOFERR 0 x0040 /* b6: EOF-error interrupt */
#define SIGN 0 x0020 /* b5: Setup ignore interrupt */
#define SACK 0 x0010 /* b4: Setup acknowledge interrupt */
/* Frame Number Register */
#define OVRN 0 x8000 /* b15: Overrun error */
#define CRCE 0 x4000 /* b14: Received data error */
#define FRNM 0 x07FF /* b10-0: Frame number */
/* Micro Frame Number Register */
#define UFRNM 0 x0007 /* b2-0: Micro frame number */
/* Default Control Pipe Maxpacket Size Register */
/* Pipe Maxpacket Size Register */
#define DEVSEL 0 xF000 /* b15-14: Device address select */
#define MAXP 0 x007F /* b6-0: Maxpacket size of default control pipe */
/* Default Control Pipe Control Register */
#define BSTS 0 x8000 /* b15: Buffer status */
#define SUREQ 0 x4000 /* b14: Send USB request */
#define CSCLR 0 x2000 /* b13: complete-split status clear */
#define CSSTS 0 x1000 /* b12: complete-split status */
#define SUREQCLR 0 x0800 /* b11: stop setup request */
#define SQCLR 0 x0100 /* b8: Sequence toggle bit clear */
#define SQSET 0 x0080 /* b7: Sequence toggle bit set */
#define SQMON 0 x0040 /* b6: Sequence toggle bit monitor */
#define PBUSY 0 x0020 /* b5: pipe busy */
#define PINGE 0 x0010 /* b4: ping enable */
#define CCPL 0 x0004 /* b2: Enable control transfer complete */
#define PID 0 x0003 /* b1-0: Response PID */
#define PID_STALL11 0 x0003 /* STALL */
#define PID_STALL 0 x0002 /* STALL */
#define PID_BUF 0 x0001 /* BUF */
#define PID_NAK 0 x0000 /* NAK */
/* Pipe Window Select Register */
#define PIPENM 0 x0007 /* b2-0: Pipe select */
/* Pipe Configuration Register */
#define R8A66597_TYP 0 xC000 /* b15-14: Transfer type */
#define R8A66597_ISO 0 xC000 /* Isochronous */
#define R8A66597_INT 0 x8000 /* Interrupt */
#define R8A66597_BULK 0 x4000 /* Bulk */
#define R8A66597_BFRE 0 x0400 /* b10: Buffer ready interrupt mode select */
#define R8A66597_DBLB 0 x0200 /* b9: Double buffer mode select */
#define R8A66597_CNTMD 0 x0100 /* b8: Continuous transfer mode select */
#define R8A66597_SHTNAK 0 x0080 /* b7: Transfer end NAK */
#define R8A66597_DIR 0 x0010 /* b4: Transfer direction select */
#define R8A66597_EPNUM 0 x000F /* b3-0: Eendpoint number select */
/* Pipe Buffer Configuration Register */
#define BUFSIZE 0 x7C00 /* b14-10: Pipe buffer size */
#define BUFNMB 0 x007F /* b6-0: Pipe buffer number */
#define PIPE0BUF 256
#define PIPExBUF 64
/* Pipe Maxpacket Size Register */
#define MXPS 0 x07FF /* b10-0: Maxpacket size */
/* Pipe Cycle Configuration Register */
#define IFIS 0 x1000 /* b12: Isochronous in-buffer flush mode select */
#define IITV 0 x0007 /* b2-0: Isochronous interval */
/* Pipex Control Register */
#define BSTS 0 x8000 /* b15: Buffer status */
#define INBUFM 0 x4000 /* b14: IN buffer monitor (Only for PIPE1 to 5) */
#define CSCLR 0 x2000 /* b13: complete-split status clear */
#define CSSTS 0 x1000 /* b12: complete-split status */
#define ATREPM 0 x0400 /* b10: Auto repeat mode */
#define ACLRM 0 x0200 /* b9: Out buffer auto clear mode */
#define SQCLR 0 x0100 /* b8: Sequence toggle bit clear */
#define SQSET 0 x0080 /* b7: Sequence toggle bit set */
#define SQMON 0 x0040 /* b6: Sequence toggle bit monitor */
#define PBUSY 0 x0020 /* b5: pipe busy */
#define PID 0 x0003 /* b1-0: Response PID */
/* PIPExTRE */
#define TRENB 0 x0200 /* b9: Transaction counter enable */
#define TRCLR 0 x0100 /* b8: Transaction counter clear */
/* PIPExTRN */
#define TRNCNT 0 xFFFF /* b15-0: Transaction counter */
/* DEVADDx */
#define UPPHUB 0 x7800
#define HUBPORT 0 x0700
#define USBSPD 0 x00C0
#define RTPORT 0 x0001
/* SUDMAC registers */
#define CH0CFG 0 x00
#define CH1CFG 0 x04
#define CH0BA 0 x10
#define CH1BA 0 x14
#define CH0BBC 0 x18
#define CH1BBC 0 x1C
#define CH0CA 0 x20
#define CH1CA 0 x24
#define CH0CBC 0 x28
#define CH1CBC 0 x2C
#define CH0DEN 0 x30
#define CH1DEN 0 x34
#define DSTSCLR 0 x38
#define DBUFCTRL 0 x3C
#define DINTCTRL 0 x40
#define DINTSTS 0 x44
#define DINTSTSCLR 0 x48
#define CH0SHCTRL 0 x50
#define CH1SHCTRL 0 x54
/* SUDMAC Configuration Registers */
#define SENDBUFM 0 x1000 /* b12: Transmit Buffer Mode */
#define RCVENDM 0 x0100 /* b8: Receive Data Transfer End Mode */
#define LBA_WAIT 0 x0030 /* b5-4: Local Bus Access Wait */
/* DMA Enable Registers */
#define DEN 0 x0001 /* b1: DMA Transfer Enable */
/* DMA Status Clear Register */
#define CH1STCLR 0 x0002 /* b2: Ch1 DMA Status Clear */
#define CH0STCLR 0 x0001 /* b1: Ch0 DMA Status Clear */
/* DMA Buffer Control Register */
#define CH1BUFW 0 x0200 /* b9: Ch1 DMA Buffer Data Transfer Enable */
#define CH0BUFW 0 x0100 /* b8: Ch0 DMA Buffer Data Transfer Enable */
#define CH1BUFS 0 x0002 /* b2: Ch1 DMA Buffer Data Status */
#define CH0BUFS 0 x0001 /* b1: Ch0 DMA Buffer Data Status */
/* DMA Interrupt Control Register */
#define CH1ERRE 0 x0200 /* b9: Ch1 SHwy Res Err Detect Int Enable */
#define CH0ERRE 0 x0100 /* b8: Ch0 SHwy Res Err Detect Int Enable */
#define CH1ENDE 0 x0002 /* b2: Ch1 DMA Transfer End Int Enable */
#define CH0ENDE 0 x0001 /* b1: Ch0 DMA Transfer End Int Enable */
/* DMA Interrupt Status Register */
#define CH1ERRS 0 x0200 /* b9: Ch1 SHwy Res Err Detect Int Status */
#define CH0ERRS 0 x0100 /* b8: Ch0 SHwy Res Err Detect Int Status */
#define CH1ENDS 0 x0002 /* b2: Ch1 DMA Transfer End Int Status */
#define CH0ENDS 0 x0001 /* b1: Ch0 DMA Transfer End Int Status */
/* DMA Interrupt Status Clear Register */
#define CH1ERRC 0 x0200 /* b9: Ch1 SHwy Res Err Detect Int Stat Clear */
#define CH0ERRC 0 x0100 /* b8: Ch0 SHwy Res Err Detect Int Stat Clear */
#define CH1ENDC 0 x0002 /* b2: Ch1 DMA Transfer End Int Stat Clear */
#define CH0ENDC 0 x0001 /* b1: Ch0 DMA Transfer End Int Stat Clear */
#endif /* __LINUX_USB_R8A66597_H */
Messung V0.5 in Prozent C=90 H=96 G=93
¤ Dauer der Verarbeitung: 0.13 Sekunden
(vorverarbeitet am 2026-06-07)
¤
*© Formatika GbR, Deutschland