r8a66597.h (29fab0cd897519be9009ba8c898410ab83b378e9) r8a66597.h (9424ea29658ce5bcdcf527ddf9617b9507ddf1aa)
1/*
2 * R8A66597 HCD (Host Controller Driver)
3 *
4 * Copyright (C) 2006-2007 Renesas Solutions Corp.
5 * Portions Copyright (C) 2004 Psion Teklogix (for NetBook PRO)
6 * Portions Copyright (C) 2004-2005 David Brownell
7 * Portions Copyright (C) 1999 Roman Weissgaerber
8 *

--- 173 unchanged lines hidden (view full) ---

182#define DENDE 0x0010 /* b4: Dend enable */
183#define OBUS 0x0004 /* b2: OUTbus mode */
184
185/* CFIFO/DxFIFO Port Select Register */
186#define RCNT 0x8000 /* b15: Read count mode */
187#define REW 0x4000 /* b14: Buffer rewind */
188#define DCLRM 0x2000 /* b13: DMA buffer clear mode */
189#define DREQE 0x1000 /* b12: DREQ output enable */
1/*
2 * R8A66597 HCD (Host Controller Driver)
3 *
4 * Copyright (C) 2006-2007 Renesas Solutions Corp.
5 * Portions Copyright (C) 2004 Psion Teklogix (for NetBook PRO)
6 * Portions Copyright (C) 2004-2005 David Brownell
7 * Portions Copyright (C) 1999 Roman Weissgaerber
8 *

--- 173 unchanged lines hidden (view full) ---

182#define DENDE 0x0010 /* b4: Dend enable */
183#define OBUS 0x0004 /* b2: OUTbus mode */
184
185/* CFIFO/DxFIFO Port Select Register */
186#define RCNT 0x8000 /* b15: Read count mode */
187#define REW 0x4000 /* b14: Buffer rewind */
188#define DCLRM 0x2000 /* b13: DMA buffer clear mode */
189#define DREQE 0x1000 /* b12: DREQ output enable */
190#if defined(CONFIG_SUPERH_ON_CHIP_R8A66597)
191#define MBW 0x0800
192#else
190#define MBW 0x0400 /* b10: Maximum bit width for FIFO access */
193#define MBW 0x0400 /* b10: Maximum bit width for FIFO access */
194#endif
191#define MBW_8 0x0000 /* 8bit */
192#define MBW_16 0x0400 /* 16bit */
193#define BIGEND 0x0100 /* b8: Big endian mode */
194#define BYTE_LITTLE 0x0000 /* little dendian */
195#define BYTE_BIG 0x0100 /* big endifan */
196#define ISEL 0x0020 /* b5: DCP FIFO port direction select */
197#define CURPIPE 0x000F /* b2-0: PIPE select */
198

--- 191 unchanged lines hidden (view full) ---

390#define UPPHUB 0x7800
391#define HUBPORT 0x0700
392#define USBSPD 0x00C0
393#define RTPORT 0x0001
394
395#define R8A66597_MAX_NUM_PIPE 10
396#define R8A66597_BUF_BSIZE 8
397#define R8A66597_MAX_DEVICE 10
195#define MBW_8 0x0000 /* 8bit */
196#define MBW_16 0x0400 /* 16bit */
197#define BIGEND 0x0100 /* b8: Big endian mode */
198#define BYTE_LITTLE 0x0000 /* little dendian */
199#define BYTE_BIG 0x0100 /* big endifan */
200#define ISEL 0x0020 /* b5: DCP FIFO port direction select */
201#define CURPIPE 0x000F /* b2-0: PIPE select */
202

--- 191 unchanged lines hidden (view full) ---

394#define UPPHUB 0x7800
395#define HUBPORT 0x0700
396#define USBSPD 0x00C0
397#define RTPORT 0x0001
398
399#define R8A66597_MAX_NUM_PIPE 10
400#define R8A66597_BUF_BSIZE 8
401#define R8A66597_MAX_DEVICE 10
402#if defined(CONFIG_SUPERH_ON_CHIP_R8A66597)
403#define R8A66597_MAX_ROOT_HUB 1
404#else
398#define R8A66597_MAX_ROOT_HUB 2
405#define R8A66597_MAX_ROOT_HUB 2
406#endif
399#define R8A66597_MAX_SAMPLING 5
400#define R8A66597_RH_POLL_TIME 10
401#define R8A66597_MAX_DMA_CHANNEL 2
402#define R8A66597_PIPE_NO_DMA R8A66597_MAX_DMA_CHANNEL
403#define check_bulk_or_isoc(pipenum) ((pipenum >= 1 && pipenum <= 5))
404#define check_interrupt(pipenum) ((pipenum >= 6 && pipenum <= 9))
405#define make_devsel(addr) (addr << 12)
406

--- 118 unchanged lines hidden (view full) ---

