Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c0a20159 authored by Anton Vorontsov's avatar Anton Vorontsov Committed by Kumar Gala
Browse files

powerpc/83xx: fix ULPI setup for MPC8315 processors



We must not use MPC831X_SICR[HL]_* definitions for the MPC8315 processors,
because SICR USB bits locations are not compatible with MPC8313.

This patch fixes ULPI workability on MPC8315E-RDB boards.

Signed-off-by: default avatarAnton Vorontsov <avorontsov@ru.mvista.com>
Signed-off-by: default avatarKumar Gala <galak@kernel.crashing.org>
parent 76fe1ffc
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -26,6 +26,8 @@
#define MPC834X_SICRL_USB1         0x20000000
#define MPC831X_SICRL_USB_MASK     0x00000c00
#define MPC831X_SICRL_USB_ULPI     0x00000800
#define MPC8315_SICRL_USB_MASK     0x000000fc
#define MPC8315_SICRL_USB_ULPI     0x00000054
#define MPC837X_SICRL_USB_MASK     0xf0000000
#define MPC837X_SICRL_USB_ULPI     0x50000000

@@ -34,6 +36,8 @@
#define MPC834X_SICRH_USB_UTMI     0x00020000
#define MPC831X_SICRH_USB_MASK     0x000000e0
#define MPC831X_SICRH_USB_ULPI     0x000000a0
#define MPC8315_SICRH_USB_MASK     0x0000ff00
#define MPC8315_SICRH_USB_ULPI     0x00000000

/* USB Control Register */
#define FSL_USB2_CONTROL_OFFS      0x500
+15 −9
Original line number Diff line number Diff line
@@ -137,15 +137,21 @@ int mpc831x_usb_cfg(void)

	/* Configure pin mux for ULPI.  There is no pin mux for UTMI */
	if (prop && !strcmp(prop, "ulpi")) {
		temp = in_be32(immap + MPC83XX_SICRL_OFFS);
		temp &= ~MPC831X_SICRL_USB_MASK;
		temp |= MPC831X_SICRL_USB_ULPI;
		out_be32(immap + MPC83XX_SICRL_OFFS, temp);

		temp = in_be32(immap + MPC83XX_SICRH_OFFS);
		temp &= ~MPC831X_SICRH_USB_MASK;
		temp |= MPC831X_SICRH_USB_ULPI;
		out_be32(immap + MPC83XX_SICRH_OFFS, temp);
		if (of_device_is_compatible(immr_node, "fsl,mpc8315-immr")) {
			clrsetbits_be32(immap + MPC83XX_SICRL_OFFS,
					MPC8315_SICRL_USB_MASK,
					MPC8315_SICRL_USB_ULPI);
			clrsetbits_be32(immap + MPC83XX_SICRH_OFFS,
					MPC8315_SICRH_USB_MASK,
					MPC8315_SICRH_USB_ULPI);
		} else {
			clrsetbits_be32(immap + MPC83XX_SICRL_OFFS,
					MPC831X_SICRL_USB_MASK,
					MPC831X_SICRL_USB_ULPI);
			clrsetbits_be32(immap + MPC83XX_SICRH_OFFS,
					MPC831X_SICRH_USB_MASK,
					MPC831X_SICRH_USB_ULPI);
		}
	}

	iounmap(immap);