162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci#ifndef __FOTG210_H
362306a36Sopenharmony_ci#define __FOTG210_H
462306a36Sopenharmony_ci
562306a36Sopenharmony_cienum gemini_port {
662306a36Sopenharmony_ci	GEMINI_PORT_NONE = 0,
762306a36Sopenharmony_ci	GEMINI_PORT_0,
862306a36Sopenharmony_ci	GEMINI_PORT_1,
962306a36Sopenharmony_ci};
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_cistruct fotg210 {
1262306a36Sopenharmony_ci	struct device *dev;
1362306a36Sopenharmony_ci	struct resource *res;
1462306a36Sopenharmony_ci	void __iomem *base;
1562306a36Sopenharmony_ci	struct clk *pclk;
1662306a36Sopenharmony_ci	struct regmap *map;
1762306a36Sopenharmony_ci	enum gemini_port port;
1862306a36Sopenharmony_ci};
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_civoid fotg210_vbus(struct fotg210 *fotg, bool enable);
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci#ifdef CONFIG_USB_FOTG210_HCD
2362306a36Sopenharmony_ciint fotg210_hcd_probe(struct platform_device *pdev, struct fotg210 *fotg);
2462306a36Sopenharmony_ciint fotg210_hcd_remove(struct platform_device *pdev);
2562306a36Sopenharmony_ciint fotg210_hcd_init(void);
2662306a36Sopenharmony_civoid fotg210_hcd_cleanup(void);
2762306a36Sopenharmony_ci#else
2862306a36Sopenharmony_cistatic inline int fotg210_hcd_probe(struct platform_device *pdev,
2962306a36Sopenharmony_ci				    struct fotg210 *fotg)
3062306a36Sopenharmony_ci{
3162306a36Sopenharmony_ci	return 0;
3262306a36Sopenharmony_ci}
3362306a36Sopenharmony_cistatic inline int fotg210_hcd_remove(struct platform_device *pdev)
3462306a36Sopenharmony_ci{
3562306a36Sopenharmony_ci	return 0;
3662306a36Sopenharmony_ci}
3762306a36Sopenharmony_cistatic inline int fotg210_hcd_init(void)
3862306a36Sopenharmony_ci{
3962306a36Sopenharmony_ci	return 0;
4062306a36Sopenharmony_ci}
4162306a36Sopenharmony_cistatic inline void fotg210_hcd_cleanup(void)
4262306a36Sopenharmony_ci{
4362306a36Sopenharmony_ci}
4462306a36Sopenharmony_ci#endif
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci#ifdef CONFIG_USB_FOTG210_UDC
4762306a36Sopenharmony_ciint fotg210_udc_probe(struct platform_device *pdev, struct fotg210 *fotg);
4862306a36Sopenharmony_ciint fotg210_udc_remove(struct platform_device *pdev);
4962306a36Sopenharmony_ci#else
5062306a36Sopenharmony_cistatic inline int fotg210_udc_probe(struct platform_device *pdev,
5162306a36Sopenharmony_ci				    struct fotg210 *fotg)
5262306a36Sopenharmony_ci{
5362306a36Sopenharmony_ci	return 0;
5462306a36Sopenharmony_ci}
5562306a36Sopenharmony_cistatic inline int fotg210_udc_remove(struct platform_device *pdev)
5662306a36Sopenharmony_ci{
5762306a36Sopenharmony_ci	return 0;
5862306a36Sopenharmony_ci}
5962306a36Sopenharmony_ci#endif
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_ci#endif /* __FOTG210_H */
62