diff mbox series

[v4,17/39] board: dragonboard410c: upstream DT compat

Message ID 20240215-b4-qcom-common-target-v4-17-ed06355c634a@linaro.org
State Superseded
Headers show
Series Qualcomm generic board support | expand

Commit Message

Caleb Connolly Feb. 15, 2024, 8:52 p.m. UTC
Use the root compatible strings from upstream Linux, add missing
'#clock-cells' property to the gcc node.

Adjust some of the msm8916/apq8016 drivers to use the correct upstream
compatible properties and DT bindings.

This prepares us to switch to upstream DT in a future patch.

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
---
 arch/arm/dts/dragonboard410c.dts                 |  25 +++-
 board/qualcomm/dragonboard410c/dragonboard410c.c |  93 +++---------
 doc/device-tree-bindings/usb/ehci-msm.txt        |  10 --
 drivers/clk/qcom/clock-apq8016.c                 |   7 +-
 drivers/phy/qcom/msm8916-usbh-phy.c              |   4 +-
 drivers/pinctrl/qcom/pinctrl-apq8016.c           |   2 +-
 drivers/usb/host/ehci-msm.c                      |  22 ++-
 include/dt-bindings/clock/qcom,gcc-msm8916.h     | 179 +++++++++++++++++++++++
 8 files changed, 246 insertions(+), 96 deletions(-)

Comments

Sumit Garg Feb. 20, 2024, 1:26 p.m. UTC | #1
On Fri, 16 Feb 2024 at 02:22, Caleb Connolly <caleb.connolly@linaro.org> wrote:
>
> Use the root compatible strings from upstream Linux, add missing
> '#clock-cells' property to the gcc node.
>
> Adjust some of the msm8916/apq8016 drivers to use the correct upstream
> compatible properties and DT bindings.
>
> This prepares us to switch to upstream DT in a future patch.
>
> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
> Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
> ---
>  arch/arm/dts/dragonboard410c.dts                 |  25 +++-
>  board/qualcomm/dragonboard410c/dragonboard410c.c |  93 +++---------
>  doc/device-tree-bindings/usb/ehci-msm.txt        |  10 --
>  drivers/clk/qcom/clock-apq8016.c                 |   7 +-
>  drivers/phy/qcom/msm8916-usbh-phy.c              |   4 +-
>  drivers/pinctrl/qcom/pinctrl-apq8016.c           |   2 +-
>  drivers/usb/host/ehci-msm.c                      |  22 ++-
>  include/dt-bindings/clock/qcom,gcc-msm8916.h     | 179 +++++++++++++++++++++++
>  8 files changed, 246 insertions(+), 96 deletions(-)
>

Reviewed-by: Sumit Garg <sumit.garg@linaro.org>

-Sumit

