]> git.sur5r.net Git - u-boot/blobdiff - arch/arm/mach-tegra/xusb-padctl-common.h
Merge git://git.denx.de/u-boot-spi
[u-boot] / arch / arm / mach-tegra / xusb-padctl-common.h
index a65b754f6b7d2e09cbe8504273a89dea0926f1fa..68365883c7811f9b7780fa1263ce81e335443baa 100644 (file)
@@ -9,9 +9,11 @@
 
 #include <common.h>
 #include <fdtdec.h>
+#include <dm/ofnode.h>
 
 #include <asm/io.h>
 #include <asm/arch-tegra/xusb-padctl.h>
+#include <linux/ioport.h>
 
 struct tegra_xusb_padctl_lane {
        const char *name;
@@ -33,8 +35,8 @@ struct tegra_xusb_phy_ops {
 };
 
 struct tegra_xusb_phy {
+       unsigned int type;
        const struct tegra_xusb_phy_ops *ops;
-
        struct tegra_xusb_padctl *padctl;
 };
 
@@ -45,8 +47,8 @@ struct tegra_xusb_padctl_pin {
        int iddq;
 };
 
-#define MAX_GROUPS 3
-#define MAX_PINS 6
+#define MAX_GROUPS 5
+#define MAX_PINS 7
 
 struct tegra_xusb_padctl_group {
        const char *name;
@@ -58,6 +60,15 @@ struct tegra_xusb_padctl_group {
        int iddq;
 };
 
+struct tegra_xusb_padctl_soc {
+       const struct tegra_xusb_padctl_lane *lanes;
+       unsigned int num_lanes;
+       const char *const *functions;
+       unsigned int num_functions;
+       struct tegra_xusb_phy *phys;
+       unsigned int num_phys;
+};
+
 struct tegra_xusb_padctl_config {
        const char *name;
 
@@ -66,20 +77,13 @@ struct tegra_xusb_padctl_config {
 };
 
 struct tegra_xusb_padctl {
-       struct fdt_resource regs;
-
+       const struct tegra_xusb_padctl_soc *socdata;
+       struct tegra_xusb_padctl_config config;
+       struct resource regs;
        unsigned int enable;
 
-       struct tegra_xusb_phy phys[2];
-
-       const struct tegra_xusb_padctl_lane *lanes;
-       unsigned int num_lanes;
-
-       const char *const *functions;
-       unsigned int num_functions;
-
-       struct tegra_xusb_padctl_config config;
 };
+extern struct tegra_xusb_padctl padctl;
 
 static inline u32 padctl_readl(struct tegra_xusb_padctl *padctl,
                               unsigned long offset)
@@ -93,11 +97,7 @@ static inline void padctl_writel(struct tegra_xusb_padctl *padctl,
        writel(value, padctl->regs.start + offset);
 }
 
-extern struct tegra_xusb_padctl *padctl;
-
-int tegra_xusb_padctl_parse_dt(struct tegra_xusb_padctl *padctl,
-                              const void *fdt, int node);
-int tegra_xusb_padctl_config_apply(struct tegra_xusb_padctl *padctl,
-                                  struct tegra_xusb_padctl_config *config);
+int tegra_xusb_process_nodes(ofnode nodes[], unsigned int count,
+                            const struct tegra_xusb_padctl_soc *socdata);
 
 #endif