hc
2023-12-09 b22da3d8526a935aa31e086e63f60ff3246cb61c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/*
 * TI's Davinci platform specific USB wrapper functions.
 *
 * Copyright (c) 2008 Texas Instruments
 *
 * SPDX-License-Identifier:    GPL-2.0+
 *
 * Author: Thomas Abraham t-abraham@ti.com, Texas Instruments
 */
 
#ifndef __DAVINCI_USB_H__
#define __DAVINCI_USB_H__
 
#include <asm/arch/hardware.h>
#include "musb_core.h"
 
/* Base address of DAVINCI usb0 wrapper */
#define DAVINCI_USB0_BASE 0x01C64000
 
/* Base address of DAVINCI musb core */
#define MENTOR_USB0_BASE (DAVINCI_USB0_BASE+0x400)
 
/*
 * Davinci platform USB wrapper register overlay. Note: Only the required
 * registers are included in this structure. It can be expanded as required.
 */
struct davinci_usb_regs {
   u32    version;
   u32    ctrlr;
   u32    reserved[0x20];
   u32    intclrr;
   u32     intmskr;
   u32     intmsksetr;
};
 
#define DAVINCI_USB_TX_ENDPTS_MASK    0x1f /* ep0 + 4 tx */
#define DAVINCI_USB_RX_ENDPTS_MASK    0x1e /* 4 rx */
#define DAVINCI_USB_USBINT_SHIFT    16
#define DAVINCI_USB_TXINT_SHIFT     0
#define DAVINCI_USB_RXINT_SHIFT     8
#define DAVINCI_INTR_DRVVBUS        0x0100
 
#define DAVINCI_USB_USBINT_MASK     0x01ff0000    /* 8 Mentor, DRVVBUS */
#define DAVINCI_USB_TXINT_MASK \
       (DAVINCI_USB_TX_ENDPTS_MASK << DAVINCI_USB_TXINT_SHIFT)
#define DAVINCI_USB_RXINT_MASK \
       (DAVINCI_USB_RX_ENDPTS_MASK << DAVINCI_USB_RXINT_SHIFT)
#define MGC_BUSCTL_OFFSET(_bEnd, _bOffset) \
       (0x80 + (8*(_bEnd)) + (_bOffset))
 
/* Integrated highspeed/otg PHY */
#define USBPHY_CTL_PADDR    (DAVINCI_SYSTEM_MODULE_BASE + 0x34)
#define USBPHY_PHY24MHZ     (1 << 13)
#define USBPHY_PHYCLKGD     (1 << 8)
#define USBPHY_SESNDEN        (1 << 7)    /* v(sess_end) comparator */
#define USBPHY_VBDTCTEN     (1 << 6)    /* v(bus) comparator */
#define USBPHY_PHYPLLON     (1 << 4)    /* override pll suspend */
#define USBPHY_CLKO1SEL     (1 << 3)
#define USBPHY_OSCPDWN        (1 << 2)
#define USBPHY_PHYPDWN        (1 << 0)
 
/* Timeout for Davinci USB module */
#define DAVINCI_USB_TIMEOUT 0x3FFFFFF
 
/* IO Expander I2C address and VBUS enable mask */
#define IOEXP_I2C_ADDR 0x3A
#define IOEXP_VBUSEN_MASK 1
 
/* extern functions */
extern void lpsc_on(unsigned int id);
extern int i2c_write(uchar chip, uint addr, int alen, uchar *buffer, int len);
extern int i2c_read(uchar chip, uint addr, int alen, uchar *buffer, int len);
extern void enable_vbus(void);
#endif    /* __DAVINCI_USB_H__ */