/* SPDX-License-Identifier: GPL-2.0 */ /* * Copyright (C) 2020 Rockchip Electronics Co., Ltd * * Based on include/soc/rockchip/rockchip_phy_typec.h in Linux Kernel. */ #ifndef __LINUX_ROCKCHIP_PHY_TYPEC_H #define __LINUX_ROCKCHIP_PHY_TYPEC_H #include struct usb3phy_reg { u32 offset; u32 enable_bit; u32 write_enable; }; struct rockchip_usb3phy_port_cfg { struct usb3phy_reg typec_conn_dir; struct usb3phy_reg usb3tousb2_en; struct usb3phy_reg usb3host_disable; struct usb3phy_reg usb3host_port; struct usb3phy_reg external_psm; struct usb3phy_reg pipe_status; }; struct rockchip_typec_phy { struct udevice *dev; void __iomem *base; void __iomem *grf_regs; struct reset_ctl uphy_rst; struct reset_ctl pipe_rst; struct reset_ctl tcphy_rst; struct rockchip_usb3phy_port_cfg port_cfgs; /* mutex to protect access to individual PHYs */ struct mutex lock; bool flip; u8 mode; }; #if CONFIG_IS_ENABLED(PHY_ROCKCHIP_TYPEC) int rockchip_u3phy_uboot_init(const char *name); #else static inline int rockchip_u3phy_uboot_init(const char *name) { return -ENOTSUPP; } #endif #endif /* __LINUX_ROCKCHIP_PHY_TYPEC_H */