525{
526 return inw(r8a66597->reg + offset);
527}
528
529static inline void r8a66597_read_fifo(struct r8a66597 *r8a66597,
530 unsigned long offset, u16 *buf,
531 int len)
532{
407#define R8A66597_MAX_SAMPLING 5
408#define R8A66597_RH_POLL_TIME 10
409#define R8A66597_MAX_DMA_CHANNEL 2
410#define R8A66597_PIPE_NO_DMA R8A66597_MAX_DMA_CHANNEL
411#define check_bulk_or_isoc(pipenum) ((pipenum >= 1 && pipenum <= 5))
412#define check_interrupt(pipenum) ((pipenum >= 6 && pipenum <= 9))
413#define make_devsel(addr) (addr << 12)
414

--- 118 unchanged lines hidden (view full) ---

533{
534 return inw(r8a66597->reg + offset);
535}
536
537static inline void r8a66597_read_fifo(struct r8a66597 *r8a66597,
538 unsigned long offset, u16 *buf,
539 int len)
540{
541#if defined(CONFIG_SUPERH_ON_CHIP_R8A66597)
542 unsigned long fifoaddr = r8a66597->reg + offset;
543 unsigned long count;
544
545 count = len / 4;
546 insl(fifoaddr, buf, count);
547
548 if (len & 0x00000003) {
549 unsigned long tmp = inl(fifoaddr);
550 memcpy((unsigned char *)buf + count * 4, &tmp, len & 0x03);
551 }
552#else
533 len = (len + 1) / 2;
534 insw(r8a66597->reg + offset, buf, len);
553 len = (len + 1) / 2;
554 insw(r8a66597->reg + offset, buf, len);
555#endif
535}
536
537static inline void r8a66597_write(struct r8a66597 *r8a66597, u16 val,
538 unsigned long offset)
539{
540 outw(val, r8a66597->reg + offset);
541}
542
543static inline void r8a66597_write_fifo(struct r8a66597 *r8a66597,
544 unsigned long offset, u16 *buf,
545 int len)
546{
547 unsigned long fifoaddr = r8a66597->reg + offset;
556}
557
558static inline void r8a66597_write(struct r8a66597 *r8a66597, u16 val,
559 unsigned long offset)
560{
561 outw(val, r8a66597->reg + offset);
562}
563
564static inline void r8a66597_write_fifo(struct r8a66597 *r8a66597,
565 unsigned long offset, u16 *buf,
566 int len)
567{
568 unsigned long fifoaddr = r8a66597->reg + offset;
569#if defined(CONFIG_SUPERH_ON_CHIP_R8A66597)
570 unsigned long count;
571 unsigned char *pb;
572 int i;
573
574 count = len / 4;
575 outsl(fifoaddr, buf, count);
576
577 if (len & 0x00000003) {
578 pb = (unsigned char *)buf + count * 4;
579 for (i = 0; i < (len & 0x00000003); i++) {
580 if (r8a66597_read(r8a66597, CFIFOSEL) & BIGEND)
581 outb(pb[i], fifoaddr + i);
582 else
583 outb(pb[i], fifoaddr + 3 - i);
584 }
585 }
586#else
548 int odd = len & 0x0001;
549
550 len = len / 2;
551 outsw(fifoaddr, buf, len);
552 if (unlikely(odd)) {
553 buf = &buf[len];
554 outb((unsigned char)*buf, fifoaddr);
555 }
587 int odd = len & 0x0001;
588
589 len = len / 2;
590 outsw(fifoaddr, buf, len);
591 if (unlikely(odd)) {
592 buf = &buf[len];
593 outb((unsigned char)*buf, fifoaddr);
594 }
595#endif
556}
557
558static inline void r8a66597_mdfy(struct r8a66597 *r8a66597,
559 u16 val, u16 pat, unsigned long offset)
560{
561 u16 tmp;
562 tmp = r8a66597_read(r8a66597, offset);
563 tmp = tmp & (~pat);

--- 16 unchanged lines hidden (view full) ---

580 return port == 0 ? SYSSTS0 : SYSSTS1;
581}
582
583static inline unsigned long get_dvstctr_reg(int port)
584{
585 return port == 0 ? DVSTCTR0 : DVSTCTR1;
586}
587
596}
597
598static inline void r8a66597_mdfy(struct r8a66597 *r8a66597,
599 u16 val, u16 pat, unsigned long offset)
600{
601 u16 tmp;
602 tmp = r8a66597_read(r8a66597, offset);
603 tmp = tmp & (~pat);

--- 16 unchanged lines hidden (view full) ---

620 return port == 0 ? SYSSTS0 : SYSSTS1;
621}
622
623static inline unsigned long get_dvstctr_reg(int port)
624{
625 return port == 0 ? DVSTCTR0 : DVSTCTR1;
626}
627
628static inline unsigned long get_dmacfg_reg(int port)
629{
630 return port == 0 ? DMA0CFG : DMA1CFG;
631}
632
588static inline unsigned long get_intenb_reg(int port)
589{
590 return port == 0 ? INTENB1 : INTENB2;
591}
592
593static inline unsigned long get_intsts_reg(int port)
594{
595 return port == 0 ? INTSTS1 : INTSTS2;

--- 40 unchanged lines hidden ---
633static inline unsigned long get_intenb_reg(int port)
634{
635 return port == 0 ? INTENB1 : INTENB2;
636}
637
638static inline unsigned long get_intsts_reg(int port)
639{
640 return port == 0 ? INTSTS1 : INTSTS2;

--- 40 unchanged lines hidden ---