On 27/02/2014 16:42, Alexandre Belloni : > If no endpoints are present in the device tree, the kernel will cras hwith the s/cras hwith/crash with/ > following error: > > Unable to handle kernel paging request at virtual address 00101008 > [...] > [<c0222ff4>] (composite_dev_prepare) from [<c022326c>] (composite_bind+0x5c/0x190) > [<c022326c>] (composite_bind) from [<c021ff8c>] (udc_bind_to_driver+0x48/0xf0) > [<c021ff8c>] (udc_bind_to_driver) from [<c02208e0>] (usb_gadget_probe_driver+0x7c/0xa0) > [<c02208e0>] (usb_gadget_probe_driver) from [<c0008970>] (do_one_initcall+0x94/0x140) > [<c0008970>] (do_one_initcall) from [<c04b4b50>] (kernel_init_freeable+0xec/0x1b4) > [<c04b4b50>] (kernel_init_freeable) from [<c0376cc4>] (kernel_init+0x8/0xe4) > [<c0376cc4>] (kernel_init) from [<c0009590>] (ret_from_fork+0x14/0x24) > Code: e5950014 e1a04001 e5902008 e3a010d0 (e5922008) > ---[ end trace 35c74bdd89b373d0 ]--- > Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b > > This checks for that case and returns an error, not allowing the driver to be > loaded with no endpoints. > > Signed-off-by: Alexandre Belloni <alexandre.belloni@xxxxxxxxxxxxxxxxxx> > --- > drivers/usb/gadget/atmel_usba_udc.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/drivers/usb/gadget/atmel_usba_udc.c b/drivers/usb/gadget/atmel_usba_udc.c > index 52771d4c44bc..e3e0c8ff242e 100644 > --- a/drivers/usb/gadget/atmel_usba_udc.c > +++ b/drivers/usb/gadget/atmel_usba_udc.c > @@ -1914,6 +1914,12 @@ static struct usba_ep * atmel_udc_of_init(struct platform_device *pdev, > i++; > } > > + if (i == 0) { > + dev_err(&pdev->dev, "of_probe: no endpoint specified\n"); > + ret = -EINVAL; > + goto err; > + } > + It is better for debugging when creating a DT for a new SoC. So, okay. Acked-by: Nicolas Ferre <nicolas.ferre@xxxxxxxxx> > return eps; > err: > return ERR_PTR(ret); > -- Nicolas Ferre -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html