7171/* OBINTSTA and OBINTEN */
7272#define USB2_OBINT_SESSVLDCHG BIT(12)
7373#define USB2_OBINT_IDDIGCHG BIT(11)
74- #define USB2_OBINT_BITS (USB2_OBINT_SESSVLDCHG | \
75- USB2_OBINT_IDDIGCHG)
74+ #define USB2_OBINT_IDCHG_EN BIT(0) /* RZ/G2L specific */
7675
7776/* VBCTRL */
7877#define USB2_VBCTRL_OCCLREN BIT(16)
9392#define USB2_ADPCTRL_DRVVBUS BIT(4)
9493
9594/* RZ/G2L specific */
96- #define USB2_OBINT_IDCHG_EN BIT(0)
9795#define USB2_LINECTRL1_USB2_IDMON BIT(0)
9896
9997#define NUM_OF_PHYS 4
@@ -130,7 +128,6 @@ struct rcar_gen3_chan {
130128 struct work_struct work ;
131129 spinlock_t lock ; /* protects access to hardware and driver data structure. */
132130 enum usb_dr_mode dr_mode ;
133- u32 obint_enable_bits ;
134131 bool extcon_host ;
135132 bool is_otg_channel ;
136133 bool uses_otg_pins ;
@@ -141,6 +138,7 @@ struct rcar_gen3_phy_drv_data {
141138 bool no_adp_ctrl ;
142139 bool init_bus ;
143140 bool utmi_ctrl ;
141+ u32 obint_enable_bits ;
144142};
145143
146144/*
@@ -225,9 +223,9 @@ static void rcar_gen3_control_otg_irq(struct rcar_gen3_chan *ch, int enable)
225223 u32 val = readl (usb2_base + USB2_OBINTEN );
226224
227225 if (ch -> uses_otg_pins && enable )
228- val |= ch -> obint_enable_bits ;
226+ val |= ch -> phy_data -> obint_enable_bits ;
229227 else
230- val &= ~ch -> obint_enable_bits ;
228+ val &= ~ch -> phy_data -> obint_enable_bits ;
231229 writel (val , usb2_base + USB2_OBINTEN );
232230}
233231
@@ -430,7 +428,7 @@ static void rcar_gen3_init_otg(struct rcar_gen3_chan *ch)
430428 mdelay (20 );
431429
432430 writel (0xffffffff , usb2_base + USB2_OBINTSTA );
433- writel (ch -> obint_enable_bits , usb2_base + USB2_OBINTEN );
431+ writel (ch -> phy_data -> obint_enable_bits , usb2_base + USB2_OBINTEN );
434432
435433 rcar_gen3_device_recognition (ch );
436434}
@@ -450,9 +448,9 @@ static irqreturn_t rcar_gen3_phy_usb2_irq(int irq, void *_ch)
450448
451449 scoped_guard (spinlock , & ch -> lock ) {
452450 status = readl (usb2_base + USB2_OBINTSTA );
453- if (status & ch -> obint_enable_bits ) {
451+ if (status & ch -> phy_data -> obint_enable_bits ) {
454452 dev_vdbg (dev , "%s: %08x\n" , __func__ , status );
455- writel (ch -> obint_enable_bits , usb2_base + USB2_OBINTSTA );
453+ writel (ch -> phy_data -> obint_enable_bits , usb2_base + USB2_OBINTSTA );
456454 rcar_gen3_device_recognition (ch );
457455 ret = IRQ_HANDLED ;
458456 }
@@ -591,28 +589,35 @@ static const struct phy_ops rz_g1c_phy_usb2_ops = {
591589static const struct rcar_gen3_phy_drv_data rcar_gen3_phy_usb2_data = {
592590 .phy_usb2_ops = & rcar_gen3_phy_usb2_ops ,
593591 .no_adp_ctrl = false,
592+ .obint_enable_bits = USB2_OBINT_SESSVLDCHG |
593+ USB2_OBINT_IDDIGCHG ,
594594};
595595
596596static const struct rcar_gen3_phy_drv_data rz_g1c_phy_usb2_data = {
597597 .phy_usb2_ops = & rz_g1c_phy_usb2_ops ,
598598 .no_adp_ctrl = false,
599+ .obint_enable_bits = USB2_OBINT_SESSVLDCHG |
600+ USB2_OBINT_IDDIGCHG ,
599601};
600602
601603static const struct rcar_gen3_phy_drv_data rz_g2l_phy_usb2_data = {
602604 .phy_usb2_ops = & rcar_gen3_phy_usb2_ops ,
603605 .no_adp_ctrl = true,
606+ .obint_enable_bits = USB2_OBINT_IDCHG_EN ,
604607};
605608
606609static const struct rcar_gen3_phy_drv_data rz_g3s_phy_usb2_data = {
607610 .phy_usb2_ops = & rcar_gen3_phy_usb2_ops ,
608611 .no_adp_ctrl = true,
609612 .init_bus = true,
613+ .obint_enable_bits = USB2_OBINT_IDCHG_EN ,
610614};
611615
612616static const struct rcar_gen3_phy_drv_data rz_v2h_phy_usb2_data = {
613617 .phy_usb2_ops = & rcar_gen3_phy_usb2_ops ,
614618 .no_adp_ctrl = true,
615619 .utmi_ctrl = true,
620+ .obint_enable_bits = USB2_OBINT_IDCHG_EN ,
616621};
617622
618623static const struct of_device_id rcar_gen3_phy_usb2_match_table [] = {
@@ -747,7 +752,6 @@ static int rcar_gen3_phy_usb2_probe(struct platform_device *pdev)
747752 if (IS_ERR (channel -> base ))
748753 return PTR_ERR (channel -> base );
749754
750- channel -> obint_enable_bits = USB2_OBINT_BITS ;
751755 channel -> dr_mode = rcar_gen3_get_dr_mode (dev -> of_node );
752756 if (channel -> dr_mode != USB_DR_MODE_UNKNOWN ) {
753757 channel -> is_otg_channel = true;
@@ -786,9 +790,6 @@ static int rcar_gen3_phy_usb2_probe(struct platform_device *pdev)
786790 goto error ;
787791 }
788792
789- if (channel -> phy_data -> no_adp_ctrl )
790- channel -> obint_enable_bits = USB2_OBINT_IDCHG_EN ;
791-
792793 spin_lock_init (& channel -> lock );
793794 for (i = 0 ; i < NUM_OF_PHYS ; i ++ ) {
794795 channel -> rphys [i ].phy = devm_phy_create (dev , NULL ,
0 commit comments