> diff --git a/arch/arm/dts/dragonboard410c.dts b/arch/arm/dts/dragonboard410c.dts
> index c395e6cc0427..453642b25705 100644
> --- a/arch/arm/dts/dragonboard410c.dts
> +++ b/arch/arm/dts/dragonboard410c.dts
> @@ -12,7 +12,7 @@
>
>  / {
>         model = "Qualcomm Technologies, Inc. Dragonboard 410c";
> -       compatible = "qcom,dragonboard", "qcom,apq8016-sbc";
> +       compatible = "qcom,apq8016-sbc", "qcom,apq8016";
>         qcom,msm-id = <0xce 0x0 0xf8 0x0 0xf9 0x0 0xfa 0x0 0xf7 0x0>;
>         qcom,board-id = <0x10018 0x0>;
>         #address-cells = <0x2>;
> @@ -79,6 +79,7 @@
>                         reg = <0x1800000 0x80000>;
>                         #address-cells = <0x1>;
>                         #size-cells = <0x0>;
> +                       #clock-cells = <0x1>;
>                 };
>
>                 serial@78b0000 {
> @@ -91,15 +92,25 @@
>                 };
>
>                 ehci@78d9000 {
> -                       compatible = "qcom,ehci-host";
> +                       compatible = "qcom,ci-hdrc";
>                         reg = <0x78d9000 0x400>;
>                         phys = <&ehci_phy>;
> -               };
>
> -               ehci_phy: ehci_phy@78d9000 {
> -                       compatible = "qcom,apq8016-usbphy";
> -                       reg = <0x78d9000 0x400>;
> -                       #phy-cells = <0>;
> +                       ulpi {
> +                               usb_hs_phy: phy {
> +                                       compatible = "qcom,usb-hs-phy-msm8916",
> +                                                    "qcom,usb-hs-phy";
> +                                       #phy-cells = <0>;
> +                                       clocks = <&xo_board>, <&gcc GCC_USB2A_PHY_SLEEP_CLK>;
> +                                       clock-names = "ref", "sleep";
> +                                       resets = <&gcc GCC_USB2A_PHY_BCR>, <&usb 0>;
> +                                       reset-names = "phy", "por";
> +                                       qcom,init-seq = /bits/ 8 <0x0 0x44>,
> +                                                                <0x1 0x6b>,
> +                                                                <0x2 0x24>,
> +                                                                <0x3 0x13>;
> +                               };
> +                       };
>                 };
>
>                 sdhci@07824000 {
> diff --git a/board/qualcomm/dragonboard410c/dragonboard410c.c b/board/qualcomm/dragonboard410c/dragonboard410c.c
> index 350e0e9e20aa..1adac07569ae 100644
> --- a/board/qualcomm/dragonboard410c/dragonboard410c.c
> +++ b/board/qualcomm/dragonboard410c/dragonboard410c.c
> @@ -9,6 +9,7 @@
>  #include <common.h>
>  #include <cpu_func.h>
>  #include <dm.h>
> +#include <dm/pinctrl.h>
>  #include <env.h>
>  #include <init.h>
>  #include <net.h>
> @@ -23,84 +24,32 @@
>
>  DECLARE_GLOBAL_DATA_PTR;
>
> -int dram_init(void)
> -{
> -       gd->ram_size = PHYS_SDRAM_1_SIZE;
> -
> -       return 0;
> -}
> -
> -int dram_init_banksize(void)
> -{
> -       gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
> -       gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
> -
> -       return 0;
> -}
> +#define USB_HUB_RESET_GPIO 2
> +#define USB_SW_SELECT_GPIO 3
>
>  int board_usb_init(int index, enum usb_init_type init)
>  {
> -       static struct udevice *pmic_gpio;
> -       static struct gpio_desc hub_reset, usb_sel;
> -       int ret = 0, node;
> +       struct udevice *usb;
> +       int ret = 0;
>
> -       if (!pmic_gpio) {
> -               ret = uclass_get_device_by_name(UCLASS_GPIO,
> -                                               "pm8916_gpios@c000",
> -                                               &pmic_gpio);
> -               if (ret < 0) {
> -                       printf("Failed to find pm8916_gpios@c000 node.\n");
> -                       return ret;
> -               }
> +       /* USB device */
> +       ret = device_find_global_by_ofnode(ofnode_path("/soc/usb"), &usb);
> +       if (ret) {
> +               printf("Cannot find USB device\n");
> +               return ret;
>         }
>
> -       /* Try to request gpios needed to start usb host on dragonboard */
> -       if (!dm_gpio_is_valid(&hub_reset)) {
> -               node = fdt_subnode_offset(gd->fdt_blob,
> -                                         dev_of_offset(pmic_gpio),
> -                                         "usb_hub_reset_pm");
> -               if (node < 0) {
> -                       printf("Failed to find usb_hub_reset_pm dt node.\n");
> -                       return node;
> -               }
> -               ret = gpio_request_by_name_nodev(offset_to_ofnode(node),
> -                                                "gpios", 0, &hub_reset, 0);
> -               if (ret < 0) {
> -                       printf("Failed to request usb_hub_reset_pm gpio.\n");
> -                       return ret;
> -               }
> -       }
> -
> -       if (!dm_gpio_is_valid(&usb_sel)) {
> -               node = fdt_subnode_offset(gd->fdt_blob,
> -                                         dev_of_offset(pmic_gpio),
> -                                         "usb_sw_sel_pm");
> -               if (node < 0) {
> -                       printf("Failed to find usb_sw_sel_pm dt node.\n");
> -                       return 0;
> -               }
> -               ret = gpio_request_by_name_nodev(offset_to_ofnode(node),
> -                                                "gpios", 0, &usb_sel, 0);
> -               if (ret < 0) {
> -                       printf("Failed to request usb_sw_sel_pm gpio.\n");
> -                       return ret;
> -               }
> -       }
> -
> -       if (init == USB_INIT_HOST) {
> -               /* Start USB Hub */
> -               dm_gpio_set_dir_flags(&hub_reset,
> -                                     GPIOD_IS_OUT | GPIOD_IS_OUT_ACTIVE);
> -               mdelay(100);
> -               /* Switch usb to host connectors */
> -               dm_gpio_set_dir_flags(&usb_sel,
> -                                     GPIOD_IS_OUT | GPIOD_IS_OUT_ACTIVE);
> -               mdelay(100);
> -       } else { /* Device */
> -               /* Disable hub */
> -               dm_gpio_set_dir_flags(&hub_reset, GPIOD_IS_OUT);
> -               /* Switch back to device connector */
> -               dm_gpio_set_dir_flags(&usb_sel, GPIOD_IS_OUT);
> +       /* Select "default" or "device" pinctrl */
> +       switch (init) {
> +       case USB_INIT_HOST:
> +               pinctrl_select_state(usb, "default");
> +               break;
> +       case USB_INIT_DEVICE:
> +               pinctrl_select_state(usb, "device");
> +               break;
> +       default:
> +               debug("Unknown usb_init_type %d\n", init);
> +               break;
>         }
>
>         return 0;
> diff --git a/doc/device-tree-bindings/usb/ehci-msm.txt b/doc/device-tree-bindings/usb/ehci-msm.txt
> deleted file mode 100644
> index 205bb07220fb..000000000000
> --- a/doc/device-tree-bindings/usb/ehci-msm.txt
> +++ /dev/null
> @@ -1,10 +0,0 @@
> -Chipidea EHCI controller (part of OTG controller) used on Qualcomm devices.
> -
> -Required properties:
> -- compatible: must be "qcom,ehci-host"
> -- reg: start address and size of the registers
> -
> -ehci@78d9000 {
> -       compatible = "qcom,ehci-host";
> -       reg = <0x78d9000 0x400>;
> -};
> diff --git a/drivers/clk/qcom/clock-apq8016.c b/drivers/clk/qcom/clock-apq8016.c
> index 0af7191cff52..9de0ad5ed32d 100644
> --- a/drivers/clk/qcom/clock-apq8016.c
> +++ b/drivers/clk/qcom/clock-apq8016.c
> @@ -13,6 +13,7 @@
>  #include <errno.h>
>  #include <asm/io.h>
>  #include <linux/bitops.h>
> +#include <dt-bindings/clock/qcom,gcc-msm8916.h>
>
>  #include "clock-qcom.h"
>
> @@ -125,13 +126,13 @@ static ulong apq8016_clk_set_rate(struct clk *clk, ulong rate)
>         struct msm_clk_priv *priv = dev_get_priv(clk->dev);
>
>         switch (clk->id) {
> -       case 0: /* SDC1 */
> +       case GCC_SDCC1_APPS_CLK: /* SDC1 */
>                 return clk_init_sdc(priv, 0, rate);
>                 break;
> -       case 1: /* SDC2 */
> +       case GCC_SDCC2_APPS_CLK: /* SDC2 */
>                 return clk_init_sdc(priv, 1, rate);
>                 break;
> -       case 4: /* UART2 */
> +       case GCC_BLSP1_UART2_APPS_CLK: /* UART2 */
>                 return clk_init_uart(priv);
>                 break;
>         default:
> diff --git a/drivers/phy/qcom/msm8916-usbh-phy.c b/drivers/phy/qcom/msm8916-usbh-phy.c
> index 7c9d030a4d8a..f52046f7cb02 100644
> --- a/drivers/phy/qcom/msm8916-usbh-phy.c
> +++ b/drivers/phy/qcom/msm8916-usbh-phy.c
> @@ -74,7 +74,7 @@ static int msm_phy_probe(struct udevice *dev)
>  {
>         struct msm_phy_priv *priv = dev_get_priv(dev);
>
> -       priv->regs = dev_remap_addr(dev);
> +       priv->regs = dev_remap_addr(dev_get_parent(dev));
>         if (!priv->regs)
>                 return -EINVAL;
>
> @@ -96,7 +96,7 @@ static struct phy_ops msm_phy_ops = {
>  };
>
>  static const struct udevice_id msm_phy_ids[] = {
> -       { .compatible = "qcom,apq8016-usbphy" },
> +       { .compatible = "qcom,usb-hs-phy-msm8916" },
>         { }
>  };
>
> diff --git a/drivers/pinctrl/qcom/pinctrl-apq8016.c b/drivers/pinctrl/qcom/pinctrl-apq8016.c
> index df5bd1c19f6e..c8f4eeae6082 100644
> --- a/drivers/pinctrl/qcom/pinctrl-apq8016.c
> +++ b/drivers/pinctrl/qcom/pinctrl-apq8016.c
> @@ -29,7 +29,7 @@ static const char * const msm_pinctrl_pins[] = {
>  };
>
>  static const struct pinctrl_function msm_pinctrl_functions[] = {
> -       {"blsp1_uart", 2},
> +       {"blsp_uart2", 2},
>  };
>
>  static const char *apq8016_get_function_name(struct udevice *dev,
> diff --git a/drivers/usb/host/ehci-msm.c b/drivers/usb/host/ehci-msm.c
> index dd0d153500cb..98fe7bc3bcb1 100644
> --- a/drivers/usb/host/ehci-msm.c
> +++ b/drivers/usb/host/ehci-msm.c
> @@ -9,6 +9,7 @@
>
>  #include <common.h>
>  #include <dm.h>
> +#include <dm/lists.h>
>  #include <errno.h>
>  #include <usb.h>
>  #include <usb/ehci-ci.h>
> @@ -119,6 +120,24 @@ static int ehci_usb_of_to_plat(struct udevice *dev)
>         return 0;
>  }
>
> +static int ehci_usb_of_bind(struct udevice *dev)
> +{
> +       ofnode ulpi_node = ofnode_first_subnode(dev_ofnode(dev));
> +       ofnode phy_node;
> +
> +       if (!ofnode_valid(ulpi_node))
> +               return 0;
> +
> +       phy_node = ofnode_first_subnode(ulpi_node);
> +       if (!ofnode_valid(phy_node)) {
> +               printf("%s: ulpi subnode with no phy\n", __func__);
> +               return -ENOENT;
> +       }
> +
> +       return device_bind_driver_to_node(dev, "msm8916_usbphy", "msm8916_usbphy",
> +                                         phy_node, NULL);
> +}
> +
>  #if defined(CONFIG_CI_UDC)
>  /* Little quirk that MSM needs with Chipidea controller
>   * Must reinit phy after reset
> @@ -132,7 +151,7 @@ void ci_init_after_reset(struct ehci_ctrl *ctrl)
>  #endif
>
>  static const struct udevice_id ehci_usb_ids[] = {
> -       { .compatible = "qcom,ehci-host", },
> +       { .compatible = "qcom,ci-hdrc", },
>         { }
>  };
>
> @@ -141,6 +160,7 @@ U_BOOT_DRIVER(usb_ehci) = {
>         .id     = UCLASS_USB,
>         .of_match = ehci_usb_ids,
>         .of_to_plat = ehci_usb_of_to_plat,
> +       .bind = ehci_usb_of_bind,
>         .probe = ehci_usb_probe,
>         .remove = ehci_usb_remove,
>         .ops    = &ehci_usb_ops,
> diff --git a/include/dt-bindings/clock/qcom,gcc-msm8916.h b/include/dt-bindings/clock/qcom,gcc-msm8916.h
> new file mode 100644
> index 000000000000..563034406184
> --- /dev/null
> +++ b/include/dt-bindings/clock/qcom,gcc-msm8916.h
> @@ -0,0 +1,179 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +/*
> + * Copyright 2015 Linaro Limited
> + */
> +
> +#ifndef _DT_BINDINGS_CLK_MSM_GCC_8916_H
> +#define _DT_BINDINGS_CLK_MSM_GCC_8916_H
> +
> +#define GPLL0                                  0
> +#define GPLL0_VOTE                             1
> +#define BIMC_PLL                               2
> +#define BIMC_PLL_VOTE                          3
> +#define GPLL1                                  4
> +#define GPLL1_VOTE                             5
> +#define GPLL2                                  6
> +#define GPLL2_VOTE                             7
> +#define PCNOC_BFDCD_CLK_SRC                    8
> +#define SYSTEM_NOC_BFDCD_CLK_SRC               9
> +#define CAMSS_AHB_CLK_SRC                      10
> +#define APSS_AHB_CLK_SRC                       11
> +#define CSI0_CLK_SRC                           12
> +#define CSI1_CLK_SRC                           13
> +#define GFX3D_CLK_SRC                          14
> +#define VFE0_CLK_SRC                           15
> +#define BLSP1_QUP1_I2C_APPS_CLK_SRC            16
> +#define BLSP1_QUP1_SPI_APPS_CLK_SRC            17
> +#define BLSP1_QUP2_I2C_APPS_CLK_SRC            18
> +#define BLSP1_QUP2_SPI_APPS_CLK_SRC            19
> +#define BLSP1_QUP3_I2C_APPS_CLK_SRC            20
> +#define BLSP1_QUP3_SPI_APPS_CLK_SRC            21
> +#define BLSP1_QUP4_I2C_APPS_CLK_SRC            22
> +#define BLSP1_QUP4_SPI_APPS_CLK_SRC            23
> +#define BLSP1_QUP5_I2C_APPS_CLK_SRC            24
> +#define BLSP1_QUP5_SPI_APPS_CLK_SRC            25
> +#define BLSP1_QUP6_I2C_APPS_CLK_SRC            26
> +#define BLSP1_QUP6_SPI_APPS_CLK_SRC            27
> +#define BLSP1_UART1_APPS_CLK_SRC               28
> +#define BLSP1_UART2_APPS_CLK_SRC               29
> +#define CCI_CLK_SRC                            30
> +#define CAMSS_GP0_CLK_SRC                      31
> +#define CAMSS_GP1_CLK_SRC                      32
> +#define JPEG0_CLK_SRC                          33
> +#define MCLK0_CLK_SRC                          34
> +#define MCLK1_CLK_SRC                          35
> +#define CSI0PHYTIMER_CLK_SRC                   36
> +#define CSI1PHYTIMER_CLK_SRC                   37
> +#define CPP_CLK_SRC                            38
> +#define CRYPTO_CLK_SRC                         39
> +#define GP1_CLK_SRC                            40
> +#define GP2_CLK_SRC                            41
> +#define GP3_CLK_SRC                            42
> +#define BYTE0_CLK_SRC                          43
> +#define ESC0_CLK_SRC                           44
> +#define MDP_CLK_SRC                            45
> +#define PCLK0_CLK_SRC                          46
> +#define VSYNC_CLK_SRC                          47
> +#define PDM2_CLK_SRC                           48
> +#define SDCC1_APPS_CLK_SRC                     49
> +#define SDCC2_APPS_CLK_SRC                     50
> +#define APSS_TCU_CLK_SRC                       51
> +#define USB_HS_SYSTEM_CLK_SRC                  52
> +#define VCODEC0_CLK_SRC                                53
> +#define GCC_BLSP1_AHB_CLK                      54
> +#define GCC_BLSP1_SLEEP_CLK                    55
> +#define GCC_BLSP1_QUP1_I2C_APPS_CLK            56
> +#define GCC_BLSP1_QUP1_SPI_APPS_CLK            57
> +#define GCC_BLSP1_QUP2_I2C_APPS_CLK            58
> +#define GCC_BLSP1_QUP2_SPI_APPS_CLK            59
> +#define GCC_BLSP1_QUP3_I2C_APPS_CLK            60
> +#define GCC_BLSP1_QUP3_SPI_APPS_CLK            61
> +#define GCC_BLSP1_QUP4_I2C_APPS_CLK            62
> +#define GCC_BLSP1_QUP4_SPI_APPS_CLK            63
> +#define GCC_BLSP1_QUP5_I2C_APPS_CLK            64
> +#define GCC_BLSP1_QUP5_SPI_APPS_CLK            65
> +#define GCC_BLSP1_QUP6_I2C_APPS_CLK            66
> +#define GCC_BLSP1_QUP6_SPI_APPS_CLK            67
> +#define GCC_BLSP1_UART1_APPS_CLK               68
> +#define GCC_BLSP1_UART2_APPS_CLK               69
> +#define GCC_BOOT_ROM_AHB_CLK                   70
> +#define GCC_CAMSS_CCI_AHB_CLK                  71
> +#define GCC_CAMSS_CCI_CLK                      72
> +#define GCC_CAMSS_CSI0_AHB_CLK                 73
> +#define GCC_CAMSS_CSI0_CLK                     74
> +#define GCC_CAMSS_CSI0PHY_CLK                  75
> +#define GCC_CAMSS_CSI0PIX_CLK                  76
> +#define GCC_CAMSS_CSI0RDI_CLK                  77
> +#define GCC_CAMSS_CSI1_AHB_CLK                 78
> +#define GCC_CAMSS_CSI1_CLK                     79
> +#define GCC_CAMSS_CSI1PHY_CLK                  80
> +#define GCC_CAMSS_CSI1PIX_CLK                  81
> +#define GCC_CAMSS_CSI1RDI_CLK                  82
> +#define GCC_CAMSS_CSI_VFE0_CLK                 83
> +#define GCC_CAMSS_GP0_CLK                      84
> +#define GCC_CAMSS_GP1_CLK                      85
> +#define GCC_CAMSS_ISPIF_AHB_CLK                        86
> +#define GCC_CAMSS_JPEG0_CLK                    87
> +#define GCC_CAMSS_JPEG_AHB_CLK                 88
> +#define GCC_CAMSS_JPEG_AXI_CLK                 89
> +#define GCC_CAMSS_MCLK0_CLK                    90
> +#define GCC_CAMSS_MCLK1_CLK                    91
> +#define GCC_CAMSS_MICRO_AHB_CLK                        92
> +#define GCC_CAMSS_CSI0PHYTIMER_CLK             93
> +#define GCC_CAMSS_CSI1PHYTIMER_CLK             94
> +#define GCC_CAMSS_AHB_CLK                      95
> +#define GCC_CAMSS_TOP_AHB_CLK                  96
> +#define GCC_CAMSS_CPP_AHB_CLK                  97
> +#define GCC_CAMSS_CPP_CLK                      98
> +#define GCC_CAMSS_VFE0_CLK                     99
> +#define GCC_CAMSS_VFE_AHB_CLK                  100
> +#define GCC_CAMSS_VFE_AXI_CLK                  101
> +#define GCC_CRYPTO_AHB_CLK                     102
> +#define GCC_CRYPTO_AXI_CLK                     103
> +#define GCC_CRYPTO_CLK                         104
> +#define GCC_OXILI_GMEM_CLK                     105
> +#define GCC_GP1_CLK                            106
> +#define GCC_GP2_CLK                            107
> +#define GCC_GP3_CLK                            108
> +#define GCC_MDSS_AHB_CLK                       109
> +#define GCC_MDSS_AXI_CLK                       110
> +#define GCC_MDSS_BYTE0_CLK                     111
> +#define GCC_MDSS_ESC0_CLK                      112
> +#define GCC_MDSS_MDP_CLK                       113
> +#define GCC_MDSS_PCLK0_CLK                     114
> +#define GCC_MDSS_VSYNC_CLK                     115
> +#define GCC_MSS_CFG_AHB_CLK                    116
> +#define GCC_OXILI_AHB_CLK                      117
> +#define GCC_OXILI_GFX3D_CLK                    118
> +#define GCC_PDM2_CLK                           119
> +#define GCC_PDM_AHB_CLK                                120
> +#define GCC_PRNG_AHB_CLK                       121
> +#define GCC_SDCC1_AHB_CLK                      122
> +#define GCC_SDCC1_APPS_CLK                     123
> +#define GCC_SDCC2_AHB_CLK                      124
> +#define GCC_SDCC2_APPS_CLK                     125
> +#define GCC_GTCU_AHB_CLK                       126
> +#define GCC_JPEG_TBU_CLK                       127
> +#define GCC_MDP_TBU_CLK                                128
> +#define GCC_SMMU_CFG_CLK                       129
> +#define GCC_VENUS_TBU_CLK                      130
> +#define GCC_VFE_TBU_CLK                                131
> +#define GCC_USB2A_PHY_SLEEP_CLK                        132
> +#define GCC_USB_HS_AHB_CLK                     133
> +#define GCC_USB_HS_SYSTEM_CLK                  134
> +#define GCC_VENUS0_AHB_CLK                     135
> +#define GCC_VENUS0_AXI_CLK                     136
> +#define GCC_VENUS0_VCODEC0_CLK                 137
> +#define BIMC_DDR_CLK_SRC                       138
> +#define GCC_APSS_TCU_CLK                       139
> +#define GCC_GFX_TCU_CLK                                140
> +#define BIMC_GPU_CLK_SRC                       141
> +#define GCC_BIMC_GFX_CLK                       142
> +#define GCC_BIMC_GPU_CLK                       143
> +#define ULTAUDIO_LPAIF_PRI_I2S_CLK_SRC         144
> +#define ULTAUDIO_LPAIF_SEC_I2S_CLK_SRC         145
> +#define ULTAUDIO_LPAIF_AUX_I2S_CLK_SRC         146
> +#define ULTAUDIO_XO_CLK_SRC                    147
> +#define ULTAUDIO_AHBFABRIC_CLK_SRC             148
> +#define CODEC_DIGCODEC_CLK_SRC                 149
> +#define GCC_ULTAUDIO_PCNOC_MPORT_CLK           150
> +#define GCC_ULTAUDIO_PCNOC_SWAY_CLK            151
> +#define GCC_ULTAUDIO_AVSYNC_XO_CLK             152
> +#define GCC_ULTAUDIO_STC_XO_CLK                        153
> +#define GCC_ULTAUDIO_AHBFABRIC_IXFABRIC_CLK    154
> +#define GCC_ULTAUDIO_AHBFABRIC_IXFABRIC_LPM_CLK        155
> +#define GCC_ULTAUDIO_LPAIF_PRI_I2S_CLK         156
> +#define GCC_ULTAUDIO_LPAIF_SEC_I2S_CLK         157
> +#define GCC_ULTAUDIO_LPAIF_AUX_I2S_CLK         158
> +#define GCC_CODEC_DIGCODEC_CLK                 159
> +#define GCC_MSS_Q6_BIMC_AXI_CLK                        160
> +
> +/* Indexes for GDSCs */
> +#define BIMC_GDSC                              0
> +#define VENUS_GDSC                             1
> +#define MDSS_GDSC                              2
> +#define JPEG_GDSC                              3
> +#define VFE_GDSC                               4
> +#define OXILI_GDSC                             5
> +
> +#endif
>
> --
> 2.43.1
>
diff mbox series

Patch

diff --git a/arch/arm/dts/dragonboard410c.dts b/arch/arm/dts/dragonboard410c.dts
index c395e6cc0427..453642b25705 100644
--- a/arch/arm/dts/dragonboard410c.dts
+++ b/arch/arm/dts/dragonboard410c.dts
@@ -12,7 +12,7 @@ 
 
 / {
 	model = "Qualcomm Technologies, Inc. Dragonboard 410c";
-	compatible = "qcom,dragonboard", "qcom,apq8016-sbc";
+	compatible = "qcom,apq8016-sbc", "qcom,apq8016";
 	qcom,msm-id = <0xce 0x0 0xf8 0x0 0xf9 0x0 0xfa 0x0 0xf7 0x0>;
 	qcom,board-id = <0x10018 0x0>;
 	#address-cells = <0x2>;
@@ -79,6 +79,7 @@ 
 			reg = <0x1800000 0x80000>;
 			#address-cells = <0x1>;
 			#size-cells = <0x0>;
+			#clock-cells = <0x1>;
 		};
 
 		serial@78b0000 {
@@ -91,15 +92,25 @@ 
 		};
 
 		ehci@78d9000 {
-			compatible = "qcom,ehci-host";
+			compatible = "qcom,ci-hdrc";
 			reg = <0x78d9000 0x400>;
 			phys = <&ehci_phy>;
-		};
 
-		ehci_phy: ehci_phy@78d9000 {
-			compatible = "qcom,apq8016-usbphy";
-			reg = <0x78d9000 0x400>;
-			#phy-cells = <0>;
+			ulpi {
+				usb_hs_phy: phy {
+					compatible = "qcom,usb-hs-phy-msm8916",
+						     "qcom,usb-hs-phy";
+					#phy-cells = <0>;
+					clocks = <&xo_board>, <&gcc GCC_USB2A_PHY_SLEEP_CLK>;
+					clock-names = "ref", "sleep";
+					resets = <&gcc GCC_USB2A_PHY_BCR>, <&usb 0>;
+					reset-names = "phy", "por";
+					qcom,init-seq = /bits/ 8 <0x0 0x44>,
+								 <0x1 0x6b>,
+								 <0x2 0x24>,
+								 <0x3 0x13>;
+				};
+			};
 		};
 
 		sdhci@07824000 {
diff --git a/board/qualcomm/dragonboard410c/dragonboard410c.c b/board/qualcomm/dragonboard410c/dragonboard410c.c
index 350e0e9e20aa..1adac07569ae 100644
--- a/board/qualcomm/dragonboard410c/dragonboard410c.c
+++ b/board/qualcomm/dragonboard410c/dragonboard410c.c
@@ -9,6 +9,7 @@ 
 #include <common.h>
 #include <cpu_func.h>
 #include <dm.h>
+#include <dm/pinctrl.h>
 #include <env.h>
 #include <init.h>
 #include <net.h>
@@ -23,84 +24,32 @@ 
 
 DECLARE_GLOBAL_DATA_PTR;
 
-int dram_init(void)
-{
-	gd->ram_size = PHYS_SDRAM_1_SIZE;
-
-	return 0;
-}
-
-int dram_init_banksize(void)
-{
-	gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
-	gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
-
-	return 0;
-}
+#define USB_HUB_RESET_GPIO 2
+#define USB_SW_SELECT_GPIO 3
 
 int board_usb_init(int index, enum usb_init_type init)
 {
-	static struct udevice *pmic_gpio;
-	static struct gpio_desc hub_reset, usb_sel;
-	int ret = 0, node;
+	struct udevice *usb;
+	int ret = 0;
 
-	if (!pmic_gpio) {
-		ret = uclass_get_device_by_name(UCLASS_GPIO,
-						"pm8916_gpios@c000",
-						&pmic_gpio);
-		if (ret < 0) {
-			printf("Failed to find pm8916_gpios@c000 node.\n");
-			return ret;
-		}
+	/* USB device */
+	ret = device_find_global_by_ofnode(ofnode_path("/soc/usb"), &usb);
+	if (ret) {
+		printf("Cannot find USB device\n");
+		return ret;
 	}
 
-	/* Try to request gpios needed to start usb host on dragonboard */
-	if (!dm_gpio_is_valid(&hub_reset)) {
-		node = fdt_subnode_offset(gd->fdt_blob,
-					  dev_of_offset(pmic_gpio),
-					  "usb_hub_reset_pm");
-		if (node < 0) {
-			printf("Failed to find usb_hub_reset_pm dt node.\n");
-			return node;
-		}
-		ret = gpio_request_by_name_nodev(offset_to_ofnode(node),
-						 "gpios", 0, &hub_reset, 0);
-		if (ret < 0) {
-			printf("Failed to request usb_hub_reset_pm gpio.\n");
-			return ret;
-		}
-	}
-
-	if (!dm_gpio_is_valid(&usb_sel)) {
-		node = fdt_subnode_offset(gd->fdt_blob,
-					  dev_of_offset(pmic_gpio),
-					  "usb_sw_sel_pm");
-		if (node < 0) {
-			printf("Failed to find usb_sw_sel_pm dt node.\n");
-			return 0;
-		}
-		ret = gpio_request_by_name_nodev(offset_to_ofnode(node),
-						 "gpios", 0, &usb_sel, 0);
-		if (ret < 0) {
-			printf("Failed to request usb_sw_sel_pm gpio.\n");
-			return ret;
-		}
-	}
-
-	if (init == USB_INIT_HOST) {
-		/* Start USB Hub */
-		dm_gpio_set_dir_flags(&hub_reset,
-				      GPIOD_IS_OUT | GPIOD_IS_OUT_ACTIVE);
-		mdelay(100);
-		/* Switch usb to host connectors */
-		dm_gpio_set_dir_flags(&usb_sel,
-				      GPIOD_IS_OUT | GPIOD_IS_OUT_ACTIVE);
-		mdelay(100);
-	} else { /* Device */
-		/* Disable hub */
-		dm_gpio_set_dir_flags(&hub_reset, GPIOD_IS_OUT);
-		/* Switch back to device connector */
-		dm_gpio_set_dir_flags(&usb_sel, GPIOD_IS_OUT);
+	/* Select "default" or "device" pinctrl */
+	switch (init) {
+	case USB_INIT_HOST:
+		pinctrl_select_state(usb, "default");
+		break;
+	case USB_INIT_DEVICE:
+		pinctrl_select_state(usb, "device");
+		break;
+	default:
+		debug("Unknown usb_init_type %d\n", init);
+		break;
 	}
 
 	return 0;
diff --git a/doc/device-tree-bindings/usb/ehci-msm.txt b/doc/device-tree-bindings/usb/ehci-msm.txt
deleted file mode 100644
index 205bb07220fb..000000000000
--- a/doc/device-tree-bindings/usb/ehci-msm.txt
+++ /dev/null
@@ -1,10 +0,0 @@ 
-Chipidea EHCI controller (part of OTG controller) used on Qualcomm devices.
-
-Required properties:
-- compatible: must be "qcom,ehci-host"
-- reg: start address and size of the registers
-
-ehci@78d9000 {
-	compatible = "qcom,ehci-host";
-	reg = <0x78d9000 0x400>;
-};
diff --git a/drivers/clk/qcom/clock-apq8016.c b/drivers/clk/qcom/clock-apq8016.c
index 0af7191cff52..9de0ad5ed32d 100644
--- a/drivers/clk/qcom/clock-apq8016.c
+++ b/drivers/clk/qcom/clock-apq8016.c
@@ -13,6 +13,7 @@ 
 #include <errno.h>
 #include <asm/io.h>
 #include <linux/bitops.h>
+#include <dt-bindings/clock/qcom,gcc-msm8916.h>
 
 #include "clock-qcom.h"
 
@@ -125,13 +126,13 @@  static ulong apq8016_clk_set_rate(struct clk *clk, ulong rate)
 	struct msm_clk_priv *priv = dev_get_priv(clk->dev);
 
 	switch (clk->id) {
-	case 0: /* SDC1 */
+	case GCC_SDCC1_APPS_CLK: /* SDC1 */
 		return clk_init_sdc(priv, 0, rate);
 		break;
-	case 1: /* SDC2 */
+	case GCC_SDCC2_APPS_CLK: /* SDC2 */
 		return clk_init_sdc(priv, 1, rate);
 		break;
-	case 4: /* UART2 */
+	case GCC_BLSP1_UART2_APPS_CLK: /* UART2 */
 		return clk_init_uart(priv);
 		break;
 	default:
diff --git a/drivers/phy/qcom/msm8916-usbh-phy.c b/drivers/phy/qcom/msm8916-usbh-phy.c
index 7c9d030a4d8a..f52046f7cb02 100644
--- a/drivers/phy/qcom/msm8916-usbh-phy.c
+++ b/drivers/phy/qcom/msm8916-usbh-phy.c
@@ -74,7 +74,7 @@  static int msm_phy_probe(struct udevice *dev)
 {
 	struct msm_phy_priv *priv = dev_get_priv(dev);
 
-	priv->regs = dev_remap_addr(dev);
+	priv->regs = dev_remap_addr(dev_get_parent(dev));
 	if (!priv->regs)
 		return -EINVAL;
 
@@ -96,7 +96,7 @@  static struct phy_ops msm_phy_ops = {
 };
 
 static const struct udevice_id msm_phy_ids[] = {
-	{ .compatible = "qcom,apq8016-usbphy" },
+	{ .compatible = "qcom,usb-hs-phy-msm8916" },
 	{ }
 };
 
diff --git a/drivers/pinctrl/qcom/pinctrl-apq8016.c b/drivers/pinctrl/qcom/pinctrl-apq8016.c
index df5bd1c19f6e..c8f4eeae6082 100644
--- a/drivers/pinctrl/qcom/pinctrl-apq8016.c
+++ b/drivers/pinctrl/qcom/pinctrl-apq8016.c
@@ -29,7 +29,7 @@  static const char * const msm_pinctrl_pins[] = {
 };
 
 static const struct pinctrl_function msm_pinctrl_functions[] = {
-	{"blsp1_uart", 2},
+	{"blsp_uart2", 2},
 };
 
 static const char *apq8016_get_function_name(struct udevice *dev,
diff --git a/drivers/usb/host/ehci-msm.c b/drivers/usb/host/ehci-msm.c
index dd0d153500cb..98fe7bc3bcb1 100644
--- a/drivers/usb/host/ehci-msm.c
+++ b/drivers/usb/host/ehci-msm.c
@@ -9,6 +9,7 @@ 
 
 #include <common.h>
 #include <dm.h>
+#include <dm/lists.h>
 #include <errno.h>
 #include <usb.h>
 #include <usb/ehci-ci.h>
@@ -119,6 +120,24 @@  static int ehci_usb_of_to_plat(struct udevice *dev)
 	return 0;
 }
 
+static int ehci_usb_of_bind(struct udevice *dev)
+{
+	ofnode ulpi_node = ofnode_first_subnode(dev_ofnode(dev));
+	ofnode phy_node;
+
+	if (!ofnode_valid(ulpi_node))
+		return 0;
+
+	phy_node = ofnode_first_subnode(ulpi_node);
+	if (!ofnode_valid(phy_node)) {
+		printf("%s: ulpi subnode with no phy\n", __func__);
+		return -ENOENT;
+	}
+
+	return device_bind_driver_to_node(dev, "msm8916_usbphy", "msm8916_usbphy",
+					  phy_node, NULL);
+}
+
 #if defined(CONFIG_CI_UDC)
 /* Little quirk that MSM needs with Chipidea controller
  * Must reinit phy after reset
@@ -132,7 +151,7 @@  void ci_init_after_reset(struct ehci_ctrl *ctrl)
 #endif
 
 static const struct udevice_id ehci_usb_ids[] = {
-	{ .compatible = "qcom,ehci-host", },
+	{ .compatible = "qcom,ci-hdrc", },
 	{ }
 };
 
@@ -141,6 +160,7 @@  U_BOOT_DRIVER(usb_ehci) = {
 	.id	= UCLASS_USB,
 	.of_match = ehci_usb_ids,
 	.of_to_plat = ehci_usb_of_to_plat,
+	.bind = ehci_usb_of_bind,
 	.probe = ehci_usb_probe,
 	.remove = ehci_usb_remove,
 	.ops	= &ehci_usb_ops,
diff --git a/include/dt-bindings/clock/qcom,gcc-msm8916.h b/include/dt-bindings/clock/qcom,gcc-msm8916.h
new file mode 100644
index 000000000000..563034406184
--- /dev/null
+++ b/include/dt-bindings/clock/qcom,gcc-msm8916.h
@@ -0,0 +1,179 @@ 
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright 2015 Linaro Limited
+ */
+
+#ifndef _DT_BINDINGS_CLK_MSM_GCC_8916_H
+#define _DT_BINDINGS_CLK_MSM_GCC_8916_H
+
+#define GPLL0					0
+#define GPLL0_VOTE				1
+#define BIMC_PLL				2
+#define BIMC_PLL_VOTE				3
+#define GPLL1					4
+#define GPLL1_VOTE				5
+#define GPLL2					6
+#define GPLL2_VOTE				7
+#define PCNOC_BFDCD_CLK_SRC			8
+#define SYSTEM_NOC_BFDCD_CLK_SRC		9
+#define CAMSS_AHB_CLK_SRC			10
+#define APSS_AHB_CLK_SRC			11
+#define CSI0_CLK_SRC				12
+#define CSI1_CLK_SRC				13
+#define GFX3D_CLK_SRC				14
+#define VFE0_CLK_SRC				15
+#define BLSP1_QUP1_I2C_APPS_CLK_SRC		16
+#define BLSP1_QUP1_SPI_APPS_CLK_SRC		17
+#define BLSP1_QUP2_I2C_APPS_CLK_SRC		18
+#define BLSP1_QUP2_SPI_APPS_CLK_SRC		19
+#define BLSP1_QUP3_I2C_APPS_CLK_SRC		20
+#define BLSP1_QUP3_SPI_APPS_CLK_SRC		21
+#define BLSP1_QUP4_I2C_APPS_CLK_SRC		22
+#define BLSP1_QUP4_SPI_APPS_CLK_SRC		23
+#define BLSP1_QUP5_I2C_APPS_CLK_SRC		24
+#define BLSP1_QUP5_SPI_APPS_CLK_SRC		25
+#define BLSP1_QUP6_I2C_APPS_CLK_SRC		26
+#define BLSP1_QUP6_SPI_APPS_CLK_SRC		27
+#define BLSP1_UART1_APPS_CLK_SRC		28
+#define BLSP1_UART2_APPS_CLK_SRC		29
+#define CCI_CLK_SRC				30
+#define CAMSS_GP0_CLK_SRC			31
+#define CAMSS_GP1_CLK_SRC			32
+#define JPEG0_CLK_SRC				33
+#define MCLK0_CLK_SRC				34
+#define MCLK1_CLK_SRC				35
+#define CSI0PHYTIMER_CLK_SRC			36
+#define CSI1PHYTIMER_CLK_SRC			37
+#define CPP_CLK_SRC				38
+#define CRYPTO_CLK_SRC				39
+#define GP1_CLK_SRC				40
+#define GP2_CLK_SRC				41
+#define GP3_CLK_SRC				42
+#define BYTE0_CLK_SRC				43
+#define ESC0_CLK_SRC				44
+#define MDP_CLK_SRC				45
+#define PCLK0_CLK_SRC				46
+#define VSYNC_CLK_SRC				47
+#define PDM2_CLK_SRC				48
+#define SDCC1_APPS_CLK_SRC			49
+#define SDCC2_APPS_CLK_SRC			50
+#define APSS_TCU_CLK_SRC			51
+#define USB_HS_SYSTEM_CLK_SRC			52
+#define VCODEC0_CLK_SRC				53
+#define GCC_BLSP1_AHB_CLK			54
+#define GCC_BLSP1_SLEEP_CLK			55
+#define GCC_BLSP1_QUP1_I2C_APPS_CLK		56
+#define GCC_BLSP1_QUP1_SPI_APPS_CLK		57
+#define GCC_BLSP1_QUP2_I2C_APPS_CLK		58
+#define GCC_BLSP1_QUP2_SPI_APPS_CLK		59
+#define GCC_BLSP1_QUP3_I2C_APPS_CLK		60
+#define GCC_BLSP1_QUP3_SPI_APPS_CLK		61
+#define GCC_BLSP1_QUP4_I2C_APPS_CLK		62
+#define GCC_BLSP1_QUP4_SPI_APPS_CLK		63
+#define GCC_BLSP1_QUP5_I2C_APPS_CLK		64
+#define GCC_BLSP1_QUP5_SPI_APPS_CLK		65
+#define GCC_BLSP1_QUP6_I2C_APPS_CLK		66
+#define GCC_BLSP1_QUP6_SPI_APPS_CLK		67
+#define GCC_BLSP1_UART1_APPS_CLK		68
+#define GCC_BLSP1_UART2_APPS_CLK		69
+#define GCC_BOOT_ROM_AHB_CLK			70
+#define GCC_CAMSS_CCI_AHB_CLK			71
+#define GCC_CAMSS_CCI_CLK			72
+#define GCC_CAMSS_CSI0_AHB_CLK			73
+#define GCC_CAMSS_CSI0_CLK			74
+#define GCC_CAMSS_CSI0PHY_CLK			75
+#define GCC_CAMSS_CSI0PIX_CLK			76
+#define GCC_CAMSS_CSI0RDI_CLK			77
+#define GCC_CAMSS_CSI1_AHB_CLK			78
+#define GCC_CAMSS_CSI1_CLK			79
+#define GCC_CAMSS_CSI1PHY_CLK			80
+#define GCC_CAMSS_CSI1PIX_CLK			81
+#define GCC_CAMSS_CSI1RDI_CLK			82
+#define GCC_CAMSS_CSI_VFE0_CLK			83
+#define GCC_CAMSS_GP0_CLK			84
+#define GCC_CAMSS_GP1_CLK			85
+#define GCC_CAMSS_ISPIF_AHB_CLK			86
+#define GCC_CAMSS_JPEG0_CLK			87
+#define GCC_CAMSS_JPEG_AHB_CLK			88
+#define GCC_CAMSS_JPEG_AXI_CLK			89
+#define GCC_CAMSS_MCLK0_CLK			90
+#define GCC_CAMSS_MCLK1_CLK			91
+#define GCC_CAMSS_MICRO_AHB_CLK			92
+#define GCC_CAMSS_CSI0PHYTIMER_CLK		93
+#define GCC_CAMSS_CSI1PHYTIMER_CLK		94
+#define GCC_CAMSS_AHB_CLK			95
+#define GCC_CAMSS_TOP_AHB_CLK			96
+#define GCC_CAMSS_CPP_AHB_CLK			97
+#define GCC_CAMSS_CPP_CLK			98
+#define GCC_CAMSS_VFE0_CLK			99
+#define GCC_CAMSS_VFE_AHB_CLK			100
+#define GCC_CAMSS_VFE_AXI_CLK			101
+#define GCC_CRYPTO_AHB_CLK			102
+#define GCC_CRYPTO_AXI_CLK			103
+#define GCC_CRYPTO_CLK				104
+#define GCC_OXILI_GMEM_CLK			105
+#define GCC_GP1_CLK				106
+#define GCC_GP2_CLK				107
+#define GCC_GP3_CLK				108
+#define GCC_MDSS_AHB_CLK			109
+#define GCC_MDSS_AXI_CLK			110
+#define GCC_MDSS_BYTE0_CLK			111
+#define GCC_MDSS_ESC0_CLK			112
+#define GCC_MDSS_MDP_CLK			113
+#define GCC_MDSS_PCLK0_CLK			114
+#define GCC_MDSS_VSYNC_CLK			115
+#define GCC_MSS_CFG_AHB_CLK			116
+#define GCC_OXILI_AHB_CLK			117
+#define GCC_OXILI_GFX3D_CLK			118
+#define GCC_PDM2_CLK				119
+#define GCC_PDM_AHB_CLK				120
+#define GCC_PRNG_AHB_CLK			121
+#define GCC_SDCC1_AHB_CLK			122
+#define GCC_SDCC1_APPS_CLK			123
+#define GCC_SDCC2_AHB_CLK			124
+#define GCC_SDCC2_APPS_CLK			125
+#define GCC_GTCU_AHB_CLK			126
+#define GCC_JPEG_TBU_CLK			127
+#define GCC_MDP_TBU_CLK				128
+#define GCC_SMMU_CFG_CLK			129
+#define GCC_VENUS_TBU_CLK			130
+#define GCC_VFE_TBU_CLK				131
+#define GCC_USB2A_PHY_SLEEP_CLK			132
+#define GCC_USB_HS_AHB_CLK			133
+#define GCC_USB_HS_SYSTEM_CLK			134
+#define GCC_VENUS0_AHB_CLK			135
+#define GCC_VENUS0_AXI_CLK			136
+#define GCC_VENUS0_VCODEC0_CLK			137
+#define BIMC_DDR_CLK_SRC			138
+#define GCC_APSS_TCU_CLK			139
+#define GCC_GFX_TCU_CLK				140
+#define BIMC_GPU_CLK_SRC			141
+#define GCC_BIMC_GFX_CLK			142
+#define GCC_BIMC_GPU_CLK			143
+#define ULTAUDIO_LPAIF_PRI_I2S_CLK_SRC		144
+#define ULTAUDIO_LPAIF_SEC_I2S_CLK_SRC		145
+#define ULTAUDIO_LPAIF_AUX_I2S_CLK_SRC		146
+#define ULTAUDIO_XO_CLK_SRC			147
+#define ULTAUDIO_AHBFABRIC_CLK_SRC		148
+#define CODEC_DIGCODEC_CLK_SRC			149
+#define GCC_ULTAUDIO_PCNOC_MPORT_CLK		150
+#define GCC_ULTAUDIO_PCNOC_SWAY_CLK		151
+#define GCC_ULTAUDIO_AVSYNC_XO_CLK		152
+#define GCC_ULTAUDIO_STC_XO_CLK			153
+#define GCC_ULTAUDIO_AHBFABRIC_IXFABRIC_CLK	154
+#define GCC_ULTAUDIO_AHBFABRIC_IXFABRIC_LPM_CLK	155
+#define GCC_ULTAUDIO_LPAIF_PRI_I2S_CLK		156
+#define GCC_ULTAUDIO_LPAIF_SEC_I2S_CLK		157
+#define GCC_ULTAUDIO_LPAIF_AUX_I2S_CLK		158
+#define GCC_CODEC_DIGCODEC_CLK			159
+#define GCC_MSS_Q6_BIMC_AXI_CLK			160
+
+/* Indexes for GDSCs */
+#define BIMC_GDSC				0
+#define VENUS_GDSC				1
+#define MDSS_GDSC				2
+#define JPEG_GDSC				3
+#define VFE_GDSC				4
+#define OXILI_GDSC				5
+
+#endif