lkml.org 
[lkml]   [2011]   [Jul]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] libertas: prioritize usb8388_v5.bin firmware on OLPC machines
    Note: I've not tested this out yet on an XO-1.  I'll do that after some
    feedback regarding the matching linux-firmware pull request. This
    should address dsd's concern about changing the loading order of the
    firmware.

    On Sun, 31 Jul 2011
    00:03:00 -0700 Andres Salomon <dilinger@queued.net> wrote:

    > Normally, the v9 firmware will be loaded if it's available. However,
    > on OLPC XO-1 machines, the v5 firmware supports extra functionality.
    > This makes the libertas driver attempt to load the v5 firmware first
    > if the machine is an OLPC machine; if that fails (or it's not an OLPC
    > machine), fall back to attempting to load the other firmwares.
    >
    > Signed-off-by: Andres Salomon <dilinger@queued.net>
    > ---
    > drivers/net/wireless/libertas/if_usb.c | 24
    > ++++++++++++++++++++++++ 1 files changed, 24 insertions(+), 0
    > deletions(-)
    >
    > diff --git a/drivers/net/wireless/libertas/if_usb.c
    > b/drivers/net/wireless/libertas/if_usb.c index b5acc39..6a2e70e 100644
    > --- a/drivers/net/wireless/libertas/if_usb.c
    > +++ b/drivers/net/wireless/libertas/if_usb.c
    > @@ -973,6 +973,26 @@ static const struct {
    > { MODEL_8682, "libertas/usb8682.bin" }
    > };
    >
    > +#ifdef CONFIG_OLPC
    > +
    > +/* default OLPC firmware to try; index into fw_table above */
    > +#define OLPC_FW 1
    > +
    > +static int try_olpc_fw(struct if_usb_card *cardp)
    > +{
    > + int retval = -ENOENT;
    > +
    > + /* try the OLPC firmware first; fall back to any others */
    > + if (machine_is_olpc())
    > + retval = request_firmware(&cardp->fw,
    > + fw_table[OLPC_FW].fwname,
    > &cardp->udev->dev);
    > + return retval;
    > +}
    > +
    > +#else
    > +static int try_olpc_fw(struct if_usb_card *cardp) { return -ENOENT; }
    > +#endif /* !CONFIG_OLPC */
    > +
    > static int get_fw(struct if_usb_card *cardp, const char *fwname)
    > {
    > int i;
    > @@ -981,6 +1001,10 @@ static int get_fw(struct if_usb_card *cardp,
    > const char *fwname) if (fwname)
    > return request_firmware(&cardp->fw, fwname,
    > &cardp->udev->dev);
    > + /* Handle OLPC firmware */
    > + if (try_olpc_fw(cardp) == 0)
    > + return 0;
    > +
    > /* Otherwise search for firmware to use */
    > for (i = 0; i < ARRAY_SIZE(fw_table); i++) {
    > if (fw_table[i].model != cardp->model)



    \
     
     \ /
      Last update: 2011-07-31 09:07    [W:0.022 / U:32.684 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site