svn commit: r331306 - head/sys/dev/usb/controller

Kyle Evans kevans at freebsd.org
Wed Mar 21 15:24:47 UTC 2018


On Wed, Mar 21, 2018 at 10:17 AM, Andrew Turner <andrew at freebsd.org> wrote:
> Author: andrew
> Date: Wed Mar 21 15:17:54 2018
> New Revision: 331306
> URL: https://svnweb.freebsd.org/changeset/base/331306
>
> Log:
>   Use a table to find the endpoint configuration
>
>   On the Allwinner SoCs we need to set a custom endpoint configuration. To
>   allow for this use a table to store the configuration so the attachment
>   can override it.
>
>   Reviewed by:  hselasky
>   Sponsored by: DARPA, AFRL
>   Differential Revision:        https://reviews.freebsd.org/D14783
>
> Modified:
>   head/sys/dev/usb/controller/musb_otg.c
>   head/sys/dev/usb/controller/musb_otg.h
>
> Modified: head/sys/dev/usb/controller/musb_otg.c
> ==============================================================================
> --- head/sys/dev/usb/controller/musb_otg.c      Wed Mar 21 15:13:47 2018        (r331305)
> +++ head/sys/dev/usb/controller/musb_otg.c      Wed Mar 21 15:17:54 2018        (r331306)
> @@ -149,6 +149,27 @@ static const struct usb_hw_ep_profile musbotg_ep_profi
>         }
>  };
>
> +static const struct musb_otg_ep_cfg musbotg_ep_default[] = {
> +       {
> +               .ep_end = 1,
> +               .ep_fifosz_shift = 12,
> +               .ep_fifosz_reg = MUSB2_VAL_FIFOSZ_4096 | MUSB2_MASK_FIFODB,
> +       },
> +       {
> +               .ep_end = 7,
> +               .ep_fifosz_shift = 9,
> +               .ep_fifosz_reg = MUSB2_VAL_FIFOSZ_512 | MUSB2_MASK_FIFODB,
> +       },

I'm afraid I'm not familiar with this- why did .ep_fifosz_shift for
this case drop to 9? frx = 10 in the temp < 8 case in the removals of
the following hunks. Mostly curious because the others seemed to stay
the same.

> [..snip..]

> @@ -3193,20 +3220,15 @@ musbotg_init(struct musbotg_softc *sc)
>
>                 if (dynfifo) {
>                         if (frx && (temp <= nrx)) {
> -                               if (temp == 1) {
> -                                       frx = 12;       /* 4K */
> -                                       MUSB2_WRITE_1(sc, MUSB2_REG_RXFIFOSZ,
> -                                           MUSB2_VAL_FIFOSZ_4096 |
> -                                           MUSB2_MASK_FIFODB);
> -                               } else if (temp < 8) {
> -                                       frx = 10;       /* 1K */
> -                                       MUSB2_WRITE_1(sc, MUSB2_REG_RXFIFOSZ,
> -                                           MUSB2_VAL_FIFOSZ_512 |
> -                                           MUSB2_MASK_FIFODB);
> -                               } else {
> -                                       frx = 7;        /* 128 bytes */
> -                                       MUSB2_WRITE_1(sc, MUSB2_REG_RXFIFOSZ,
> -                                           MUSB2_VAL_FIFOSZ_128);
> +                               for (i = 0; sc->sc_ep_cfg[i].ep_end >= 0; i++) {
> +                                       cfg = &sc->sc_ep_cfg[i];
> +                                       if (temp <= cfg->ep_end) {
> +                                               frx = cfg->ep_fifosz_shift;
> +                                               MUSB2_WRITE_1(sc,
> +                                                   MUSB2_REG_RXFIFOSZ,
> +                                                   cfg->ep_fifosz_reg);
> +                                               break;
> +                                       }
>                                 }
>
>                                 MUSB2_WRITE_2(sc, MUSB2_REG_RXFIFOADD,
> @@ -3215,20 +3237,15 @@ musbotg_init(struct musbotg_softc *sc)
>                                 offset += (1 << frx);
>                         }
>                         if (ftx && (temp <= ntx)) {
> -                               if (temp == 1) {
> -                                       ftx = 12;       /* 4K */
> -                                       MUSB2_WRITE_1(sc, MUSB2_REG_TXFIFOSZ,
> -                                           MUSB2_VAL_FIFOSZ_4096 |
> -                                           MUSB2_MASK_FIFODB);
> -                               } else if (temp < 8) {
> -                                       ftx = 10;       /* 1K */
> -                                       MUSB2_WRITE_1(sc, MUSB2_REG_TXFIFOSZ,
> -                                           MUSB2_VAL_FIFOSZ_512 |
> -                                           MUSB2_MASK_FIFODB);
> -                               } else {
> -                                       ftx = 7;        /* 128 bytes */
> -                                       MUSB2_WRITE_1(sc, MUSB2_REG_TXFIFOSZ,
> -                                           MUSB2_VAL_FIFOSZ_128);
> +                               for (i = 0; sc->sc_ep_cfg[i].ep_end >= 0; i++) {
> +                                       cfg = &sc->sc_ep_cfg[i];
> +                                       if (temp <= cfg->ep_end) {
> +                                               ftx = cfg->ep_fifosz_shift;
> +                                               MUSB2_WRITE_1(sc,
> +                                                   MUSB2_REG_TXFIFOSZ,
> +                                                   cfg->ep_fifosz_reg);
> +                                               break;
> +                                       }
>                                 }
>
>                                 MUSB2_WRITE_2(sc, MUSB2_REG_TXFIFOADD,
>
> Modified: head/sys/dev/usb/controller/musb_otg.h
> ==============================================================================
> --- head/sys/dev/usb/controller/musb_otg.h      Wed Mar 21 15:13:47 2018        (r331305)
> +++ head/sys/dev/usb/controller/musb_otg.h      Wed Mar 21 15:17:54 2018        (r331306)
> @@ -387,6 +387,12 @@ struct musbotg_flags {
>         uint8_t d_pulled_up:1;
>  };
>
> +struct musb_otg_ep_cfg {
> +       int ep_end;
> +       int ep_fifosz_shift;
> +       uint8_t ep_fifosz_reg;
> +};
> +
>  struct musbotg_softc {
>         struct usb_bus sc_bus;
>         union musbotg_hub_temp sc_hub_temp;
> @@ -423,6 +429,7 @@ struct musbotg_softc {
>         uint8_t sc_id;
>         uint8_t sc_mode;
>         void *sc_platform_data;
> +       const struct musb_otg_ep_cfg *sc_ep_cfg;
>  };
>
>  /* prototypes */
>


More information about the svn-src-all mailing list