SAMV7 Ethernet+USB Updates

This commit is contained in:
Gregory Nutt 2015-03-27 10:47:03 -06:00
parent c6bcf3b8a5
commit 08d54685a1
2 changed files with 14 additions and 6 deletions

View file

@ -1041,7 +1041,7 @@ static int sam_buffer_allocate(struct sam_emac_s *priv)
priv->xfrq[0].txdesc = priv->attr->tx0desc;
priv->xfrq[0].ntxbuffers = priv->attr->ntxbuffers;
priv->xfrq[0].rxdesc = priv->attr->rx0desc;
priv->xfrq[0].nrxbuffers = priv->attr->rtxbuffers;
priv->xfrq[0].nrxbuffers = priv->attr->nrxbuffers;
priv->xfrq[0].txbuffer = priv->attr->tx0buffer;
priv->xfrq[0].txbufsize = EMAC_TX_UNITSIZE;
@ -1602,7 +1602,7 @@ static int sam_recvframe(struct sam_emac_s *priv, int qid)
{
if (rxndx == priv->xfrq[qid].rxndx)
{
nllvdbg("ERROR: No EOF (Invalid of buffers too small)\n");
nllvdbg("ERROR: No EOF (Invalid or buffers too small)\n");
do
{
/* Give ownership back to the EMAC */
@ -1624,6 +1624,7 @@ static int sam_recvframe(struct sam_emac_s *priv, int qid)
}
}
while (rxndx != priv->xfrq[qid].rxndx);
return -EIO;
}

View file

@ -4209,7 +4209,7 @@ static int sam_pullup(FAR struct usbdev_s *dev, bool enable)
{
/* DETACH=1: USBHS is detached, UTMI transceiver is suspended. */
regval = sam_getreg(SAM_USBHS_DEVCTRL);
regval = sam_getreg(SAM_USBHS_DEVCTRL);
regval |= USBHS_DEVCTRL_DETACH;
sam_putreg(regval, SAM_USBHS_DEVCTRL);
@ -4533,13 +4533,20 @@ static void sam_hw_shutdown(struct sam_usbdev_s *priv)
sam_putreg(USBHS_DEVINT_ALL, SAM_USBHS_DEVICR);
/* Disconnect the device */
/* DETACH=1: USBHS is detached, UTMI transceiver is suspended. */
sam_pullup(&priv->usbdev, false);
regval = sam_getreg(SAM_USBHS_DEVCTRL);
regval |= USBHS_DEVCTRL_DETACH;
sam_putreg(regval, SAM_USBHS_DEVCTRL);
/* Freeze clocking */
regval = sam_getreg(SAM_USBHS_CTRL);
regval |= USBHS_CTRL_FRZCLK;
sam_putreg(regval, SAM_USBHS_CTRL);
/* Disable USB hardware */
regval = sam_getreg(SAM_USBHS_CTRL);
regval &= ~USBHS_CTRL_USBE;
sam_putreg(regval, SAM_USBHS_CTRL);