usbhs_bset(priv, DVSTCTR, (USBRST | UACT), USBRST);
 }
 
+int usbhs_bus_get_speed(struct usbhs_priv *priv)
+{
+       u16 dvstctr = usbhs_read(priv, DVSTCTR);
+
+       switch (RHST & dvstctr) {
+       case RHST_LOW_SPEED:
+               return USB_SPEED_LOW;
+       case RHST_FULL_SPEED:
+               return USB_SPEED_FULL;
+       case RHST_HIGH_SPEED:
+               return USB_SPEED_HIGH;
+       }
+
+       return USB_SPEED_UNKNOWN;
+}
+
 int usbhs_vbus_ctrl(struct usbhs_priv *priv, int enable)
 {
        struct platform_device *pdev = usbhs_priv_to_pdev(priv);
 
  */
 void usbhs_bus_send_sof_enable(struct usbhs_priv *priv);
 void usbhs_bus_send_reset(struct usbhs_priv *priv);
+int usbhs_bus_get_speed(struct usbhs_priv *priv);
 int usbhs_vbus_ctrl(struct usbhs_priv *priv, int enable);
 
 /*
 
 /*
  *             status functions
  */
-int usbhs_status_get_usb_speed(struct usbhs_irq_state *irq_state)
-{
-       switch (irq_state->dvstctr & RHST) {
-       case RHST_LOW_SPEED:
-               return USB_SPEED_LOW;
-       case RHST_FULL_SPEED:
-               return USB_SPEED_FULL;
-       case RHST_HIGH_SPEED:
-               return USB_SPEED_HIGH;
-       }
-
-       return USB_SPEED_UNKNOWN;
-}
-
 int usbhs_status_get_device_state(struct usbhs_irq_state *irq_state)
 {
        int state = irq_state->intsts0 & DVSQ_MASK;
        state->intsts0 = usbhs_read(priv, INTSTS0);
        state->intsts1 = usbhs_read(priv, INTSTS1);
 
-       state->dvstctr = usbhs_read(priv, DVSTCTR);
-
        /* mask */
        if (mod) {
                state->brdysts = usbhs_read(priv, BRDYSTS);
 
        u16 brdysts;
        u16 nrdysts;
        u16 bempsts;
-       u16 dvstctr;
 };
 
 struct usbhs_mod {
 /*
  *             status functions
  */
-int usbhs_status_get_usb_speed(struct usbhs_irq_state *irq_state);
 int usbhs_status_get_device_state(struct usbhs_irq_state *irq_state);
 int usbhs_status_get_ctrl_stage(struct usbhs_irq_state *irq_state);
 
 
        struct usbhsg_gpriv *gpriv = usbhsg_priv_to_gpriv(priv);
        struct device *dev = usbhsg_gpriv_to_dev(gpriv);
 
-       gpriv->gadget.speed = usbhs_status_get_usb_speed(irq_state);
+       gpriv->gadget.speed = usbhs_bus_get_speed(priv);
 
        dev_dbg(dev, "state = %x : speed : %d\n",
                usbhs_status_get_device_state(irq_state),