aboutsummaryrefslogtreecommitdiff
path: root/src/soc/broadcom/cygnus/usb.c
diff options
context:
space:
mode:
authorPhilipp Deppenwiese <zaolin.daisuki@gmail.com>2018-11-28 18:50:11 +0100
committerPhilipp Deppenwiese <zaolin.daisuki@gmail.com>2018-11-30 10:26:37 +0000
commitaea00f496b1cf41fd5b568b4c6079c2ab76eafd4 (patch)
treea42e9c303964a884ae0ffb8218d2b3cf8696d212 /src/soc/broadcom/cygnus/usb.c
parent48418757cb48a08d0e0d4db25a950ba74b77b21e (diff)
broadcom: Remove SoC and board support
The reason for this code cleanup is the legacy Google Purin board which isn't available anymore and AFAIK never made it into the stores. * Remove broadcom cygnus SoC support * Remove /util/broadcom tool * Remove Google Purin mainboard * Remove MAINTAINERS entries Change-Id: I148dd7eb0192d396cb69bc26c4062f88a764771a Signed-off-by: Philipp Deppenwiese <zaolin.daisuki@gmail.com> Reviewed-on: https://review.coreboot.org/c/29905 Reviewed-by: Julius Werner <jwerner@chromium.org> Reviewed-by: Angel Pons <th3fanbus@gmail.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'src/soc/broadcom/cygnus/usb.c')
-rw-r--r--src/soc/broadcom/cygnus/usb.c166
1 files changed, 0 insertions, 166 deletions
diff --git a/src/soc/broadcom/cygnus/usb.c b/src/soc/broadcom/cygnus/usb.c
deleted file mode 100644
index 5b93604412..0000000000
--- a/src/soc/broadcom/cygnus/usb.c
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * Copyright (C) 2014 Broadcom Corporation
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation version 2.
- *
- * This program is distributed "as is" WITHOUT ANY WARRANTY of any
- * kind, whether express or implied; without even the implied warranty
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- */
-
-#include <arch/io.h>
-#include <delay.h>
-#include <console/console.h>
-#include <soc/cygnus.h>
-
-#define CDRU_USBPHY_CLK_RST_SEL_OFFSET 0x11b4
-#define CDRU_USBPHY2_HOST_DEV_SEL_OFFSET 0x11b8
-#define CDRU_SPARE_REG_0_OFFSET 0x1238
-#define CRMU_USB_PHY_AON_CTRL_OFFSET 0x00028
-#define CDRU_USB_DEV_SUSPEND_RESUME_CTRL_OFFSET 0x1210
-#define CDRU_USBPHY_P2_STATUS_OFFSET 0x1200
-
-#define CDRU_USB_DEV_SUSPEND_RESUME_CTRL_DISABLE 0
-#define PHY2_DEV_HOST_CTRL_SEL_DEVICE 0
-#define PHY2_DEV_HOST_CTRL_SEL_HOST 1
-#define CDRU_USBPHY_P2_STATUS__USBPHY_ILDO_ON_FLAG 1
-#define CDRU_USBPHY_P2_STATUS__USBPHY_PLL_LOCK 0
-#define CRMU_USBPHY_P0_AFE_CORERDY_VDDC 1
-#define CRMU_USBPHY_P0_RESETB 2
-#define CRMU_USBPHY_P1_AFE_CORERDY_VDDC 9
-#define CRMU_USBPHY_P1_RESETB 10
-#define CRMU_USBPHY_P2_AFE_CORERDY_VDDC 17
-#define CRMU_USBPHY_P2_RESETB 18
-
-#define USB2_IDM_IDM_IO_CONTROL_DIRECT_OFFSET 0x0408
-#define USB2_IDM_IDM_IO_CONTROL_DIRECT__clk_enable 0
-#define USB2_IDM_IDM_RESET_CONTROL_OFFSET 0x0800
-#define USB2_IDM_IDM_RESET_CONTROL__RESET 0
-
-#define PLL_LOCK_RETRY_COUNT 1000
-#define MAX_REGULATOR_NAME_LEN 25
-#define NUM_PHYS 3
-
-struct bcm_phy_instance {
- struct phy *generic_phy;
- int port;
- int host_mode; /* 1 - Host, 0 - device */
- int power; /* 1 -powered_on 0 -powered off */
- struct regulator *vbus_supply;
-};
-
-struct bcm_phy_driver {
- void *usbphy_regs;
- void *usb2h_idm_regs;
- void *usb2d_idm_regs;
- int num_phys, idm_host_enabled;
- struct bcm_phy_instance instances[NUM_PHYS];
-};
-
-static struct bcm_phy_driver phy_driver;
-
-static int bcm_phy_init(struct bcm_phy_instance *instance_ptr)
-{
- /* Only PORT 2 is capabale of being device and host
- * Default setting is device, check if it is set to host */
- if (instance_ptr->port == 2) {
- if (instance_ptr->host_mode == PHY2_DEV_HOST_CTRL_SEL_HOST)
- write32(phy_driver.usbphy_regs + CDRU_USBPHY2_HOST_DEV_SEL_OFFSET,
- PHY2_DEV_HOST_CTRL_SEL_HOST);
- else
- die("usb device mode unsupported\n");
- }
-
- return 0;
-}
-
-static int bcm_phy_poweron(struct bcm_phy_instance *instance_ptr)
-{
- int clock_reset_flag = 1;
- u32 val;
-
- /* Bring the AFE block out of reset to start powering up the PHY */
- val = read32(phy_driver.usbphy_regs + CRMU_USB_PHY_AON_CTRL_OFFSET);
- if (instance_ptr->port == 0)
- val |= (1 << CRMU_USBPHY_P0_AFE_CORERDY_VDDC);
- else if (instance_ptr->port == 1)
- val |= (1 << CRMU_USBPHY_P1_AFE_CORERDY_VDDC);
- else if (instance_ptr->port == 2)
- val |= (1 << CRMU_USBPHY_P2_AFE_CORERDY_VDDC);
- write32(phy_driver.usbphy_regs + CRMU_USB_PHY_AON_CTRL_OFFSET, val);
-
- instance_ptr->power = 1;
-
- /* Check if the port 2 is configured for device */
- if (instance_ptr->port == 2 &&
- instance_ptr->host_mode == PHY2_DEV_HOST_CTRL_SEL_DEVICE)
- die("usb device mode unsupported\n");
-
- val = read32(phy_driver.usbphy_regs + CDRU_USBPHY_CLK_RST_SEL_OFFSET);
-
- /* Check if the phy that is configured
- * to provide clock and reset is powered on*/
- if (val >= 0 && val < phy_driver.num_phys) {
- if (phy_driver.instances[val].power == 1)
- clock_reset_flag = 0;
- }
-
- /* if not set the current phy */
- if (clock_reset_flag) {
- val = instance_ptr->port;
- write32(phy_driver.usbphy_regs + CDRU_USBPHY_CLK_RST_SEL_OFFSET,
- val);
- }
-
- if (phy_driver.idm_host_enabled != 1) {
- /* Enable clock to USB and get the USB out of reset */
- setbits_le32(phy_driver.usb2h_idm_regs +
- USB2_IDM_IDM_IO_CONTROL_DIRECT_OFFSET,
- (1 << USB2_IDM_IDM_IO_CONTROL_DIRECT__clk_enable));
- clrbits_le32(phy_driver.usb2h_idm_regs +
- USB2_IDM_IDM_RESET_CONTROL_OFFSET,
- (1 << USB2_IDM_IDM_RESET_CONTROL__RESET));
- phy_driver.idm_host_enabled = 1;
- }
-
- return 0;
-}
-
-static int bcm_phy_probe(void)
-{
- int i;
-
- phy_driver.num_phys = NUM_PHYS;
- phy_driver.usbphy_regs = (void *)0x0301c000;
- phy_driver.usb2h_idm_regs = (void *)0x18115000;
- phy_driver.usb2d_idm_regs = (void *)0x18111000;
- phy_driver.idm_host_enabled = 0;
-
- /* Shutdown all ports. They can be powered up as required */
- clrbits_le32(phy_driver.usbphy_regs + CRMU_USB_PHY_AON_CTRL_OFFSET,
- (1 << CRMU_USBPHY_P0_AFE_CORERDY_VDDC) |
- (1 << CRMU_USBPHY_P0_RESETB) |
- (1 << CRMU_USBPHY_P1_AFE_CORERDY_VDDC) |
- (1 << CRMU_USBPHY_P1_RESETB) |
- (1 << CRMU_USBPHY_P2_AFE_CORERDY_VDDC) |
- (1 << CRMU_USBPHY_P2_RESETB));
-
- for (i = 0; i < phy_driver.num_phys; i++) {
- phy_driver.instances[i].port = i;
- phy_driver.instances[i].host_mode = PHY2_DEV_HOST_CTRL_SEL_HOST;
- }
-
- return 0;
-}
-
-void usb_init(void)
-{
- bcm_phy_probe();
- /* currently, we only need thus support port 0 */
- bcm_phy_init(&phy_driver.instances[0]);
- bcm_phy_poweron(&phy_driver.instances[0]);
- printk(BIOS_INFO, "usb phy[%d] is powered on\n", 0);
-}