2006-01-13 10:19:58 -07:00
|
|
|
#ifndef __MPC83XX_H__
|
|
|
|
#define __MPC83XX_H__
|
|
|
|
|
|
|
|
#include <linux/init.h>
|
|
|
|
#include <linux/device.h>
|
2007-06-21 23:23:57 -06:00
|
|
|
#include <asm/pci-bridge.h>
|
2006-01-13 10:19:58 -07:00
|
|
|
|
2007-02-06 22:47:56 -07:00
|
|
|
/* System Clock Control Register */
|
|
|
|
#define MPC83XX_SCCR_OFFS 0xA08
|
2007-07-03 03:43:16 -06:00
|
|
|
#define MPC83XX_SCCR_USB_MASK 0x00f00000
|
2007-02-06 22:47:56 -07:00
|
|
|
#define MPC83XX_SCCR_USB_MPHCM_11 0x00c00000
|
|
|
|
#define MPC83XX_SCCR_USB_MPHCM_01 0x00400000
|
|
|
|
#define MPC83XX_SCCR_USB_MPHCM_10 0x00800000
|
|
|
|
#define MPC83XX_SCCR_USB_DRCM_11 0x00300000
|
|
|
|
#define MPC83XX_SCCR_USB_DRCM_01 0x00100000
|
|
|
|
#define MPC83XX_SCCR_USB_DRCM_10 0x00200000
|
2008-01-30 11:46:19 -07:00
|
|
|
#define MPC8315_SCCR_USB_MASK 0x00c00000
|
|
|
|
#define MPC8315_SCCR_USB_DRCM_11 0x00c00000
|
[POWERPC] 83xx: mpc8315 - fix USB UTMI Host setup
Currently USB Host isn't functional on the MPC8315E boards, for two
reasons as described below.
MPC8315 Reference Manual says:
"The USB DR unit must have the same clock ratio as the encryption core
unit, unless one of them has its clock disabled."
The encryption core also drives I2C clock, so it is enabled and is equal
to 01. That means USBDRCM should be 01 here.
Plus, according to MPC8315E-RDB schematics, USB unit consumes CLK_IN
clock from the 24.00MHz oscillator, which means we must adjust REFSEL
bits as well.
p.s.
Idially we should rework whole 83xx/usb.c code, in two steps:
1. Move SCCR code to the U-Boot;
2. Implement fsl,usb-clock property in the device tree, so usb.c could
decide what clock exactly to use on per-board basis.
Though, today we're not in a hurry since there is just one 8315e board
out there.
Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
2008-04-09 07:59:25 -06:00
|
|
|
#define MPC8315_SCCR_USB_DRCM_01 0x00400000
|
2008-01-08 00:18:45 -07:00
|
|
|
#define MPC837X_SCCR_USB_DRCM_11 0x00c00000
|
2007-02-06 22:47:56 -07:00
|
|
|
|
|
|
|
/* system i/o configuration register low */
|
|
|
|
#define MPC83XX_SICRL_OFFS 0x114
|
2007-07-03 03:43:16 -06:00
|
|
|
#define MPC834X_SICRL_USB_MASK 0x60000000
|
2009-06-09 05:43:32 -06:00
|
|
|
#define MPC834X_SICRL_USB0 0x20000000
|
|
|
|
#define MPC834X_SICRL_USB1 0x40000000
|
2007-07-03 03:43:16 -06:00
|
|
|
#define MPC831X_SICRL_USB_MASK 0x00000c00
|
|
|
|
#define MPC831X_SICRL_USB_ULPI 0x00000800
|
2008-07-08 11:36:32 -06:00
|
|
|
#define MPC8315_SICRL_USB_MASK 0x000000fc
|
|
|
|
#define MPC8315_SICRL_USB_ULPI 0x00000054
|
2008-01-08 00:18:45 -07:00
|
|
|
#define MPC837X_SICRL_USB_MASK 0xf0000000
|
|
|
|
#define MPC837X_SICRL_USB_ULPI 0x50000000
|
2009-07-24 15:42:30 -06:00
|
|
|
#define MPC837X_SICRL_USBB_MASK 0x30000000
|
|
|
|
#define MPC837X_SICRL_SD 0x20000000
|
2007-02-06 22:47:56 -07:00
|
|
|
|
|
|
|
/* system i/o configuration register high */
|
|
|
|
#define MPC83XX_SICRH_OFFS 0x118
|
2010-10-26 18:02:36 -06:00
|
|
|
#define MPC8308_SICRH_USB_MASK 0x000c0000
|
|
|
|
#define MPC8308_SICRH_USB_ULPI 0x00040000
|
2007-07-03 03:43:16 -06:00
|
|
|
#define MPC834X_SICRH_USB_UTMI 0x00020000
|
|
|
|
#define MPC831X_SICRH_USB_MASK 0x000000e0
|
|
|
|
#define MPC831X_SICRH_USB_ULPI 0x000000a0
|
2008-07-08 11:36:32 -06:00
|
|
|
#define MPC8315_SICRH_USB_MASK 0x0000ff00
|
|
|
|
#define MPC8315_SICRH_USB_ULPI 0x00000000
|
2009-07-24 15:42:30 -06:00
|
|
|
#define MPC837X_SICRH_SPI_MASK 0x00000003
|
|
|
|
#define MPC837X_SICRH_SD 0x00000001
|
2007-07-03 03:43:16 -06:00
|
|
|
|
|
|
|
/* USB Control Register */
|
|
|
|
#define FSL_USB2_CONTROL_OFFS 0x500
|
|
|
|
#define CONTROL_UTMI_PHY_EN 0x00000200
|
[POWERPC] 83xx: mpc8315 - fix USB UTMI Host setup
Currently USB Host isn't functional on the MPC8315E boards, for two
reasons as described below.
MPC8315 Reference Manual says:
"The USB DR unit must have the same clock ratio as the encryption core
unit, unless one of them has its clock disabled."
The encryption core also drives I2C clock, so it is enabled and is equal
to 01. That means USBDRCM should be 01 here.
Plus, according to MPC8315E-RDB schematics, USB unit consumes CLK_IN
clock from the 24.00MHz oscillator, which means we must adjust REFSEL
bits as well.
p.s.
Idially we should rework whole 83xx/usb.c code, in two steps:
1. Move SCCR code to the U-Boot;
2. Implement fsl,usb-clock property in the device tree, so usb.c could
decide what clock exactly to use on per-board basis.
Though, today we're not in a hurry since there is just one 8315e board
out there.
Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
2008-04-09 07:59:25 -06:00
|
|
|
#define CONTROL_REFSEL_24MHZ 0x00000040
|
2007-07-03 03:43:16 -06:00
|
|
|
#define CONTROL_REFSEL_48MHZ 0x00000080
|
|
|
|
#define CONTROL_PHY_CLK_SEL_ULPI 0x00000400
|
|
|
|
#define CONTROL_OTG_PORT 0x00000020
|
|
|
|
|
|
|
|
/* USB PORTSC Registers */
|
|
|
|
#define FSL_USB2_PORTSC1_OFFS 0x184
|
|
|
|
#define FSL_USB2_PORTSC2_OFFS 0x188
|
|
|
|
#define PORTSCX_PTW_16BIT 0x10000000
|
|
|
|
#define PORTSCX_PTS_UTMI 0x00000000
|
|
|
|
#define PORTSCX_PTS_ULPI 0x80000000
|
2007-02-06 22:47:56 -07:00
|
|
|
|
2006-01-13 10:19:58 -07:00
|
|
|
/*
|
|
|
|
* Declaration for the various functions exported by the
|
|
|
|
* mpc83xx_* files. Mostly for use by mpc83xx_setup
|
|
|
|
*/
|
|
|
|
|
2006-02-02 12:50:44 -07:00
|
|
|
extern void mpc83xx_restart(char *cmd);
|
|
|
|
extern long mpc83xx_time_init(void);
|
2008-12-05 08:48:07 -07:00
|
|
|
extern int mpc837x_usb_cfg(void);
|
2007-07-03 03:43:16 -06:00
|
|
|
extern int mpc834x_usb_cfg(void);
|
|
|
|
extern int mpc831x_usb_cfg(void);
|
2006-01-13 10:19:58 -07:00
|
|
|
|
2006-02-02 12:51:10 -07:00
|
|
|
#endif /* __MPC83XX_H__ */
|