From: Daniel Mack <daniel@zonque.org>
To: Peter Chen <peter.chen@freescale.com>, balbi@ti.com
Cc: linux-usb@vger.kernel.org, andrzej.p@samsung.com, tiwai@suse.de,
stable@vger.kernel.org, Alan Stern <stern@rowland.harvard.edu>
Subject: Re: [PATCH v4 1/1] usb: gadget: f_uac2: finalize wMaxPacketSize according to bandwidth
Date: Tue, 28 Jul 2015 10:13:48 +0200 [thread overview]
Message-ID: <55B739BC.7010700@zonque.org> (raw)
In-Reply-To: <1438047504-19786-1-git-send-email-peter.chen@freescale.com>
On 07/28/2015 03:38 AM, Peter Chen wrote:
> diff --git a/drivers/usb/gadget/function/f_uac2.c b/drivers/usb/gadget/function/f_uac2.c
> index 5318615..6a8e0d2 100644
> --- a/drivers/usb/gadget/function/f_uac2.c
> +++ b/drivers/usb/gadget/function/f_uac2.c
> @@ -975,6 +975,31 @@ free_ep(struct uac2_rtd_params *prm, struct usb_ep *ep)
> "%s:%d Error!\n", __func__, __LINE__);
> }
>
> +static void set_ep_max_packet_size (struct f_uac2_opts *uac2_opts,
> + struct usb_endpoint_descriptor *ep_desc, unsigned int factor)
scripts/checkpatch.pl will complain about a stray space before '(' and
wrong indentation. Also, uac2_opts can be const.
> +{
> + int chmask;
> + int srate;
> + int ssize;
These can be put in one line.
> + u16 max_packet_size;
> +
> + if (ep_desc == &fs_epin_desc || ep_desc == &hs_epin_desc) {
> + chmask = uac2_opts->p_chmask;
> + srate = uac2_opts->p_srate;
> + ssize = uac2_opts->p_ssize;
> + } else {
> + WARN_ON (ep_desc != &fs_epout_desc && ep_desc != &hs_epout_desc);
I would rather pass a boolean flag called 'is_playback' than checking
the input parameter like this. But I forgot this detail in my proposal,
I admit.
Apart from that, I like the patch.
Thanks,
Daniel
> + chmask = uac2_opts->c_chmask;
> + srate = uac2_opts->c_srate;
> + ssize = uac2_opts->c_ssize;
> + }
> +
> + max_packet_size = num_channels(chmask) * ssize *
> + DIV_ROUND_UP(srate, factor / (1 << (ep_desc->bInterval - 1)));
> + ep_desc->wMaxPacketSize = min(cpu_to_le16(max_packet_size),
> + ep_desc->wMaxPacketSize);
> +}
> +
> static int
> afunc_bind(struct usb_configuration *cfg, struct usb_function *fn)
> {
> @@ -1070,10 +1095,14 @@ afunc_bind(struct usb_configuration *cfg, struct usb_function *fn)
> uac2->p_prm.uac2 = uac2;
> uac2->c_prm.uac2 = uac2;
>
> + /* Calculate wMaxPacketSize according to audio bandwidth */
> + set_ep_max_packet_size(uac2_opts, &fs_epin_desc, 1000);
> + set_ep_max_packet_size(uac2_opts, &fs_epout_desc, 1000);
> + set_ep_max_packet_size(uac2_opts, &hs_epin_desc, 8000);
> + set_ep_max_packet_size(uac2_opts, &hs_epout_desc, 8000);
> +
> hs_epout_desc.bEndpointAddress = fs_epout_desc.bEndpointAddress;
> - hs_epout_desc.wMaxPacketSize = fs_epout_desc.wMaxPacketSize;
> hs_epin_desc.bEndpointAddress = fs_epin_desc.bEndpointAddress;
> - hs_epin_desc.wMaxPacketSize = fs_epin_desc.wMaxPacketSize;
>
> ret = usb_assign_descriptors(fn, fs_audio_desc, hs_audio_desc, NULL);
> if (ret)
>
next prev parent reply other threads:[~2015-07-28 8:13 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-28 1:38 [PATCH v4 1/1] usb: gadget: f_uac2: finalize wMaxPacketSize according to bandwidth Peter Chen
2015-07-28 8:13 ` Daniel Mack [this message]
2015-07-28 8:20 ` Peter Chen
2015-07-28 9:30 ` Daniel Mack
2015-07-28 9:37 ` Daniel Mack
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=55B739BC.7010700@zonque.org \
--to=daniel@zonque.org \
--cc=andrzej.p@samsung.com \
--cc=balbi@ti.com \
--cc=linux-usb@vger.kernel.org \
--cc=peter.chen@freescale.com \
--cc=stable@vger.kernel.org \
--cc=stern@rowland.harvard.edu \
--cc=tiwai@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.