mirror of
https://xff.cz/git/u-boot/
synced 2025-09-03 17:52:07 +02:00
rockchip: usb: Migrate to use ofnode
Migrate to use ofnode_* instead of fdt_* so that we may able to use live dt for usb udc driver. Signed-off-by: Kever Yang <kever.yang@rock-chips.com>
This commit is contained in:
@@ -61,28 +61,26 @@ static struct dwc2_plat_otg_data otg_data = {
|
|||||||
|
|
||||||
int board_usb_init(int index, enum usb_init_type init)
|
int board_usb_init(int index, enum usb_init_type init)
|
||||||
{
|
{
|
||||||
int node;
|
ofnode node;
|
||||||
const char *mode;
|
const char *mode;
|
||||||
bool matched = false;
|
bool matched = false;
|
||||||
const void *blob = gd->fdt_blob;
|
|
||||||
|
|
||||||
/* find the usb_otg node */
|
/* find the usb_otg node */
|
||||||
node = fdt_node_offset_by_compatible(blob, -1, "snps,dwc2");
|
node = ofnode_by_compatible(ofnode_null(), "snps,dwc2");
|
||||||
|
while (ofnode_valid(node)) {
|
||||||
while (node > 0) {
|
mode = ofnode_read_string(node, "dr_mode");
|
||||||
mode = fdt_getprop(blob, node, "dr_mode", NULL);
|
|
||||||
if (mode && strcmp(mode, "otg") == 0) {
|
if (mode && strcmp(mode, "otg") == 0) {
|
||||||
matched = true;
|
matched = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
node = fdt_node_offset_by_compatible(blob, node, "snps,dwc2");
|
node = ofnode_by_compatible(node, "snps,dwc2");
|
||||||
}
|
}
|
||||||
if (!matched) {
|
if (!matched) {
|
||||||
debug("Not found usb_otg device\n");
|
debug("Not found usb_otg device\n");
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
otg_data.regs_otg = fdtdec_get_addr(blob, node, "reg");
|
otg_data.regs_otg = ofnode_get_addr(node);
|
||||||
|
|
||||||
return dwc2_udc_probe(&otg_data);
|
return dwc2_udc_probe(&otg_data);
|
||||||
}
|
}
|
||||||
|
@@ -5,7 +5,6 @@
|
|||||||
|
|
||||||
#include <common.h>
|
#include <common.h>
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
#include <linux/libfdt.h>
|
|
||||||
|
|
||||||
#include "../gadget/dwc2_udc_otg_priv.h"
|
#include "../gadget/dwc2_udc_otg_priv.h"
|
||||||
|
|
||||||
@@ -71,8 +70,8 @@ void otg_phy_init(struct dwc2_udc *dev)
|
|||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(rockchip_usb2_phy_dt_ids); i++) {
|
for (i = 0; i < ARRAY_SIZE(rockchip_usb2_phy_dt_ids); i++) {
|
||||||
of_id = &rockchip_usb2_phy_dt_ids[i];
|
of_id = &rockchip_usb2_phy_dt_ids[i];
|
||||||
if (fdt_node_check_compatible(gd->fdt_blob, pdata->phy_of_node,
|
if (ofnode_device_is_compatible(pdata->phy_of_node,
|
||||||
of_id->compatible) == 0) {
|
of_id->compatible)){
|
||||||
phy_cfg = (struct rockchip_usb2_phy_cfg *)of_id->data;
|
phy_cfg = (struct rockchip_usb2_phy_cfg *)of_id->data;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@@ -8,12 +8,14 @@
|
|||||||
#ifndef __DWC2_USB_GADGET
|
#ifndef __DWC2_USB_GADGET
|
||||||
#define __DWC2_USB_GADGET
|
#define __DWC2_USB_GADGET
|
||||||
|
|
||||||
|
#include <dm/ofnode.h>
|
||||||
|
|
||||||
#define PHY0_SLEEP (1 << 5)
|
#define PHY0_SLEEP (1 << 5)
|
||||||
#define DWC2_MAX_HW_ENDPOINTS 16
|
#define DWC2_MAX_HW_ENDPOINTS 16
|
||||||
|
|
||||||
struct dwc2_plat_otg_data {
|
struct dwc2_plat_otg_data {
|
||||||
void *priv;
|
void *priv;
|
||||||
int phy_of_node;
|
ofnode phy_of_node;
|
||||||
int (*phy_control)(int on);
|
int (*phy_control)(int on);
|
||||||
uintptr_t regs_phy;
|
uintptr_t regs_phy;
|
||||||
uintptr_t regs_otg;
|
uintptr_t regs_otg;
|
||||||
|
Reference in New Issue
Block a user