mirror of
https://github.com/hardkernel/kernel_common_drivers.git
synced 2026-06-25 12:03:48 +09:00
37365df098
PD#SWPL-95000 Problem: Kernel size is too big Solution: Remove some CONFIGs Verify: c3 pass Signed-off-by: yao zhang1 <yao.zhang1@amlogic.com> Change-Id: I13303e5e1e967961c6d1cc32a67465c423816276 Signed-off-by: yongbing.he <yongbing.he@amlogic.com>
139 lines
2.8 KiB
C
139 lines
2.8 KiB
C
/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
|
|
/*
|
|
* Copyright (c) 2019 Amlogic, Inc. All rights reserved.
|
|
*/
|
|
#include <linux/workqueue.h>
|
|
|
|
struct bc_regs {
|
|
void __iomem *bc_r[2];
|
|
};
|
|
|
|
union bc_r0 {
|
|
/** raw register data */
|
|
u32 d32;
|
|
/** register bits */
|
|
struct {
|
|
unsigned bc_det_sw:1;
|
|
unsigned bc_int_clean:1;
|
|
unsigned bc_en:1;
|
|
unsigned reserved:29;
|
|
} b;
|
|
};
|
|
|
|
union bc_r1 {
|
|
/** raw register data */
|
|
u32 d32;
|
|
/** register bits */
|
|
struct {
|
|
unsigned bc_det_end:1;
|
|
unsigned port_status:4;
|
|
unsigned bc_state:3;
|
|
unsigned analog_output_signal:8;
|
|
unsigned reserved:16;
|
|
} b;
|
|
};
|
|
|
|
union bc_r2 {
|
|
/** raw register data */
|
|
u32 d32;
|
|
/** register bits */
|
|
struct {
|
|
unsigned usb2_bc_bypass:1;
|
|
unsigned usb2_bc_dcd_trim:2;
|
|
unsigned bc_otp_func_en:1;
|
|
unsigned reserved:28;
|
|
} b;
|
|
};
|
|
|
|
union bc_r3 {
|
|
/** raw register data */
|
|
u32 d32;
|
|
/** register bits */
|
|
struct {
|
|
unsigned usb2_otg_vbusdet_en0:1;
|
|
unsigned usb2_bc_dcd_en0:1;
|
|
unsigned usb2_bc_rpd_en:1;
|
|
unsigned usb2_bc_vdp_en0:1;
|
|
unsigned usb2_bc_chg_det_en0:1;
|
|
unsigned usb2_bc_vdm_en0:1;
|
|
unsigned usb2_bc_dcp_det_en0:1;
|
|
unsigned usb2_otg_aca_en0:1;
|
|
unsigned usb2_bgr_en0:1;
|
|
unsigned usb2_otg_sess_vld0:1;
|
|
unsigned usb2_bc_dcd_det0:1;
|
|
unsigned usb2_bc_chg_det0:1;
|
|
unsigned usb2_bc_dcp_det0:1;
|
|
unsigned usb2_otg_aca_iddig0:1;
|
|
unsigned usb2_otg_vbusdet_en1:1;
|
|
unsigned usb2_bc_dcd_en1:1;
|
|
unsigned usb2_bc_rpd_en1:1;
|
|
unsigned usb2_bc_vdp_en1:1;
|
|
unsigned usb2_bc_chg_det_en1:1;
|
|
unsigned usb2_bc_vdm_en1:1;
|
|
unsigned usb2_bc_dcp_det_en1:1;
|
|
unsigned usb2_otg_aca_en1:1;
|
|
unsigned usb2_bgr_en1:1;
|
|
unsigned usb2_otg_sess_vld1:1;
|
|
unsigned usb2_bc_dcd_det1:1;
|
|
unsigned usb2_bc_chg_det1:2;
|
|
unsigned usb2_bc_dcp_det1:1;
|
|
unsigned usb2_otg_aca_iddig1:3;
|
|
unsigned usb2_bc_rpd_en0:1;
|
|
} b;
|
|
};
|
|
|
|
union bc_r4 {
|
|
/** raw register data */
|
|
u32 d32;
|
|
/** register bits */
|
|
struct {
|
|
unsigned enable_usb2_otg_sess_vld:1;
|
|
unsigned enable_usb2_bc_dcd_det:1;
|
|
unsigned enable_usb2_bc_chg_det:1;
|
|
unsigned enable_usb2_bc_dcp_det:1;
|
|
unsigned enable_usb2_otg_aca_iddig:1;
|
|
unsigned reserved:27;
|
|
} b;
|
|
};
|
|
|
|
union bc_r5 {
|
|
/** raw register data */
|
|
u32 d32;
|
|
/** register bits */
|
|
struct {
|
|
unsigned second_cnt1_parameter:6;
|
|
unsigned second_cnt2_parameter:7;
|
|
unsigned first_cnt_parameter:7;
|
|
unsigned aca_cnt_parameter:6;
|
|
unsigned vbus_cnt_parameter:6;
|
|
} b;
|
|
};
|
|
|
|
union bc_r6 {
|
|
/** raw register data */
|
|
u32 d32;
|
|
/** register bits */
|
|
struct {
|
|
unsigned filter_time_parameter:3;
|
|
unsigned dcd_timer_cnt_parameter:10;
|
|
unsigned reserved:19;
|
|
} b;
|
|
};
|
|
|
|
struct bc_dev {
|
|
struct device *dev;
|
|
void __iomem *regs;
|
|
void __iomem *phy_base;
|
|
struct delayed_work work;
|
|
struct delayed_work vbus_work;
|
|
u32 bc_status;
|
|
};
|
|
|
|
#ifdef CONFIG_AMLOGIC_BC
|
|
void amlogic_bc_init(void);
|
|
#else
|
|
static inline void amlogic_bc_init(void)
|
|
{
|
|
}
|
|
#endif
|