* [GIT PULL 00/74] perf/core improvements and fixes
From: Arnaldo Carvalho de Melo @ 2013-01-24 20:07 UTC (permalink / raw)
To: Ingo Molnar
Cc: Feng Tang, Srikar Dronamraju, Peter Zijlstra, Frederic Weisbecker,
Al Cooper, H.C. Lee, linuxppc-dev, Jon Stanley, Andi Kleen,
Paul Mackerras, Frederik Deweerdt, Masami Hiramatsu, Jiri Olsa,
Arnaldo Carvalho de Melo, Namhyung Kim, Ulrich Drepper,
Hitoshi Mitake, Joshua Zhu, Xiao Guangrong, Akihiro Nagai,
Arnaldo Carvalho de Melo, Sasha Levin, Sukadev Bhattiprolu,
Stefan Beller, Thomas Jarosch, Corey Ashford, Namhyung Kim,
Anton Blanchard, Steven Rostedt, Arnaldo Carvalho de Melo,
Stephane Eranian, Namhyung Kim, Tom Zanussi, Hitoshi Mitake,
Vince Weaver, Mike Galbraith, linux-kernel, Pekka Enberg,
David Ahern
Hi Ingo,
Please consider pulling,
- Arnaldo
The following changes since commit 203e04c16330c880538588e932743f404ee4fd66:
Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2013-01-24 16:30:45 +0100)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux tags/perf-core-for-mingo
for you to fetch changes up to 2ae828786c65ab8f587647bd0f22f8fe00f1f238:
perf test: Allow skipping tests (2013-01-24 16:40:53 -0300)
----------------------------------------------------------------
perf/core improvements and fixes
. Allow skipping problematic entries in 'perf test'.
. Fix some namespace problems in the event parsing routines.
. Add 'perf test' entry to make sure the python binding doesn't have
linking problems.
. Adjust 'perf test' attr tests verbosity levels.
. Make tools/perf build with GNU make v3.80, fix from Al Cooper.
. Do missing feature fallbacks in just one place, removing duplicated
code in multiple tools.
. Fix some memory leaks, from David Ahern.
. Fix segfault when drawing out-of-bounds jumps, from Frederik Deweerdt.
. Allow of casting an array of char to string in 'perf probe', from
Hyeoncheol Lee.
. Add support for wildcard in tracepoint system name, from Jiri Olsa.
. Update FSF postal address to be URL's, from Jon Stanley.
. Add anonymous huge page recognition, from Joshua Zhu.
. Remove some needless feature test checks, from Namhyung Kim.
. Multiple improvements to the sort routines, from Namhyung Kim.
. Fix warning on '>=' operator in libtraceevent, from Namhyung Kim.
. Use ARRAY_SIZE instead of reinventing it in 'perf script' and 'perf kmem',
from Sasha Levin.
. Remove some redundant checks, from Sasha Levin.
. Test correct variable after allocation in libtraceevent, fix from Sasha Levin.
. Mark branch_info maps as referenced, fix from Stephane Eranian.
. Fix PMU format parsing test failure, from Sukadev Bhattiprolu.
. Fix possible (unlikely) buffer overflow, from Thomas Jarosch.
. Multiple 'perf script' fixes, from Tom Zanussi.
. Add missing field in PERF_RECORD_SAMPLE documentation, from Vince Weaver.
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
----------------------------------------------------------------
Al Cooper (1):
perf tools: Fix GNU make v3.80 compatibility issue
Arnaldo Carvalho de Melo (24):
perf test: Remove leftover temp file left by one of the attr tests
perf tests: Adjust some message log levels to help diagnosing problems in attr tests
perf evsel: Do missing feature fallbacks in just one place
perf evsel: Introduce event fallback method
perf evsel: Introduce perf_evsel__open_strerror method
perf test: Check for linking problems in the python binding
perf python: Fix breakage introduced by the test_attr infrastructure
perf record: Don't pass host machine to guest synthesizer
perf hists: Rename hists__fprintf_nr_events to events_stats__fprintf
perf session: There is no need for a per session hists instance
perf machine: Introduce struct machines
perf machine: Simplify accessing the host machine
perf kvm: Initialize file_name var to fix segfault
perf tests: Don't fail if a matching vmlinux isn't found, skip that test
perf tools: Fix usage of __ in parse_events_term struct
perf pmu: Fix usage of __ in struct names
perf ui browsers: Fix usage of __ in struct names
perf tools: Fix usage of __ in event parsing struct names
perf tests: Use ARRAY_SIZE() were applicable
perf pmu: Privatize perf_pmu_{format,alias} structs
perf tools: Remove some needless die() calls from the main routine
perf tools: Allow passing NULL to intlist__find
perf tools: Allow passing a list to intlist__new
perf test: Allow skipping tests
David Ahern (3):
perf symbols: Move name malloc to when needed in dso__load
perf symbols: Mark vmlinux filename as allocated
perf tools: Move get_term_dimensions from top to util.c
Frederik Deweerdt (1):
perf annotate browser: Fix segfault when drawing out-of-bounds jumps
Hyeoncheol Lee (1):
perf probe: Allow of casting an array of char to string
Jiri Olsa (6):
perf tools: Add missing closedir in multi tracepoint processing
perf tools: Add support for wildcard in tracepoint system name
perf tests: Add event parsing test for '*:*' tracepoints
perf tests: Fix PYTHONPATH for python-use test tracepoints
perf tests: Add return states enum for tests
perf tools: Remove unused 'unset' parameter from parse_events
Jon Stanley (2):
tools lib traceevent: Update FSF postal address to be URL's.
tools lib traceevent: Add copyright header
Joshua Zhu (1):
perf tools: Add anonymous huge page recognition
Namhyung Kim (22):
perf hists: Exchange order of comparing items when collapsing hists
perf hists: Link hist entries before inserting to an output tree
perf diff: Use internal rb tree for compute resort
perf test: Add a test case for hists__{match,link}
perf tests: Check python path on attr and binding test
perf header: Ensure read/write finished successfully
perf ui/gtk: Factor out common browser routines
perf ui/gtk: Setup browser window early
perf symbols: Include elf.h header regardless LIBELF_SUPPORT
perf bench: Flush stdout before starting bench suite
perf sort: Move misplaced sort entry functions
perf sort: Get rid of unnecessary __maybe_unused
perf sort: Fix --sort pid output
perf sort: Align cpu column to right
perf sort: Calculate parent column width too
perf sort: Clean up sort__first_dimension setting
perf sort: Separate out branch stack specific sort keys
perf report: Update documentation for sort keys
tools lib traceevent: Fix warning on '>=' operator
perf tools: Get rid of unused include of config.mak
perf tools: Do not include PERF-VERSION-FILE to Makefile
perf tools: Move ltrim() to util/string.c
Sasha Levin (5):
perf tools: remove redundant checks from _sort__sym_cmp
perf kmem: use ARRAY_SIZE instead of reinventing it
perf script: use ARRAY_SIZE instead of reinventing it
uprobes: remove redundant check
tools lib traceevent: test correct variable after allocation
Stephane Eranian (1):
perf tools: Mark branch_info maps as referenced
Sukadev Bhattiprolu (1):
perf tools: Fix PMU format parsing test failure
Thomas Jarosch (1):
perf tools: Fix possible (unlikely) buffer overflow
Tom Zanussi (4):
perf tools: Reinstate 'signed' field flag for tracepoints
perf script: Don't display trace info when invoking scripts
perf script: hook up perf_scripting_context->pevent
perf script: Remove workqueue-stats script
Vince Weaver (1):
perf: Missing field in PERF_RECORD_SAMPLE documentation
include/uapi/linux/perf_event.h | 3 +-
kernel/events/uprobes.c | 3 +-
tools/lib/traceevent/event-parse.c | 10 +-
tools/lib/traceevent/event-parse.h | 3 +-
tools/lib/traceevent/event-utils.h | 3 +-
tools/lib/traceevent/parse-filter.c | 3 +-
tools/lib/traceevent/parse-utils.c | 19 +
tools/lib/traceevent/trace-seq.c | 3 +-
tools/perf/Documentation/perf-report.txt | 38 +-
tools/perf/Documentation/perf-script-python.txt | 2 -
tools/perf/Documentation/perf-test.txt | 4 +
tools/perf/Makefile | 17 +-
tools/perf/builtin-bench.c | 2 +
tools/perf/builtin-diff.c | 92 ++--
tools/perf/builtin-kmem.c | 10 +-
tools/perf/builtin-kvm.c | 3 +-
tools/perf/builtin-record.c | 127 +-----
tools/perf/builtin-report.c | 6 +-
tools/perf/builtin-sched.c | 6 +-
tools/perf/builtin-script.c | 17 +-
tools/perf/builtin-stat.c | 46 +-
tools/perf/builtin-top.c | 106 +----
tools/perf/config/utilities.mak | 6 +-
tools/perf/perf.c | 32 +-
tools/perf/perf.h | 6 -
tools/perf/scripts/perl/bin/workqueue-stats-record | 2 -
tools/perf/scripts/perl/bin/workqueue-stats-report | 3 -
tools/perf/scripts/perl/workqueue-stats.pl | 129 ------
tools/perf/tests/attr.c | 4 +-
tools/perf/tests/attr.py | 27 +-
tools/perf/tests/attr/test-record-group1 | 2 +-
tools/perf/tests/builtin-test.c | 40 +-
tools/perf/tests/evsel-roundtrip-name.c | 4 +-
tools/perf/tests/hists_link.c | 499 +++++++++++++++++++++
tools/perf/tests/parse-events.c | 98 +++-
tools/perf/tests/pmu.c | 11 +-
tools/perf/tests/python-use.c | 23 +
tools/perf/tests/tests.h | 8 +
tools/perf/tests/vmlinux-kallsyms.c | 3 +-
tools/perf/ui/browser.c | 4 +-
tools/perf/ui/browsers/annotate.c | 33 +-
tools/perf/ui/gtk/browser.c | 227 +---------
tools/perf/ui/gtk/gtk.h | 9 +-
tools/perf/ui/gtk/hists.c | 226 ++++++++++
tools/perf/ui/stdio/hist.c | 6 +-
tools/perf/ui/util.c | 11 -
tools/perf/util/PERF-VERSION-GEN | 4 +-
tools/perf/util/debug.h | 1 -
tools/perf/util/evsel.c | 108 ++++-
tools/perf/util/evsel.h | 6 +
tools/perf/util/header.c | 75 ++--
tools/perf/util/hist.c | 79 +++-
tools/perf/util/hist.h | 4 +-
tools/perf/util/include/linux/bitops.h | 1 +
tools/perf/util/intlist.c | 36 +-
tools/perf/util/intlist.h | 2 +-
tools/perf/util/machine.c | 64 ++-
tools/perf/util/machine.h | 32 +-
tools/perf/util/map.c | 3 +-
tools/perf/util/parse-events.c | 87 +++-
tools/perf/util/parse-events.h | 21 +-
tools/perf/util/parse-events.y | 64 +--
tools/perf/util/pmu.c | 46 +-
tools/perf/util/pmu.h | 15 +-
tools/perf/util/probe-finder.c | 10 +-
tools/perf/util/python.c | 9 +
.../perf/util/scripting-engines/trace-event-perl.c | 1 +
.../util/scripting-engines/trace-event-python.c | 1 +
tools/perf/util/session.c | 75 ++--
tools/perf/util/session.h | 30 +-
tools/perf/util/sort.c | 230 +++++-----
tools/perf/util/sort.h | 8 +-
tools/perf/util/string.c | 18 +
tools/perf/util/symbol-elf.c | 3 -
tools/perf/util/symbol-minimal.c | 1 -
tools/perf/util/symbol.c | 14 +-
tools/perf/util/symbol.h | 2 +-
tools/perf/util/sysfs.c | 2 +-
tools/perf/util/top.h | 2 -
tools/perf/util/util.c | 24 +
tools/perf/util/util.h | 4 +
81 files changed, 1816 insertions(+), 1202 deletions(-)
delete mode 100644 tools/perf/scripts/perl/bin/workqueue-stats-record
delete mode 100644 tools/perf/scripts/perl/bin/workqueue-stats-report
delete mode 100644 tools/perf/scripts/perl/workqueue-stats.pl
create mode 100644 tools/perf/tests/hists_link.c
create mode 100644 tools/perf/tests/python-use.c
create mode 100644 tools/perf/ui/gtk/hists.c
^ permalink raw reply
* [PATCH 59/74] perf tools: Fix PMU format parsing test failure
From: Arnaldo Carvalho de Melo @ 2013-01-24 20:08 UTC (permalink / raw)
To: Ingo Molnar
Cc: Anton Blanchard, linux-kernel, Arnaldo Carvalho de Melo,
linuxppc-dev, Paul Mackerras, Sukadev Bhattiprolu, Jiri Olsa
In-Reply-To: <1359058103-31645-1-git-send-email-acme@infradead.org>
From: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
On POWER, the 'perf format parsing' test always fails.
Looks like it is because memset() is being passed number of longs rather
than number of bytes. It is interesting that the test always passes on
my x86 box.
With this patch, the test passes on POWER and continues to pass on x86.
Signed-off-by: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
Acked-by: Jiri Olsa <jolsa@redhat.com>
Cc: Anton Blanchard <anton@au1.ibm.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: linuxppc-dev@ozlabs.org
Link: http://lkml.kernel.org/r/20130117172814.GA18882@us.ibm.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/util/include/linux/bitops.h | 1 +
tools/perf/util/pmu.c | 2 +-
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/tools/perf/util/include/linux/bitops.h b/tools/perf/util/include/linux/bitops.h
index a55d8cf..45cf10a 100644
--- a/tools/perf/util/include/linux/bitops.h
+++ b/tools/perf/util/include/linux/bitops.h
@@ -14,6 +14,7 @@
#define BITS_TO_LONGS(nr) DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(long))
#define BITS_TO_U64(nr) DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(u64))
#define BITS_TO_U32(nr) DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(u32))
+#define BITS_TO_BYTES(nr) DIV_ROUND_UP(nr, BITS_PER_BYTE)
#define for_each_set_bit(bit, addr, size) \
for ((bit) = find_first_bit((addr), (size)); \
diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
index 9bdc60c..b93ff14 100644
--- a/tools/perf/util/pmu.c
+++ b/tools/perf/util/pmu.c
@@ -548,7 +548,7 @@ void perf_pmu__set_format(unsigned long *bits, long from, long to)
if (!to)
to = from;
- memset(bits, 0, BITS_TO_LONGS(PERF_PMU_FORMAT_BITS));
+ memset(bits, 0, BITS_TO_BYTES(PERF_PMU_FORMAT_BITS));
for (b = from; b <= to; b++)
set_bit(b, bits);
}
--
1.8.1.1.361.gec3ae6e
^ permalink raw reply related
* Re: [RFC/PATCH 32/32] usb: gadget: drop now unnecessary flag
From: Felipe Balbi @ 2013-01-24 19:09 UTC (permalink / raw)
To: Tomasz Figa
Cc: kgene.kim, eric.y.miao, kuninori.morimoto.gx, alexander.shishkin,
gregkh, yoshihiro.shimoda.uh, Linux USB Mailing List,
nicolas.ferre, linux-geode, Felipe Balbi, Linux OMAP Mailing List,
linux-samsung-soc, haojian.zhuang, ben-linux, dahlmann.thomas,
linux, linuxppc-dev, linux-arm-kernel
In-Reply-To: <2268214.yJrDJgELNj@flatron>
[-- Attachment #1: Type: text/plain, Size: 3177 bytes --]
On Thu, Jan 24, 2013 at 07:52:52PM +0100, Tomasz Figa wrote:
> Hi Felipe,
>
> On Thursday 24 of January 2013 17:46:10 Felipe Balbi wrote:
> > We don't need the ->register_my_device flag
> > anymore because all UDC drivers have been
> > properly converted.
> >
> > Let's remove every history of it.
> >
> > Signed-off-by: Felipe Balbi <balbi@ti.com>
> > ---
> > drivers/usb/chipidea/udc.c | 1 -
> > drivers/usb/dwc3/gadget.c | 1 -
> > drivers/usb/gadget/amd5536udc.c | 1 -
> > drivers/usb/gadget/at91_udc.c | 1 -
> > drivers/usb/gadget/atmel_usba_udc.c | 1 -
> > drivers/usb/gadget/bcm63xx_udc.c | 1 -
> > drivers/usb/gadget/dummy_hcd.c | 1 -
> > drivers/usb/gadget/fsl_qe_udc.c | 1 -
> > drivers/usb/gadget/fsl_udc_core.c | 1 -
> > drivers/usb/gadget/fusb300_udc.c | 1 -
> > drivers/usb/gadget/goku_udc.c | 1 -
> > drivers/usb/gadget/imx_udc.c | 1 -
> > drivers/usb/gadget/lpc32xx_udc.c | 1 -
> > drivers/usb/gadget/m66592-udc.c | 1 -
> > drivers/usb/gadget/mv_u3d_core.c | 1 -
> > drivers/usb/gadget/mv_udc_core.c | 1 -
> > drivers/usb/gadget/net2272.c | 1 -
> > drivers/usb/gadget/net2280.c | 1 -
> > drivers/usb/gadget/omap_udc.c | 1 -
> > drivers/usb/gadget/pch_udc.c | 1 -
> > drivers/usb/gadget/pxa25x_udc.c | 1 -
> > drivers/usb/gadget/pxa27x_udc.c | 1 -
> > drivers/usb/gadget/r8a66597-udc.c | 1 -
> > drivers/usb/gadget/s3c-hsotg.c | 1 -
> > drivers/usb/gadget/s3c-hsudc.c | 1 -
> > drivers/usb/gadget/s3c2410_udc.c | 1 -
> > drivers/usb/gadget/udc-core.c | 3 ---
> > drivers/usb/musb/musb_gadget.c | 1 -
> > drivers/usb/renesas_usbhs/mod_gadget.c | 1 -
> > include/linux/usb/gadget.h | 4 ----
> > 30 files changed, 35 deletions(-)
> >
> [snip]
> > diff --git a/drivers/usb/gadget/udc-core.c
> > b/drivers/usb/gadget/udc-core.c index 9195054..4ee0efc 100644
> > --- a/drivers/usb/gadget/udc-core.c
> > +++ b/drivers/usb/gadget/udc-core.c
> > @@ -173,7 +173,6 @@ int usb_add_gadget_udc(struct device *parent, struct
> > usb_gadget *gadget) if (!udc)
> > goto err1;
> >
> > - if (gadget->register_my_device) {
> > dev_set_name(&gadget->dev, "gadget");
> >
> > ret = device_register(&gadget->dev);
> > @@ -211,7 +210,6 @@ err3:
> > put_device(&udc->dev);
> >
> > err2:
> > - if (gadget->register_my_device)
> > put_device(&gadget->dev);
> > err1:
> > return ret;
> > @@ -267,7 +265,6 @@ found:
> > kobject_uevent(&udc->dev.kobj, KOBJ_REMOVE);
> > device_unregister(&udc->dev);
> >
> > - if (gadget->register_my_device)
> > device_unregister(&gadget->dev);
>
> Correct me if I am wrong, but doesn't this patch leave us with incorrect
> indentation?
right, I fixed it up on my branch, see [1]. That was me trusting my poor
sed skills and not verifying the result ;-)
[1] http://git.kernel.org/?p=linux/kernel/git/balbi/usb.git;a=commitdiff;h=d0bdf2970dd68677c65671be9bd56759593cfaf1
--
balbi
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]
^ permalink raw reply
* Re: [RFC/PATCH 24/32] usb: gadget: s3c-hsotg: let udc-core manage gadget->dev
From: Tomasz Figa @ 2013-01-24 19:00 UTC (permalink / raw)
To: Felipe Balbi
Cc: kgene.kim, eric.y.miao, kuninori.morimoto.gx, alexander.shishkin,
gregkh, yoshihiro.shimoda.uh, Linux USB Mailing List,
nicolas.ferre, linux-geode, haojian.zhuang,
Linux OMAP Mailing List, linux-samsung-soc, ben-linux,
dahlmann.thomas, linux, linuxppc-dev, linux-arm-kernel
In-Reply-To: <1359042370-4358-25-git-send-email-balbi@ti.com>
Hi Felipe,
On Thursday 24 of January 2013 17:46:02 Felipe Balbi wrote:
> By simply setting a flag, we can drop some
> boilerplate code.
>
> Signed-off-by: Felipe Balbi <balbi@ti.com>
> ---
> drivers/usb/gadget/s3c-hsotg.c | 14 +-------------
> 1 file changed, 1 insertion(+), 13 deletions(-)
>
> diff --git a/drivers/usb/gadget/s3c-hsotg.c
> b/drivers/usb/gadget/s3c-hsotg.c index 833d85b..bd8292d 100644
> --- a/drivers/usb/gadget/s3c-hsotg.c
> +++ b/drivers/usb/gadget/s3c-hsotg.c
> @@ -3552,17 +3552,13 @@ static int s3c_hsotg_probe(struct
> platform_device *pdev)
>
> dev_info(dev, "regs %p, irq %d\n", hsotg->regs, hsotg->irq);
>
> - device_initialize(&hsotg->gadget.dev);
> -
> - dev_set_name(&hsotg->gadget.dev, "gadget");
> -
> hsotg->gadget.max_speed = USB_SPEED_HIGH;
> hsotg->gadget.ops = &s3c_hsotg_gadget_ops;
> hsotg->gadget.name = dev_name(dev);
> -
> hsotg->gadget.dev.parent = dev;
> hsotg->gadget.dev.dma_mask = dev->dma_mask;
> hsotg->gadget.dev.release = s3c_hsotg_release;
> + hsotg->gadget.register_my_device = true;
>
> /* reset the system */
>
> @@ -3643,12 +3639,6 @@ static int s3c_hsotg_probe(struct platform_device
> *pdev)
>
> s3c_hsotg_phy_disable(hsotg);
>
> - ret = device_add(&hsotg->gadget.dev);
> - if (ret) {
> - put_device(&hsotg->gadget.dev);
> - goto err_ep_mem;
> - }
> -
> ret = usb_add_gadget_udc(&pdev->dev, &hsotg->gadget);
> if (ret)
> goto err_ep_mem;
> @@ -3687,10 +3677,8 @@ static int s3c_hsotg_remove(struct
> platform_device *pdev) }
>
> s3c_hsotg_phy_disable(hsotg);
> -
> clk_disable_unprepare(hsotg->clk);
>
> - device_unregister(&hsotg->gadget.dev);
> return 0;
> }
Looks good.
Reviewed-by: Tomasz Figa <tomasz.figa@gmail.com>
Best regards,
Tomasz Figa
^ permalink raw reply
* Re: [RFC/PATCH 01/32] usb: gadget: udc-core: allow udc class register gadget device
From: Tomasz Figa @ 2013-01-24 18:57 UTC (permalink / raw)
To: Felipe Balbi
Cc: kgene.kim, eric.y.miao, kuninori.morimoto.gx, alexander.shishkin,
gregkh, yoshihiro.shimoda.uh, Linux USB Mailing List,
nicolas.ferre, linux-geode, haojian.zhuang,
Linux OMAP Mailing List, linux-samsung-soc, ben-linux,
dahlmann.thomas, linux, linuxppc-dev, linux-arm-kernel
In-Reply-To: <1359042370-4358-2-git-send-email-balbi@ti.com>
Hi Felipe,
On Thursday 24 of January 2013 17:45:39 Felipe Balbi wrote:
> Currently all UDC drivers are calling
> device_register() before calling
> usb_add_gadget_udc(). In order to avoid
> code duplication, we can allow udc-core.c
> register that device.
>
> However that would become a really large patch,
> so to cope with the meanwhile and allow us
> to write bite-sized patches, we're adding
> a flag which will be set by UDC driver once
> it removes the code for registering the
> gadget device.
>
> Once all are converted, the new flag will
> be removed.
>
> Signed-off-by: Felipe Balbi <balbi@ti.com>
> ---
> drivers/usb/gadget/udc-core.c | 23 +++++++++++++++++++----
> include/linux/usb/gadget.h | 4 ++++
> 2 files changed, 23 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/usb/gadget/udc-core.c
> b/drivers/usb/gadget/udc-core.c index 2a9cd36..9195054 100644
> --- a/drivers/usb/gadget/udc-core.c
> +++ b/drivers/usb/gadget/udc-core.c
> @@ -173,6 +173,14 @@ int usb_add_gadget_udc(struct device *parent,
> struct usb_gadget *gadget) if (!udc)
> goto err1;
>
> + if (gadget->register_my_device) {
> + dev_set_name(&gadget->dev, "gadget");
> +
> + ret = device_register(&gadget->dev);
> + if (ret)
> + goto err2;
> + }
> +
> device_initialize(&udc->dev);
> udc->dev.release = usb_udc_release;
> udc->dev.class = udc_class;
> @@ -180,7 +188,7 @@ int usb_add_gadget_udc(struct device *parent, struct
> usb_gadget *gadget) udc->dev.parent = parent;
> ret = dev_set_name(&udc->dev, "%s", kobject_name(&parent->kobj));
> if (ret)
> - goto err2;
> + goto err3;
Just a nitpick: If you are at changing labels of error path, wouldn't it
be better to give them some meaningful names? Like err_del_unlock,
err_put_udc, err_put_gadget, err_ret.
Otherwise looks good. Nice idea.
Reviewed-by: Tomasz Figa <tomasz.figa@gmail.com>
Best regards,
Tomasz Figa
> udc->gadget = gadget;
>
> @@ -189,18 +197,22 @@ int usb_add_gadget_udc(struct device *parent,
> struct usb_gadget *gadget)
>
> ret = device_add(&udc->dev);
> if (ret)
> - goto err3;
> + goto err4;
>
> mutex_unlock(&udc_lock);
>
> return 0;
> -err3:
> +
> +err4:
> list_del(&udc->list);
> mutex_unlock(&udc_lock);
>
> -err2:
> +err3:
> put_device(&udc->dev);
>
> +err2:
> + if (gadget->register_my_device)
> + put_device(&gadget->dev);
> err1:
> return ret;
> }
> @@ -254,6 +266,9 @@ found:
>
> kobject_uevent(&udc->dev.kobj, KOBJ_REMOVE);
> device_unregister(&udc->dev);
> +
> + if (gadget->register_my_device)
> + device_unregister(&gadget->dev);
> }
> EXPORT_SYMBOL_GPL(usb_del_gadget_udc);
>
> diff --git a/include/linux/usb/gadget.h b/include/linux/usb/gadget.h
> index 2e297e8..fcd9ef8 100644
> --- a/include/linux/usb/gadget.h
> +++ b/include/linux/usb/gadget.h
> @@ -494,6 +494,9 @@ struct usb_gadget_ops {
> * only supports HNP on a different root port.
> * @b_hnp_enable: OTG device feature flag, indicating that the A-Host
> * enabled HNP support.
> + * @register_my_device: Flag telling udc-core that UDC driver didn't
> + * register the gadget device to the driver model. Temporary until
> + * all UDC drivers are fixed up properly.
> * @name: Identifies the controller hardware type. Used in diagnostics
> * and sometimes configuration.
> * @dev: Driver model state for this abstract device.
> @@ -531,6 +534,7 @@ struct usb_gadget {
> unsigned b_hnp_enable:1;
> unsigned a_hnp_support:1;
> unsigned a_alt_hnp_support:1;
> + unsigned register_my_device:1;
> const char *name;
> struct device dev;
> unsigned out_epnum;
^ permalink raw reply
* Re: [RFC/PATCH 32/32] usb: gadget: drop now unnecessary flag
From: Tomasz Figa @ 2013-01-24 18:52 UTC (permalink / raw)
To: Felipe Balbi
Cc: kgene.kim, eric.y.miao, kuninori.morimoto.gx, alexander.shishkin,
gregkh, yoshihiro.shimoda.uh, Linux USB Mailing List,
nicolas.ferre, linux-geode, haojian.zhuang,
Linux OMAP Mailing List, linux-samsung-soc, ben-linux,
dahlmann.thomas, linux, linuxppc-dev, linux-arm-kernel
In-Reply-To: <1359042370-4358-33-git-send-email-balbi@ti.com>
Hi Felipe,
On Thursday 24 of January 2013 17:46:10 Felipe Balbi wrote:
> We don't need the ->register_my_device flag
> anymore because all UDC drivers have been
> properly converted.
>
> Let's remove every history of it.
>
> Signed-off-by: Felipe Balbi <balbi@ti.com>
> ---
> drivers/usb/chipidea/udc.c | 1 -
> drivers/usb/dwc3/gadget.c | 1 -
> drivers/usb/gadget/amd5536udc.c | 1 -
> drivers/usb/gadget/at91_udc.c | 1 -
> drivers/usb/gadget/atmel_usba_udc.c | 1 -
> drivers/usb/gadget/bcm63xx_udc.c | 1 -
> drivers/usb/gadget/dummy_hcd.c | 1 -
> drivers/usb/gadget/fsl_qe_udc.c | 1 -
> drivers/usb/gadget/fsl_udc_core.c | 1 -
> drivers/usb/gadget/fusb300_udc.c | 1 -
> drivers/usb/gadget/goku_udc.c | 1 -
> drivers/usb/gadget/imx_udc.c | 1 -
> drivers/usb/gadget/lpc32xx_udc.c | 1 -
> drivers/usb/gadget/m66592-udc.c | 1 -
> drivers/usb/gadget/mv_u3d_core.c | 1 -
> drivers/usb/gadget/mv_udc_core.c | 1 -
> drivers/usb/gadget/net2272.c | 1 -
> drivers/usb/gadget/net2280.c | 1 -
> drivers/usb/gadget/omap_udc.c | 1 -
> drivers/usb/gadget/pch_udc.c | 1 -
> drivers/usb/gadget/pxa25x_udc.c | 1 -
> drivers/usb/gadget/pxa27x_udc.c | 1 -
> drivers/usb/gadget/r8a66597-udc.c | 1 -
> drivers/usb/gadget/s3c-hsotg.c | 1 -
> drivers/usb/gadget/s3c-hsudc.c | 1 -
> drivers/usb/gadget/s3c2410_udc.c | 1 -
> drivers/usb/gadget/udc-core.c | 3 ---
> drivers/usb/musb/musb_gadget.c | 1 -
> drivers/usb/renesas_usbhs/mod_gadget.c | 1 -
> include/linux/usb/gadget.h | 4 ----
> 30 files changed, 35 deletions(-)
>
[snip]
> diff --git a/drivers/usb/gadget/udc-core.c
> b/drivers/usb/gadget/udc-core.c index 9195054..4ee0efc 100644
> --- a/drivers/usb/gadget/udc-core.c
> +++ b/drivers/usb/gadget/udc-core.c
> @@ -173,7 +173,6 @@ int usb_add_gadget_udc(struct device *parent, struct
> usb_gadget *gadget) if (!udc)
> goto err1;
>
> - if (gadget->register_my_device) {
> dev_set_name(&gadget->dev, "gadget");
>
> ret = device_register(&gadget->dev);
> @@ -211,7 +210,6 @@ err3:
> put_device(&udc->dev);
>
> err2:
> - if (gadget->register_my_device)
> put_device(&gadget->dev);
> err1:
> return ret;
> @@ -267,7 +265,6 @@ found:
> kobject_uevent(&udc->dev.kobj, KOBJ_REMOVE);
> device_unregister(&udc->dev);
>
> - if (gadget->register_my_device)
> device_unregister(&gadget->dev);
Correct me if I am wrong, but doesn't this patch leave us with incorrect
indentation?
Otherwise looks good.
Best regards,
Tomasz Figa
^ permalink raw reply
* RE: [PATCH][v2] KVM: PPC: add paravirt idle loop for 64-bit book E
From: Yoder Stuart-B08248 @ 2013-01-24 18:26 UTC (permalink / raw)
To: Wood Scott-B07421
Cc: kvm@vger.kernel.org, agraf@suse.de, kvm-ppc@vger.kernel.org,
linuxppc-dev@ozlabs.org
In-Reply-To: <1359051740.24865.10@snotra>
> -----Original Message-----
> From: Wood Scott-B07421
> Sent: Thursday, January 24, 2013 12:22 PM
> To: Yoder Stuart-B08248
> Cc: agraf@suse.de; benh@kernel.crashing.org; linuxppc-dev@ozlabs.org; kvm=
-ppc@vger.kernel.org;
> kvm@vger.kernel.org; Yoder Stuart-B08248
> Subject: Re: [PATCH][v2] KVM: PPC: add paravirt idle loop for 64-bit book=
E
>=20
> On 01/22/2013 05:54:43 PM, Stuart Yoder wrote:
> > +.macro BOOK3E_IDLE_LOOP
> > +1:
> > + PPC_WAIT(0)
> > b 1b
> > +.endm
> > +
> > +.macro EPAPR_EV_IDLE_LOOP
> > +idle_loop:
> > + LOAD_REG_IMMEDIATE(r11, EV_HCALL_TOKEN(EV_IDLE))
> > +
> > +.global epapr_ev_idle_start
> > +epapr_ev_idle_start:
> > + li r3, -1
> > + nop
> > + nop
> > + nop
> > + b idle_loop
> > +.endm
> > +
> > +BOOK3E_IDLE epapr_ev_idle, EPAPR_EV_IDLE_LOOP
> > +
> > +BOOK3E_IDLE book3e_idle BOOK3E_IDLE_LOOP
>=20
> Why the comma after epapr_ev_idle but not after book3e_idle?
>=20
> Also you have spaces where there should be tabs.
>=20
> Otherwise looks good.
Hmm...there shouldn't be a comma there. I'll respin
and fix the whitespace too.
Stuart
^ permalink raw reply
* Re: [PATCH][v2] KVM: PPC: add paravirt idle loop for 64-bit book E
From: Scott Wood @ 2013-01-24 18:22 UTC (permalink / raw)
To: Stuart Yoder; +Cc: kvm, Stuart Yoder, kvm-ppc, agraf, linuxppc-dev
In-Reply-To: <1358898883-16218-1-git-send-email-stuart.yoder@freescale.com>
On 01/22/2013 05:54:43 PM, Stuart Yoder wrote:
> +.macro BOOK3E_IDLE_LOOP
> +1:
> + PPC_WAIT(0)
> b 1b
> +.endm
> +
> +.macro EPAPR_EV_IDLE_LOOP
> +idle_loop:
> + LOAD_REG_IMMEDIATE(r11, EV_HCALL_TOKEN(EV_IDLE))
> +
> +.global epapr_ev_idle_start
> +epapr_ev_idle_start:
> + li r3, -1
> + nop
> + nop
> + nop
> + b idle_loop
> +.endm
> +
> +BOOK3E_IDLE epapr_ev_idle, EPAPR_EV_IDLE_LOOP
> +
> +BOOK3E_IDLE book3e_idle BOOK3E_IDLE_LOOP
Why the comma after epapr_ev_idle but not after book3e_idle?
Also you have spaces where there should be tabs.
Otherwise looks good.
-Scott=
^ permalink raw reply
* Re: [PATCH][v2] KVM: PPC: add paravirt idle loop for 64-bit book E
From: Alexander Graf @ 2013-01-24 17:42 UTC (permalink / raw)
To: Stuart Yoder; +Cc: kvm-ppc, kvm, linuxppc-dev
In-Reply-To: <1358898883-16218-1-git-send-email-stuart.yoder@freescale.com>
On 23.01.2013, at 00:54, Stuart Yoder wrote:
> From: Stuart Yoder <stuart.yoder@freescale.com>
>=20
> Signed-off-by: Stuart Yoder <stuart.yoder@freescale.com>
Ben, this one is in generic powerpc code, so I'd say it's for you :).
Alex
> ---
>=20
> -v2
> -macro'ized loop in idle_book3e.S to avoid code=20
> duplication, paravirt loop is now in idle_book3e.S
>=20
> arch/powerpc/kernel/epapr_hcalls.S | 2 ++
> arch/powerpc/kernel/idle_book3e.S | 30 =
++++++++++++++++++++++++++++--
> 2 files changed, 30 insertions(+), 2 deletions(-)
>=20
> diff --git a/arch/powerpc/kernel/epapr_hcalls.S =
b/arch/powerpc/kernel/epapr_hcalls.S
> index 62c0dc2..9f1ebf7 100644
> --- a/arch/powerpc/kernel/epapr_hcalls.S
> +++ b/arch/powerpc/kernel/epapr_hcalls.S
> @@ -17,6 +17,7 @@
> #include <asm/asm-compat.h>
> #include <asm/asm-offsets.h>
>=20
> +#ifndef CONFIG_PPC64
> /* epapr_ev_idle() was derived from e500_idle() */
> _GLOBAL(epapr_ev_idle)
> CURRENT_THREAD_INFO(r3, r1)
> @@ -42,6 +43,7 @@ epapr_ev_idle_start:
> * _TLF_NAPPING.
> */
> b idle_loop
> +#endif
>=20
> /* Hypercall entry point. Will be patched with device tree =
instructions. */
> .global epapr_hypercall_start
> diff --git a/arch/powerpc/kernel/idle_book3e.S =
b/arch/powerpc/kernel/idle_book3e.S
> index 4c7cb400..e1c9acd 100644
> --- a/arch/powerpc/kernel/idle_book3e.S
> +++ b/arch/powerpc/kernel/idle_book3e.S
> @@ -16,11 +16,13 @@
> #include <asm/ppc-opcode.h>
> #include <asm/processor.h>
> #include <asm/thread_info.h>
> +#include <asm/epapr_hcalls.h>
>=20
> /* 64-bit version only for now */
> #ifdef CONFIG_PPC64
>=20
> -_GLOBAL(book3e_idle)
> +.macro BOOK3E_IDLE name loop
> +_GLOBAL(\name)
> /* Save LR for later */
> mflr r0
> std r0,16(r1)
> @@ -67,7 +69,31 @@ _GLOBAL(book3e_idle)
>=20
> /* We can now re-enable hard interrupts and go to sleep */
> wrteei 1
> -1: PPC_WAIT(0)
> + \loop
> +
> +.endm
> +
> +.macro BOOK3E_IDLE_LOOP
> +1:
> + PPC_WAIT(0)
> b 1b
> +.endm
> +
> +.macro EPAPR_EV_IDLE_LOOP
> +idle_loop:
> + LOAD_REG_IMMEDIATE(r11, EV_HCALL_TOKEN(EV_IDLE))
> +
> +.global epapr_ev_idle_start
> +epapr_ev_idle_start:
> + li r3, -1
> + nop
> + nop
> + nop
> + b idle_loop
> +.endm
> +
> +BOOK3E_IDLE epapr_ev_idle, EPAPR_EV_IDLE_LOOP
> +
> +BOOK3E_IDLE book3e_idle BOOK3E_IDLE_LOOP
>=20
> #endif /* CONFIG_PPC64 */
> --=20
> 1.7.9.7
>=20
>=20
^ permalink raw reply
* Re: [PATCH v5 01/45] percpu_rwlock: Introduce the global reader-writer lock backend
From: Oleg Nesterov @ 2013-01-24 15:58 UTC (permalink / raw)
To: Michel Lespinasse
Cc: linux-doc, peterz, fweisbec, mingo, linux-arch, linux,
xiaoguangrong, wangyun, paulmck, nikunj, linux-pm, rusty,
Steven Rostedt, rjw, namhyung, tglx, linux-arm-kernel, netdev,
linux-kernel, sbw, Srivatsa S. Bhat, tj, akpm, linuxppc-dev
In-Reply-To: <CANN689HOmiO-5714UiyuOcjrRYW2DkR4cPLgt96f5YeB9Ws3RQ@mail.gmail.com>
On 01/23, Michel Lespinasse wrote:
>
> On Tue, Jan 22, 2013 at 11:32 AM, Steven Rostedt <rostedt@goodmis.org> wrote:
> >
> > I thought global locks are now fair. That is, a reader will block if a
> > writer is waiting. Hence, the above should deadlock on the current
> > rwlock_t types.
>
> I believe you are mistaken here. struct rw_semaphore is fair (and
> blocking), but rwlock_t is unfair. The reason we can't easily make
> rwlock_t fair is because tasklist_lock currently depends on the
> rwlock_t unfairness - tasklist_lock readers typically don't disable
> local interrupts, and tasklist_lock may be acquired again from within
> an interrupt, which would deadlock if rwlock_t was fair and a writer
> was queued by the time the interrupt is processed.
Yes.
And, iirc, it was even documented somewhere that while rwlock_t is not
really nice, it is good to share the locking with interrupts. You do
not need to disable irqs.
Oleg.
^ permalink raw reply
* [RFC/PATCH 32/32] usb: gadget: drop now unnecessary flag
From: Felipe Balbi @ 2013-01-24 15:46 UTC (permalink / raw)
To: Linux USB Mailing List
Cc: kgene.kim, eric.y.miao, kuninori.morimoto.gx, alexander.shishkin,
gregkh, yoshihiro.shimoda.uh, nicolas.ferre, linux-geode,
haojian.zhuang, Linux OMAP Mailing List, linux-samsung-soc,
Felipe Balbi, ben-linux, dahlmann.thomas, linux, linuxppc-dev,
linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
We don't need the ->register_my_device flag
anymore because all UDC drivers have been
properly converted.
Let's remove every history of it.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/chipidea/udc.c | 1 -
drivers/usb/dwc3/gadget.c | 1 -
drivers/usb/gadget/amd5536udc.c | 1 -
drivers/usb/gadget/at91_udc.c | 1 -
drivers/usb/gadget/atmel_usba_udc.c | 1 -
drivers/usb/gadget/bcm63xx_udc.c | 1 -
drivers/usb/gadget/dummy_hcd.c | 1 -
drivers/usb/gadget/fsl_qe_udc.c | 1 -
drivers/usb/gadget/fsl_udc_core.c | 1 -
drivers/usb/gadget/fusb300_udc.c | 1 -
drivers/usb/gadget/goku_udc.c | 1 -
drivers/usb/gadget/imx_udc.c | 1 -
drivers/usb/gadget/lpc32xx_udc.c | 1 -
drivers/usb/gadget/m66592-udc.c | 1 -
drivers/usb/gadget/mv_u3d_core.c | 1 -
drivers/usb/gadget/mv_udc_core.c | 1 -
drivers/usb/gadget/net2272.c | 1 -
drivers/usb/gadget/net2280.c | 1 -
drivers/usb/gadget/omap_udc.c | 1 -
drivers/usb/gadget/pch_udc.c | 1 -
drivers/usb/gadget/pxa25x_udc.c | 1 -
drivers/usb/gadget/pxa27x_udc.c | 1 -
drivers/usb/gadget/r8a66597-udc.c | 1 -
drivers/usb/gadget/s3c-hsotg.c | 1 -
drivers/usb/gadget/s3c-hsudc.c | 1 -
drivers/usb/gadget/s3c2410_udc.c | 1 -
drivers/usb/gadget/udc-core.c | 3 ---
drivers/usb/musb/musb_gadget.c | 1 -
drivers/usb/renesas_usbhs/mod_gadget.c | 1 -
include/linux/usb/gadget.h | 4 ----
30 files changed, 35 deletions(-)
diff --git a/drivers/usb/chipidea/udc.c b/drivers/usb/chipidea/udc.c
index e95e8bb..1b65ac8 100644
--- a/drivers/usb/chipidea/udc.c
+++ b/drivers/usb/chipidea/udc.c
@@ -1721,7 +1721,6 @@ static int udc_start(struct ci13xxx *ci)
ci->gadget.dev.coherent_dma_mask = dev->coherent_dma_mask;
ci->gadget.dev.parent = dev;
ci->gadget.dev.release = udc_release;
- ci->gadget.register_my_device = true;
/* alloc resources */
ci->qh_pool = dma_pool_create("ci13xxx_qh", dev,
diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
index 7002cf6..067ba6ad 100644
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -2423,7 +2423,6 @@ int dwc3_gadget_init(struct dwc3 *dwc)
dwc->gadget.dev.dma_parms = dwc->dev->dma_parms;
dwc->gadget.dev.dma_mask = dwc->dev->dma_mask;
dwc->gadget.dev.release = dwc3_gadget_release;
- dwc->gadget.register_my_device = true;
dwc->gadget.name = "dwc3-gadget";
/*
diff --git a/drivers/usb/gadget/amd5536udc.c b/drivers/usb/gadget/amd5536udc.c
index 1827d4c..35ab5d3 100644
--- a/drivers/usb/gadget/amd5536udc.c
+++ b/drivers/usb/gadget/amd5536udc.c
@@ -3275,7 +3275,6 @@ static int udc_probe(struct udc *dev)
dev->gadget.dev.release = gadget_release;
dev->gadget.name = name;
dev->gadget.max_speed = USB_SPEED_HIGH;
- dev->gadget.register_my_device = true;
/* init registers, interrupts, ... */
startup_registers(dev);
diff --git a/drivers/usb/gadget/at91_udc.c b/drivers/usb/gadget/at91_udc.c
index 177b56d..dc3682c 100644
--- a/drivers/usb/gadget/at91_udc.c
+++ b/drivers/usb/gadget/at91_udc.c
@@ -1726,7 +1726,6 @@ static int at91udc_probe(struct platform_device *pdev)
/* init software state */
udc = &controller;
- udc->gadget.register_my_device = true;
udc->gadget.dev.parent = dev;
if (pdev->dev.of_node)
at91udc_of_init(udc, pdev->dev.of_node);
diff --git a/drivers/usb/gadget/atmel_usba_udc.c b/drivers/usb/gadget/atmel_usba_udc.c
index f0f9423..b197b75 100644
--- a/drivers/usb/gadget/atmel_usba_udc.c
+++ b/drivers/usb/gadget/atmel_usba_udc.c
@@ -1902,7 +1902,6 @@ static int __init usba_udc_probe(struct platform_device *pdev)
udc->gadget.dev.parent = &pdev->dev;
udc->gadget.dev.dma_mask = pdev->dev.dma_mask;
- udc->gadget.register_my_device = true;
platform_set_drvdata(pdev, udc);
diff --git a/drivers/usb/gadget/bcm63xx_udc.c b/drivers/usb/gadget/bcm63xx_udc.c
index 10b0475..96a585ee 100644
--- a/drivers/usb/gadget/bcm63xx_udc.c
+++ b/drivers/usb/gadget/bcm63xx_udc.c
@@ -2373,7 +2373,6 @@ static int bcm63xx_udc_probe(struct platform_device *pdev)
udc->gadget.dev.parent = dev;
udc->gadget.dev.release = bcm63xx_udc_gadget_release;
udc->gadget.dev.dma_mask = dev->dma_mask;
- udc->gadget.register_my_device = true;
if (!pd->use_fullspeed && !use_fullspeed)
udc->gadget.max_speed = USB_SPEED_HIGH;
diff --git a/drivers/usb/gadget/dummy_hcd.c b/drivers/usb/gadget/dummy_hcd.c
index 8155d4a..7fe600f 100644
--- a/drivers/usb/gadget/dummy_hcd.c
+++ b/drivers/usb/gadget/dummy_hcd.c
@@ -982,7 +982,6 @@ static int dummy_udc_probe(struct platform_device *pdev)
dum->gadget.name = gadget_name;
dum->gadget.ops = &dummy_ops;
dum->gadget.max_speed = USB_SPEED_SUPER;
- dum->gadget.register_my_device = true;
dum->gadget.dev.parent = &pdev->dev;
dum->gadget.dev.release = dummy_gadget_release;
diff --git a/drivers/usb/gadget/fsl_qe_udc.c b/drivers/usb/gadget/fsl_qe_udc.c
index 08c8432..010e216 100644
--- a/drivers/usb/gadget/fsl_qe_udc.c
+++ b/drivers/usb/gadget/fsl_qe_udc.c
@@ -2525,7 +2525,6 @@ static int qe_udc_probe(struct platform_device *ofdev)
udc->gadget.name = driver_name;
udc->gadget.dev.release = qe_udc_release;
udc->gadget.dev.parent = &ofdev->dev;
- udc->gadget.register_my_device = true;
/* initialize qe_ep struct */
for (i = 0; i < USB_MAX_ENDPOINTS ; i++) {
diff --git a/drivers/usb/gadget/fsl_udc_core.c b/drivers/usb/gadget/fsl_udc_core.c
index b78b734..449bf13 100644
--- a/drivers/usb/gadget/fsl_udc_core.c
+++ b/drivers/usb/gadget/fsl_udc_core.c
@@ -2526,7 +2526,6 @@ static int __init fsl_udc_probe(struct platform_device *pdev)
udc_controller->gadget.dev.release = fsl_udc_release;
udc_controller->gadget.dev.parent = &pdev->dev;
udc_controller->gadget.dev.of_node = pdev->dev.of_node;
- udc_controller->gadget.register_my_device = true;
if (!IS_ERR_OR_NULL(udc_controller->transceiver))
udc_controller->gadget.is_otg = 1;
diff --git a/drivers/usb/gadget/fusb300_udc.c b/drivers/usb/gadget/fusb300_udc.c
index 798a25b..093e6c6 100644
--- a/drivers/usb/gadget/fusb300_udc.c
+++ b/drivers/usb/gadget/fusb300_udc.c
@@ -1427,7 +1427,6 @@ static int __init fusb300_probe(struct platform_device *pdev)
fusb300->gadget.dev.dma_mask = pdev->dev.dma_mask;
fusb300->gadget.dev.release = pdev->dev.release;
fusb300->gadget.name = udc_name;
- fusb300->gadget.register_my_device = true;
fusb300->reg = reg;
ret = request_irq(ires->start, fusb300_irq, IRQF_SHARED,
diff --git a/drivers/usb/gadget/goku_udc.c b/drivers/usb/gadget/goku_udc.c
index b4ea2cf..8a6c666 100644
--- a/drivers/usb/gadget/goku_udc.c
+++ b/drivers/usb/gadget/goku_udc.c
@@ -1758,7 +1758,6 @@ static int goku_probe(struct pci_dev *pdev, const struct pci_device_id *id)
dev->gadget.dev.dma_mask = pdev->dev.dma_mask;
dev->gadget.dev.release = gadget_release;
dev->gadget.name = driver_name;
- dev->gadget.register_my_device = true;
/* now all the pci goodies ... */
retval = pci_enable_device(pdev);
diff --git a/drivers/usb/gadget/imx_udc.c b/drivers/usb/gadget/imx_udc.c
index c8b5da3..4cc8a92 100644
--- a/drivers/usb/gadget/imx_udc.c
+++ b/drivers/usb/gadget/imx_udc.c
@@ -1462,7 +1462,6 @@ static int __init imx_udc_probe(struct platform_device *pdev)
imx_usb->clk = clk;
imx_usb->dev = &pdev->dev;
- imx_usb->gadget.register_my_device = true;
imx_usb->gadget.dev.parent = &pdev->dev;
imx_usb->gadget.dev.dma_mask = pdev->dev.dma_mask;
diff --git a/drivers/usb/gadget/lpc32xx_udc.c b/drivers/usb/gadget/lpc32xx_udc.c
index 077e021..0ad78cd 100644
--- a/drivers/usb/gadget/lpc32xx_udc.c
+++ b/drivers/usb/gadget/lpc32xx_udc.c
@@ -3090,7 +3090,6 @@ static int __init lpc32xx_udc_probe(struct platform_device *pdev)
/* init software state */
udc->gadget.dev.parent = dev;
- udc->gadget.register_my_device = true;
udc->pdev = pdev;
udc->dev = &pdev->dev;
udc->enabled = 0;
diff --git a/drivers/usb/gadget/m66592-udc.c b/drivers/usb/gadget/m66592-udc.c
index c5d1b39..5ba712f 100644
--- a/drivers/usb/gadget/m66592-udc.c
+++ b/drivers/usb/gadget/m66592-udc.c
@@ -1612,7 +1612,6 @@ static int __init m66592_probe(struct platform_device *pdev)
m66592->gadget.dev.dma_mask = pdev->dev.dma_mask;
m66592->gadget.dev.release = pdev->dev.release;
m66592->gadget.name = udc_name;
- m66592->gadget.register_my_device = true;
init_timer(&m66592->timer);
m66592->timer.function = m66592_timer;
diff --git a/drivers/usb/gadget/mv_u3d_core.c b/drivers/usb/gadget/mv_u3d_core.c
index 734ade1..e5735fc 100644
--- a/drivers/usb/gadget/mv_u3d_core.c
+++ b/drivers/usb/gadget/mv_u3d_core.c
@@ -1959,7 +1959,6 @@ static int mv_u3d_probe(struct platform_device *dev)
u3d->gadget.dev.dma_mask = dev->dev.dma_mask;
u3d->gadget.dev.release = mv_u3d_gadget_release;
u3d->gadget.name = driver_name; /* gadget name */
- u3d->gadget.register_my_device = true;
mv_u3d_eps_init(u3d);
diff --git a/drivers/usb/gadget/mv_udc_core.c b/drivers/usb/gadget/mv_udc_core.c
index 60741af..73b90f9 100644
--- a/drivers/usb/gadget/mv_udc_core.c
+++ b/drivers/usb/gadget/mv_udc_core.c
@@ -2313,7 +2313,6 @@ static int mv_udc_probe(struct platform_device *pdev)
udc->gadget.dev.dma_mask = pdev->dev.dma_mask;
udc->gadget.dev.release = gadget_release;
udc->gadget.name = driver_name; /* gadget name */
- udc->gadget.register_my_device = true;
eps_init(udc);
diff --git a/drivers/usb/gadget/net2272.c b/drivers/usb/gadget/net2272.c
index 635248f..78c8bb5 100644
--- a/drivers/usb/gadget/net2272.c
+++ b/drivers/usb/gadget/net2272.c
@@ -2239,7 +2239,6 @@ static struct net2272 *net2272_probe_init(struct device *dev, unsigned int irq)
ret->gadget.dev.dma_mask = dev->dma_mask;
ret->gadget.dev.release = net2272_gadget_release;
ret->gadget.name = driver_name;
- ret->gadget.register_my_device = true;
return ret;
}
diff --git a/drivers/usb/gadget/net2280.c b/drivers/usb/gadget/net2280.c
index 630f715..5da1ffc 100644
--- a/drivers/usb/gadget/net2280.c
+++ b/drivers/usb/gadget/net2280.c
@@ -2702,7 +2702,6 @@ static int net2280_probe (struct pci_dev *pdev, const struct pci_device_id *id)
dev->gadget.dev.dma_mask = pdev->dev.dma_mask;
dev->gadget.dev.release = gadget_release;
dev->gadget.name = driver_name;
- dev->gadget.register_my_device = true;
/* now all the pci goodies ... */
if (pci_enable_device (pdev) < 0) {
diff --git a/drivers/usb/gadget/omap_udc.c b/drivers/usb/gadget/omap_udc.c
index 234e82b..3faa50e 100644
--- a/drivers/usb/gadget/omap_udc.c
+++ b/drivers/usb/gadget/omap_udc.c
@@ -2633,7 +2633,6 @@ omap_udc_setup(struct platform_device *odev, struct usb_phy *xceiv)
udc->gadget.dev.release = omap_udc_release;
udc->gadget.dev.parent = &odev->dev;
- udc->gadget.register_my_device = true;
if (use_dma)
udc->gadget.dev.dma_mask = odev->dev.dma_mask;
diff --git a/drivers/usb/gadget/pch_udc.c b/drivers/usb/gadget/pch_udc.c
index 7032145..e8c9afd 100644
--- a/drivers/usb/gadget/pch_udc.c
+++ b/drivers/usb/gadget/pch_udc.c
@@ -3198,7 +3198,6 @@ static int pch_udc_probe(struct pci_dev *pdev,
dev->gadget.dev.release = gadget_release;
dev->gadget.name = KBUILD_MODNAME;
dev->gadget.max_speed = USB_SPEED_HIGH;
- dev->gadget.register_my_device = true;
/* Put the device in disconnected state till a driver is bound */
pch_udc_set_disconnect(dev);
diff --git a/drivers/usb/gadget/pxa25x_udc.c b/drivers/usb/gadget/pxa25x_udc.c
index 9deffd3..b19e2bb 100644
--- a/drivers/usb/gadget/pxa25x_udc.c
+++ b/drivers/usb/gadget/pxa25x_udc.c
@@ -2134,7 +2134,6 @@ static int __init pxa25x_udc_probe(struct platform_device *pdev)
dev->gadget.dev.parent = &pdev->dev;
dev->gadget.dev.dma_mask = pdev->dev.dma_mask;
- dev->gadget.register_my_device = true;
the_controller = dev;
platform_set_drvdata(pdev, dev);
diff --git a/drivers/usb/gadget/pxa27x_udc.c b/drivers/usb/gadget/pxa27x_udc.c
index 23a3eed..bc67ba7 100644
--- a/drivers/usb/gadget/pxa27x_udc.c
+++ b/drivers/usb/gadget/pxa27x_udc.c
@@ -2457,7 +2457,6 @@ static int __init pxa_udc_probe(struct platform_device *pdev)
udc->gadget.dev.parent = &pdev->dev;
udc->gadget.dev.dma_mask = NULL;
- udc->gadget.register_my_device = true;
udc->vbus_sensed = 0;
the_controller = udc;
diff --git a/drivers/usb/gadget/r8a66597-udc.c b/drivers/usb/gadget/r8a66597-udc.c
index 40ef4bd..bdadbbe 100644
--- a/drivers/usb/gadget/r8a66597-udc.c
+++ b/drivers/usb/gadget/r8a66597-udc.c
@@ -1919,7 +1919,6 @@ static int __init r8a66597_probe(struct platform_device *pdev)
r8a66597->gadget.dev.dma_mask = pdev->dev.dma_mask;
r8a66597->gadget.dev.release = pdev->dev.release;
r8a66597->gadget.name = udc_name;
- r8a66597->gadget.register_my_device = true;
init_timer(&r8a66597->timer);
r8a66597->timer.function = r8a66597_timer;
diff --git a/drivers/usb/gadget/s3c-hsotg.c b/drivers/usb/gadget/s3c-hsotg.c
index bd8292d..3adc5bf 100644
--- a/drivers/usb/gadget/s3c-hsotg.c
+++ b/drivers/usb/gadget/s3c-hsotg.c
@@ -3558,7 +3558,6 @@ static int s3c_hsotg_probe(struct platform_device *pdev)
hsotg->gadget.dev.parent = dev;
hsotg->gadget.dev.dma_mask = dev->dma_mask;
hsotg->gadget.dev.release = s3c_hsotg_release;
- hsotg->gadget.register_my_device = true;
/* reset the system */
diff --git a/drivers/usb/gadget/s3c-hsudc.c b/drivers/usb/gadget/s3c-hsudc.c
index dee6810..d1c3b1b 100644
--- a/drivers/usb/gadget/s3c-hsudc.c
+++ b/drivers/usb/gadget/s3c-hsudc.c
@@ -1313,7 +1313,6 @@ static int s3c_hsudc_probe(struct platform_device *pdev)
hsudc->gadget.is_otg = 0;
hsudc->gadget.is_a_peripheral = 0;
hsudc->gadget.speed = USB_SPEED_UNKNOWN;
- hsudc->gadget.register_my_device = true;
s3c_hsudc_setup_ep(hsudc);
diff --git a/drivers/usb/gadget/s3c2410_udc.c b/drivers/usb/gadget/s3c2410_udc.c
index 302e137..dbe6125 100644
--- a/drivers/usb/gadget/s3c2410_udc.c
+++ b/drivers/usb/gadget/s3c2410_udc.c
@@ -1832,7 +1832,6 @@ static int s3c2410_udc_probe(struct platform_device *pdev)
udc->gadget.dev.parent = &pdev->dev;
udc->gadget.dev.dma_mask = pdev->dev.dma_mask;
- udc->gadget.register_my_device = true;
the_controller = udc;
platform_set_drvdata(pdev, udc);
diff --git a/drivers/usb/gadget/udc-core.c b/drivers/usb/gadget/udc-core.c
index 9195054..4ee0efc 100644
--- a/drivers/usb/gadget/udc-core.c
+++ b/drivers/usb/gadget/udc-core.c
@@ -173,7 +173,6 @@ int usb_add_gadget_udc(struct device *parent, struct usb_gadget *gadget)
if (!udc)
goto err1;
- if (gadget->register_my_device) {
dev_set_name(&gadget->dev, "gadget");
ret = device_register(&gadget->dev);
@@ -211,7 +210,6 @@ err3:
put_device(&udc->dev);
err2:
- if (gadget->register_my_device)
put_device(&gadget->dev);
err1:
return ret;
@@ -267,7 +265,6 @@ found:
kobject_uevent(&udc->dev.kobj, KOBJ_REMOVE);
device_unregister(&udc->dev);
- if (gadget->register_my_device)
device_unregister(&gadget->dev);
}
EXPORT_SYMBOL_GPL(usb_del_gadget_udc);
diff --git a/drivers/usb/musb/musb_gadget.c b/drivers/usb/musb/musb_gadget.c
index 1c4a8e8..af88e27 100644
--- a/drivers/usb/musb/musb_gadget.c
+++ b/drivers/usb/musb/musb_gadget.c
@@ -1875,7 +1875,6 @@ int musb_gadget_setup(struct musb *musb)
musb->g.dev.dma_mask = musb->controller->dma_mask;
musb->g.dev.release = musb_gadget_release;
musb->g.name = musb_driver_name;
- musb->g.register_my_device = true;
musb->g.is_otg = 1;
musb_g_init_endpoints(musb);
diff --git a/drivers/usb/renesas_usbhs/mod_gadget.c b/drivers/usb/renesas_usbhs/mod_gadget.c
index b42d81d..853271e 100644
--- a/drivers/usb/renesas_usbhs/mod_gadget.c
+++ b/drivers/usb/renesas_usbhs/mod_gadget.c
@@ -986,7 +986,6 @@ int usbhs_mod_gadget_probe(struct usbhs_priv *priv)
gpriv->gadget.name = "renesas_usbhs_udc";
gpriv->gadget.ops = &usbhsg_gadget_ops;
gpriv->gadget.max_speed = USB_SPEED_HIGH;
- gpriv->gadget.register_my_device = true;
INIT_LIST_HEAD(&gpriv->gadget.ep_list);
diff --git a/include/linux/usb/gadget.h b/include/linux/usb/gadget.h
index fcd9ef8..2e297e8 100644
--- a/include/linux/usb/gadget.h
+++ b/include/linux/usb/gadget.h
@@ -494,9 +494,6 @@ struct usb_gadget_ops {
* only supports HNP on a different root port.
* @b_hnp_enable: OTG device feature flag, indicating that the A-Host
* enabled HNP support.
- * @register_my_device: Flag telling udc-core that UDC driver didn't
- * register the gadget device to the driver model. Temporary until
- * all UDC drivers are fixed up properly.
* @name: Identifies the controller hardware type. Used in diagnostics
* and sometimes configuration.
* @dev: Driver model state for this abstract device.
@@ -534,7 +531,6 @@ struct usb_gadget {
unsigned b_hnp_enable:1;
unsigned a_hnp_support:1;
unsigned a_alt_hnp_support:1;
- unsigned register_my_device:1;
const char *name;
struct device dev;
unsigned out_epnum;
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 28/32] usb: gadget: pxa25x_udc: let udc-core manage gadget->dev
From: Felipe Balbi @ 2013-01-24 15:46 UTC (permalink / raw)
To: Linux USB Mailing List
Cc: kgene.kim, eric.y.miao, kuninori.morimoto.gx, alexander.shishkin,
gregkh, yoshihiro.shimoda.uh, nicolas.ferre, linux-geode,
haojian.zhuang, Linux OMAP Mailing List, linux-samsung-soc,
Felipe Balbi, ben-linux, dahlmann.thomas, linux, linuxppc-dev,
linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
By simply setting a flag, we can drop some
boilerplate code.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/gadget/pxa25x_udc.c | 10 +---------
1 file changed, 1 insertion(+), 9 deletions(-)
diff --git a/drivers/usb/gadget/pxa25x_udc.c b/drivers/usb/gadget/pxa25x_udc.c
index fa9c344..9deffd3 100644
--- a/drivers/usb/gadget/pxa25x_udc.c
+++ b/drivers/usb/gadget/pxa25x_udc.c
@@ -1266,13 +1266,6 @@ static int pxa25x_udc_start(struct usb_gadget *g,
dev->gadget.dev.driver = &driver->driver;
dev->pullup = 1;
- retval = device_add (&dev->gadget.dev);
- if (retval) {
- dev->driver = NULL;
- dev->gadget.dev.driver = NULL;
- return retval;
- }
-
/* ... then enable host detection and ep0; and we're ready
* for set_configuration as well as eventual disconnect.
*/
@@ -1331,7 +1324,6 @@ static int pxa25x_udc_stop(struct usb_gadget*g,
dev->gadget.dev.driver = NULL;
dev->driver = NULL;
- device_del (&dev->gadget.dev);
dump_state(dev);
return 0;
@@ -2140,9 +2132,9 @@ static int __init pxa25x_udc_probe(struct platform_device *pdev)
dev->timer.function = udc_watchdog;
dev->timer.data = (unsigned long) dev;
- device_initialize(&dev->gadget.dev);
dev->gadget.dev.parent = &pdev->dev;
dev->gadget.dev.dma_mask = pdev->dev.dma_mask;
+ dev->gadget.register_my_device = true;
the_controller = dev;
platform_set_drvdata(pdev, dev);
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 31/32] usb: chipidea: let udc-core manage gadget->dev
From: Felipe Balbi @ 2013-01-24 15:46 UTC (permalink / raw)
To: Linux USB Mailing List
Cc: kgene.kim, eric.y.miao, kuninori.morimoto.gx, alexander.shishkin,
gregkh, yoshihiro.shimoda.uh, nicolas.ferre, linux-geode,
haojian.zhuang, Linux OMAP Mailing List, linux-samsung-soc,
Felipe Balbi, ben-linux, dahlmann.thomas, linux, linuxppc-dev,
linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
By simply setting a flag, we can drop some
boilerplate code.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/chipidea/udc.c | 13 ++-----------
1 file changed, 2 insertions(+), 11 deletions(-)
diff --git a/drivers/usb/chipidea/udc.c b/drivers/usb/chipidea/udc.c
index f64fbea..e95e8bb 100644
--- a/drivers/usb/chipidea/udc.c
+++ b/drivers/usb/chipidea/udc.c
@@ -1717,11 +1717,11 @@ static int udc_start(struct ci13xxx *ci)
INIT_LIST_HEAD(&ci->gadget.ep_list);
- dev_set_name(&ci->gadget.dev, "gadget");
ci->gadget.dev.dma_mask = dev->dma_mask;
ci->gadget.dev.coherent_dma_mask = dev->coherent_dma_mask;
ci->gadget.dev.parent = dev;
ci->gadget.dev.release = udc_release;
+ ci->gadget.register_my_device = true;
/* alloc resources */
ci->qh_pool = dma_pool_create("ci13xxx_qh", dev,
@@ -1761,15 +1761,9 @@ static int udc_start(struct ci13xxx *ci)
hw_enable_vbus_intr(ci);
}
- retval = device_register(&ci->gadget.dev);
- if (retval) {
- put_device(&ci->gadget.dev);
- goto put_transceiver;
- }
-
retval = dbg_create_files(ci->dev);
if (retval)
- goto unreg_device;
+ goto put_transceiver;
if (!IS_ERR_OR_NULL(ci->transceiver)) {
retval = otg_set_peripheral(ci->transceiver->otg,
@@ -1797,8 +1791,6 @@ remove_trans:
dev_err(dev, "error = %i\n", retval);
remove_dbg:
dbg_remove_files(ci->dev);
-unreg_device:
- device_unregister(&ci->gadget.dev);
put_transceiver:
if (!IS_ERR_OR_NULL(ci->transceiver) && ci->global_phy)
usb_put_phy(ci->transceiver);
@@ -1837,7 +1829,6 @@ static void udc_stop(struct ci13xxx *ci)
usb_put_phy(ci->transceiver);
}
dbg_remove_files(ci->dev);
- device_unregister(&ci->gadget.dev);
/* my kobject is dynamic, I swear! */
memset(&ci->gadget, 0, sizeof(ci->gadget));
}
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 30/32] usb: chipidea: register debugging syfs on our device
From: Felipe Balbi @ 2013-01-24 15:46 UTC (permalink / raw)
To: Linux USB Mailing List
Cc: kgene.kim, eric.y.miao, kuninori.morimoto.gx, alexander.shishkin,
gregkh, yoshihiro.shimoda.uh, nicolas.ferre, linux-geode,
haojian.zhuang, Linux OMAP Mailing List, linux-samsung-soc,
Felipe Balbi, ben-linux, dahlmann.thomas, linux, linuxppc-dev,
linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
Don't register anything non-generic under
the gadget's device as we don't really *own*
it.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/chipidea/udc.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/usb/chipidea/udc.c b/drivers/usb/chipidea/udc.c
index 2f45bba..f64fbea 100644
--- a/drivers/usb/chipidea/udc.c
+++ b/drivers/usb/chipidea/udc.c
@@ -1767,7 +1767,7 @@ static int udc_start(struct ci13xxx *ci)
goto put_transceiver;
}
- retval = dbg_create_files(&ci->gadget.dev);
+ retval = dbg_create_files(ci->dev);
if (retval)
goto unreg_device;
@@ -1796,7 +1796,7 @@ remove_trans:
dev_err(dev, "error = %i\n", retval);
remove_dbg:
- dbg_remove_files(&ci->gadget.dev);
+ dbg_remove_files(ci->dev);
unreg_device:
device_unregister(&ci->gadget.dev);
put_transceiver:
@@ -1836,7 +1836,7 @@ static void udc_stop(struct ci13xxx *ci)
if (ci->global_phy)
usb_put_phy(ci->transceiver);
}
- dbg_remove_files(&ci->gadget.dev);
+ dbg_remove_files(ci->dev);
device_unregister(&ci->gadget.dev);
/* my kobject is dynamic, I swear! */
memset(&ci->gadget, 0, sizeof(ci->gadget));
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 27/32] usb: renesas_usbhs: gadget: let udc-core manage gadget->dev
From: Felipe Balbi @ 2013-01-24 15:46 UTC (permalink / raw)
To: Linux USB Mailing List
Cc: kgene.kim, eric.y.miao, kuninori.morimoto.gx, alexander.shishkin,
gregkh, yoshihiro.shimoda.uh, nicolas.ferre, linux-geode,
haojian.zhuang, Linux OMAP Mailing List, linux-samsung-soc,
Felipe Balbi, ben-linux, dahlmann.thomas, linux, linuxppc-dev,
linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
By simply setting a flag, we can drop some
boilerplate code.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/renesas_usbhs/mod_gadget.c | 11 ++---------
1 file changed, 2 insertions(+), 9 deletions(-)
diff --git a/drivers/usb/renesas_usbhs/mod_gadget.c b/drivers/usb/renesas_usbhs/mod_gadget.c
index dd41f61..b42d81d 100644
--- a/drivers/usb/renesas_usbhs/mod_gadget.c
+++ b/drivers/usb/renesas_usbhs/mod_gadget.c
@@ -981,15 +981,12 @@ int usbhs_mod_gadget_probe(struct usbhs_priv *priv)
/*
* init gadget
*/
- dev_set_name(&gpriv->gadget.dev, "gadget");
gpriv->gadget.dev.parent = dev;
gpriv->gadget.dev.release = usbhs_mod_gadget_release;
gpriv->gadget.name = "renesas_usbhs_udc";
gpriv->gadget.ops = &usbhsg_gadget_ops;
gpriv->gadget.max_speed = USB_SPEED_HIGH;
- ret = device_register(&gpriv->gadget.dev);
- if (ret < 0)
- goto err_add_udc;
+ gpriv->gadget.register_my_device = true;
INIT_LIST_HEAD(&gpriv->gadget.ep_list);
@@ -1018,15 +1015,13 @@ int usbhs_mod_gadget_probe(struct usbhs_priv *priv)
ret = usb_add_gadget_udc(dev, &gpriv->gadget);
if (ret)
- goto err_register;
+ goto err_add_udc;
dev_info(dev, "gadget probed\n");
return 0;
-err_register:
- device_unregister(&gpriv->gadget.dev);
err_add_udc:
kfree(gpriv->uep);
@@ -1042,8 +1037,6 @@ void usbhs_mod_gadget_remove(struct usbhs_priv *priv)
usb_del_gadget_udc(&gpriv->gadget);
- device_unregister(&gpriv->gadget.dev);
-
kfree(gpriv->uep);
kfree(gpriv);
}
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 29/32] usb: gadget: pxa27x_udc: let udc-core manage gadget->dev
From: Felipe Balbi @ 2013-01-24 15:46 UTC (permalink / raw)
To: Linux USB Mailing List
Cc: kgene.kim, eric.y.miao, kuninori.morimoto.gx, alexander.shishkin,
gregkh, yoshihiro.shimoda.uh, nicolas.ferre, linux-geode,
haojian.zhuang, Linux OMAP Mailing List, linux-samsung-soc,
Felipe Balbi, ben-linux, dahlmann.thomas, linux, linuxppc-dev,
linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
By simply setting a flag, we can drop some
boilerplate code.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/gadget/pxa27x_udc.c | 9 +--------
1 file changed, 1 insertion(+), 8 deletions(-)
diff --git a/drivers/usb/gadget/pxa27x_udc.c b/drivers/usb/gadget/pxa27x_udc.c
index f7d2579..23a3eed 100644
--- a/drivers/usb/gadget/pxa27x_udc.c
+++ b/drivers/usb/gadget/pxa27x_udc.c
@@ -1814,11 +1814,6 @@ static int pxa27x_udc_start(struct usb_gadget *g,
udc->gadget.dev.driver = &driver->driver;
dplus_pullup(udc, 1);
- retval = device_add(&udc->gadget.dev);
- if (retval) {
- dev_err(udc->dev, "device_add error %d\n", retval);
- goto fail;
- }
if (!IS_ERR_OR_NULL(udc->transceiver)) {
retval = otg_set_peripheral(udc->transceiver->otg,
&udc->gadget);
@@ -1876,8 +1871,6 @@ static int pxa27x_udc_stop(struct usb_gadget *g,
udc->driver = NULL;
- device_del(&udc->gadget.dev);
-
if (!IS_ERR_OR_NULL(udc->transceiver))
return otg_set_peripheral(udc->transceiver->otg, NULL);
return 0;
@@ -2462,9 +2455,9 @@ static int __init pxa_udc_probe(struct platform_device *pdev)
goto err_map;
}
- device_initialize(&udc->gadget.dev);
udc->gadget.dev.parent = &pdev->dev;
udc->gadget.dev.dma_mask = NULL;
+ udc->gadget.register_my_device = true;
udc->vbus_sensed = 0;
the_controller = udc;
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 24/32] usb: gadget: s3c-hsotg: let udc-core manage gadget->dev
From: Felipe Balbi @ 2013-01-24 15:46 UTC (permalink / raw)
To: Linux USB Mailing List
Cc: kgene.kim, eric.y.miao, kuninori.morimoto.gx, alexander.shishkin,
gregkh, yoshihiro.shimoda.uh, nicolas.ferre, linux-geode,
haojian.zhuang, Linux OMAP Mailing List, linux-samsung-soc,
Felipe Balbi, ben-linux, dahlmann.thomas, linux, linuxppc-dev,
linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
By simply setting a flag, we can drop some
boilerplate code.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/gadget/s3c-hsotg.c | 14 +-------------
1 file changed, 1 insertion(+), 13 deletions(-)
diff --git a/drivers/usb/gadget/s3c-hsotg.c b/drivers/usb/gadget/s3c-hsotg.c
index 833d85b..bd8292d 100644
--- a/drivers/usb/gadget/s3c-hsotg.c
+++ b/drivers/usb/gadget/s3c-hsotg.c
@@ -3552,17 +3552,13 @@ static int s3c_hsotg_probe(struct platform_device *pdev)
dev_info(dev, "regs %p, irq %d\n", hsotg->regs, hsotg->irq);
- device_initialize(&hsotg->gadget.dev);
-
- dev_set_name(&hsotg->gadget.dev, "gadget");
-
hsotg->gadget.max_speed = USB_SPEED_HIGH;
hsotg->gadget.ops = &s3c_hsotg_gadget_ops;
hsotg->gadget.name = dev_name(dev);
-
hsotg->gadget.dev.parent = dev;
hsotg->gadget.dev.dma_mask = dev->dma_mask;
hsotg->gadget.dev.release = s3c_hsotg_release;
+ hsotg->gadget.register_my_device = true;
/* reset the system */
@@ -3643,12 +3639,6 @@ static int s3c_hsotg_probe(struct platform_device *pdev)
s3c_hsotg_phy_disable(hsotg);
- ret = device_add(&hsotg->gadget.dev);
- if (ret) {
- put_device(&hsotg->gadget.dev);
- goto err_ep_mem;
- }
-
ret = usb_add_gadget_udc(&pdev->dev, &hsotg->gadget);
if (ret)
goto err_ep_mem;
@@ -3687,10 +3677,8 @@ static int s3c_hsotg_remove(struct platform_device *pdev)
}
s3c_hsotg_phy_disable(hsotg);
-
clk_disable_unprepare(hsotg->clk);
- device_unregister(&hsotg->gadget.dev);
return 0;
}
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 25/32] usb: gadget: s3c-hsudc: let udc-core manage gadget->dev
From: Felipe Balbi @ 2013-01-24 15:46 UTC (permalink / raw)
To: Linux USB Mailing List
Cc: kgene.kim, eric.y.miao, kuninori.morimoto.gx, alexander.shishkin,
gregkh, yoshihiro.shimoda.uh, nicolas.ferre, linux-geode,
haojian.zhuang, Linux OMAP Mailing List, linux-samsung-soc,
Felipe Balbi, ben-linux, dahlmann.thomas, linux, linuxppc-dev,
linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
By simply setting a flag, we can drop some
boilerplate code.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/gadget/s3c-hsudc.c | 11 +----------
1 file changed, 1 insertion(+), 10 deletions(-)
diff --git a/drivers/usb/gadget/s3c-hsudc.c b/drivers/usb/gadget/s3c-hsudc.c
index 4a3d620..dee6810 100644
--- a/drivers/usb/gadget/s3c-hsudc.c
+++ b/drivers/usb/gadget/s3c-hsudc.c
@@ -1304,18 +1304,16 @@ static int s3c_hsudc_probe(struct platform_device *pdev)
spin_lock_init(&hsudc->lock);
- dev_set_name(&hsudc->gadget.dev, "gadget");
-
hsudc->gadget.max_speed = USB_SPEED_HIGH;
hsudc->gadget.ops = &s3c_hsudc_gadget_ops;
hsudc->gadget.name = dev_name(dev);
hsudc->gadget.dev.parent = dev;
hsudc->gadget.dev.dma_mask = dev->dma_mask;
hsudc->gadget.ep0 = &hsudc->ep[0].ep;
-
hsudc->gadget.is_otg = 0;
hsudc->gadget.is_a_peripheral = 0;
hsudc->gadget.speed = USB_SPEED_UNKNOWN;
+ hsudc->gadget.register_my_device = true;
s3c_hsudc_setup_ep(hsudc);
@@ -1346,12 +1344,6 @@ static int s3c_hsudc_probe(struct platform_device *pdev)
disable_irq(hsudc->irq);
local_irq_enable();
- ret = device_register(&hsudc->gadget.dev);
- if (ret) {
- put_device(&hsudc->gadget.dev);
- goto err_add_device;
- }
-
ret = usb_add_gadget_udc(&pdev->dev, &hsudc->gadget);
if (ret)
goto err_add_udc;
@@ -1360,7 +1352,6 @@ static int s3c_hsudc_probe(struct platform_device *pdev)
return 0;
err_add_udc:
- device_unregister(&hsudc->gadget.dev);
err_add_device:
clk_disable(hsudc->uclk);
err_res:
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 26/32] usb: gadget: s3c2410_udc: let udc-core manage gadget->dev
From: Felipe Balbi @ 2013-01-24 15:46 UTC (permalink / raw)
To: Linux USB Mailing List
Cc: kgene.kim, eric.y.miao, kuninori.morimoto.gx, alexander.shishkin,
gregkh, yoshihiro.shimoda.uh, nicolas.ferre, linux-geode,
haojian.zhuang, Linux OMAP Mailing List, linux-samsung-soc,
Felipe Balbi, ben-linux, dahlmann.thomas, linux, linuxppc-dev,
linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
By simply setting a flag, we can drop some
boilerplate code.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/gadget/s3c2410_udc.c | 10 +---------
1 file changed, 1 insertion(+), 9 deletions(-)
diff --git a/drivers/usb/gadget/s3c2410_udc.c b/drivers/usb/gadget/s3c2410_udc.c
index fc07b43..302e137 100644
--- a/drivers/usb/gadget/s3c2410_udc.c
+++ b/drivers/usb/gadget/s3c2410_udc.c
@@ -1677,13 +1677,6 @@ static int s3c2410_udc_start(struct usb_gadget *g,
udc->driver = driver;
udc->gadget.dev.driver = &driver->driver;
- /* Bind the driver */
- retval = device_add(&udc->gadget.dev);
- if (retval) {
- dev_err(&udc->gadget.dev, "Error in device_add() : %d\n", retval);
- goto register_error;
- }
-
/* Enable udc */
s3c2410_udc_enable(udc);
@@ -1700,7 +1693,6 @@ static int s3c2410_udc_stop(struct usb_gadget *g,
{
struct s3c2410_udc *udc = to_s3c2410(g);
- device_del(&udc->gadget.dev);
udc->driver = NULL;
/* Disable udc */
@@ -1838,9 +1830,9 @@ static int s3c2410_udc_probe(struct platform_device *pdev)
goto err_mem;
}
- device_initialize(&udc->gadget.dev);
udc->gadget.dev.parent = &pdev->dev;
udc->gadget.dev.dma_mask = pdev->dev.dma_mask;
+ udc->gadget.register_my_device = true;
the_controller = udc;
platform_set_drvdata(pdev, udc);
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 20/32] usb: gadget: net2272: let udc-core manage gadget->dev
From: Felipe Balbi @ 2013-01-24 15:45 UTC (permalink / raw)
To: Linux USB Mailing List
Cc: kgene.kim, eric.y.miao, kuninori.morimoto.gx, alexander.shishkin,
gregkh, yoshihiro.shimoda.uh, nicolas.ferre, linux-geode,
haojian.zhuang, Linux OMAP Mailing List, linux-samsung-soc,
Felipe Balbi, ben-linux, dahlmann.thomas, linux, linuxppc-dev,
linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
By simply setting a flag, we can drop some
boilerplate code.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/gadget/net2272.c | 10 ++--------
1 file changed, 2 insertions(+), 8 deletions(-)
diff --git a/drivers/usb/gadget/net2272.c b/drivers/usb/gadget/net2272.c
index d226058..635248f 100644
--- a/drivers/usb/gadget/net2272.c
+++ b/drivers/usb/gadget/net2272.c
@@ -2209,7 +2209,6 @@ net2272_remove(struct net2272 *dev)
free_irq(dev->irq, dev);
iounmap(dev->base_addr);
- device_unregister(&dev->gadget.dev);
device_remove_file(dev->dev, &dev_attr_registers);
dev_info(dev->dev, "unbind\n");
@@ -2236,11 +2235,11 @@ static struct net2272 *net2272_probe_init(struct device *dev, unsigned int irq)
ret->gadget.max_speed = USB_SPEED_HIGH;
/* the "gadget" abstracts/virtualizes the controller */
- dev_set_name(&ret->gadget.dev, "gadget");
ret->gadget.dev.parent = dev;
ret->gadget.dev.dma_mask = dev->dma_mask;
ret->gadget.dev.release = net2272_gadget_release;
ret->gadget.name = driver_name;
+ ret->gadget.register_my_device = true;
return ret;
}
@@ -2275,12 +2274,9 @@ net2272_probe_fin(struct net2272 *dev, unsigned int irqflags)
dma_mode_string());
dev_info(dev->dev, "version: %s\n", driver_vers);
- ret = device_register(&dev->gadget.dev);
- if (ret)
- goto err_irq;
ret = device_create_file(dev->dev, &dev_attr_registers);
if (ret)
- goto err_dev_reg;
+ goto err_irq;
ret = usb_add_gadget_udc(dev->dev, &dev->gadget);
if (ret)
@@ -2290,8 +2286,6 @@ net2272_probe_fin(struct net2272 *dev, unsigned int irqflags)
err_add_udc:
device_remove_file(dev->dev, &dev_attr_registers);
- err_dev_reg:
- device_unregister(&dev->gadget.dev);
err_irq:
free_irq(dev->irq, dev);
err:
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 23/32] usb: gadget: r8a66597-udc: let udc-core manage gadget->dev
From: Felipe Balbi @ 2013-01-24 15:46 UTC (permalink / raw)
To: Linux USB Mailing List
Cc: kgene.kim, eric.y.miao, kuninori.morimoto.gx, alexander.shishkin,
gregkh, yoshihiro.shimoda.uh, nicolas.ferre, linux-geode,
haojian.zhuang, Linux OMAP Mailing List, linux-samsung-soc,
Felipe Balbi, ben-linux, dahlmann.thomas, linux, linuxppc-dev,
linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
By simply setting a flag, we can drop some
boilerplate code.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/gadget/r8a66597-udc.c | 12 ++----------
1 file changed, 2 insertions(+), 10 deletions(-)
diff --git a/drivers/usb/gadget/r8a66597-udc.c b/drivers/usb/gadget/r8a66597-udc.c
index 5a80751..40ef4bd 100644
--- a/drivers/usb/gadget/r8a66597-udc.c
+++ b/drivers/usb/gadget/r8a66597-udc.c
@@ -1837,7 +1837,6 @@ static int __exit r8a66597_remove(struct platform_device *pdev)
clk_put(r8a66597->clk);
}
- device_unregister(&r8a66597->gadget.dev);
kfree(r8a66597);
return 0;
}
@@ -1915,17 +1914,12 @@ static int __init r8a66597_probe(struct platform_device *pdev)
r8a66597->irq_sense_low = irq_trigger == IRQF_TRIGGER_LOW;
r8a66597->gadget.ops = &r8a66597_gadget_ops;
- dev_set_name(&r8a66597->gadget.dev, "gadget");
r8a66597->gadget.max_speed = USB_SPEED_HIGH;
r8a66597->gadget.dev.parent = &pdev->dev;
r8a66597->gadget.dev.dma_mask = pdev->dev.dma_mask;
r8a66597->gadget.dev.release = pdev->dev.release;
r8a66597->gadget.name = udc_name;
- ret = device_register(&r8a66597->gadget.dev);
- if (ret < 0) {
- dev_err(&pdev->dev, "device_register failed\n");
- goto clean_up;
- }
+ r8a66597->gadget.register_my_device = true;
init_timer(&r8a66597->timer);
r8a66597->timer.function = r8a66597_timer;
@@ -1939,7 +1933,7 @@ static int __init r8a66597_probe(struct platform_device *pdev)
dev_err(&pdev->dev, "cannot get clock \"%s\"\n",
clk_name);
ret = PTR_ERR(r8a66597->clk);
- goto clean_up_dev;
+ goto clean_up;
}
clk_enable(r8a66597->clk);
}
@@ -2007,8 +2001,6 @@ clean_up2:
clk_disable(r8a66597->clk);
clk_put(r8a66597->clk);
}
-clean_up_dev:
- device_unregister(&r8a66597->gadget.dev);
clean_up:
if (r8a66597) {
if (r8a66597->sudmac_reg)
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 22/32] usb: gadget: pch_udc: let udc-core manage gadget->dev
From: Felipe Balbi @ 2013-01-24 15:46 UTC (permalink / raw)
To: Linux USB Mailing List
Cc: kgene.kim, eric.y.miao, kuninori.morimoto.gx, alexander.shishkin,
gregkh, yoshihiro.shimoda.uh, nicolas.ferre, linux-geode,
haojian.zhuang, Linux OMAP Mailing List, linux-samsung-soc,
Felipe Balbi, ben-linux, dahlmann.thomas, linux, linuxppc-dev,
linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
By simply setting a flag, we can drop some
boilerplate code.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/gadget/pch_udc.c | 10 +---------
1 file changed, 1 insertion(+), 9 deletions(-)
diff --git a/drivers/usb/gadget/pch_udc.c b/drivers/usb/gadget/pch_udc.c
index a787a8e..7032145 100644
--- a/drivers/usb/gadget/pch_udc.c
+++ b/drivers/usb/gadget/pch_udc.c
@@ -358,7 +358,6 @@ struct pch_udc_dev {
prot_stall:1,
irq_registered:1,
mem_region:1,
- registered:1,
suspended:1,
connected:1,
vbus_session:1,
@@ -3078,8 +3077,6 @@ static void pch_udc_remove(struct pci_dev *pdev)
pci_resource_len(pdev, PCH_UDC_PCI_BAR));
if (dev->active)
pci_disable_device(pdev);
- if (dev->registered)
- device_unregister(&dev->gadget.dev);
kfree(dev);
pci_set_drvdata(pdev, NULL);
}
@@ -3196,17 +3193,12 @@ static int pch_udc_probe(struct pci_dev *pdev,
if (retval)
goto finished;
- dev_set_name(&dev->gadget.dev, "gadget");
dev->gadget.dev.parent = &pdev->dev;
dev->gadget.dev.dma_mask = pdev->dev.dma_mask;
dev->gadget.dev.release = gadget_release;
dev->gadget.name = KBUILD_MODNAME;
dev->gadget.max_speed = USB_SPEED_HIGH;
-
- retval = device_register(&dev->gadget.dev);
- if (retval)
- goto finished;
- dev->registered = 1;
+ dev->gadget.register_my_device = true;
/* Put the device in disconnected state till a driver is bound */
pch_udc_set_disconnect(dev);
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 21/32] usb: gadget: net2280: let udc-core manage gadget->dev
From: Felipe Balbi @ 2013-01-24 15:45 UTC (permalink / raw)
To: Linux USB Mailing List
Cc: kgene.kim, eric.y.miao, kuninori.morimoto.gx, alexander.shishkin,
gregkh, yoshihiro.shimoda.uh, nicolas.ferre, linux-geode,
haojian.zhuang, Linux OMAP Mailing List, linux-samsung-soc,
Felipe Balbi, ben-linux, dahlmann.thomas, linux, linuxppc-dev,
linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
By simply setting a flag, we can drop some
boilerplate code.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/gadget/net2280.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/drivers/usb/gadget/net2280.c b/drivers/usb/gadget/net2280.c
index 708c0b5..630f715 100644
--- a/drivers/usb/gadget/net2280.c
+++ b/drivers/usb/gadget/net2280.c
@@ -2667,7 +2667,6 @@ static void net2280_remove (struct pci_dev *pdev)
pci_resource_len (pdev, 0));
if (dev->enabled)
pci_disable_device (pdev);
- device_unregister (&dev->gadget.dev);
device_remove_file (&pdev->dev, &dev_attr_registers);
pci_set_drvdata (pdev, NULL);
@@ -2699,11 +2698,11 @@ static int net2280_probe (struct pci_dev *pdev, const struct pci_device_id *id)
dev->gadget.max_speed = USB_SPEED_HIGH;
/* the "gadget" abstracts/virtualizes the controller */
- dev_set_name(&dev->gadget.dev, "gadget");
dev->gadget.dev.parent = &pdev->dev;
dev->gadget.dev.dma_mask = pdev->dev.dma_mask;
dev->gadget.dev.release = gadget_release;
dev->gadget.name = driver_name;
+ dev->gadget.register_my_device = true;
/* now all the pci goodies ... */
if (pci_enable_device (pdev) < 0) {
@@ -2811,8 +2810,6 @@ static int net2280_probe (struct pci_dev *pdev, const struct pci_device_id *id)
use_dma
? (use_dma_chaining ? "chaining" : "enabled")
: "disabled");
- retval = device_register (&dev->gadget.dev);
- if (retval) goto done;
retval = device_create_file (&pdev->dev, &dev_attr_registers);
if (retval) goto done;
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 19/32] usb: gadget: mv_udc_core: let udc-core manage gadget->dev
From: Felipe Balbi @ 2013-01-24 15:45 UTC (permalink / raw)
To: Linux USB Mailing List
Cc: kgene.kim, eric.y.miao, kuninori.morimoto.gx, alexander.shishkin,
gregkh, yoshihiro.shimoda.uh, nicolas.ferre, linux-geode,
haojian.zhuang, Linux OMAP Mailing List, linux-samsung-soc,
Felipe Balbi, ben-linux, dahlmann.thomas, linux, linuxppc-dev,
linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
By simply setting a flag, we can drop some
boilerplate code.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/gadget/mv_udc_core.c | 12 ++----------
1 file changed, 2 insertions(+), 10 deletions(-)
diff --git a/drivers/usb/gadget/mv_udc_core.c b/drivers/usb/gadget/mv_udc_core.c
index 67d72f9..60741af 100644
--- a/drivers/usb/gadget/mv_udc_core.c
+++ b/drivers/usb/gadget/mv_udc_core.c
@@ -2138,8 +2138,6 @@ static int mv_udc_remove(struct platform_device *pdev)
mv_udc_disable(udc);
- device_unregister(&udc->gadget.dev);
-
/* free dev, wait for the release() finished */
wait_for_completion(udc->done);
@@ -2311,15 +2309,11 @@ static int mv_udc_probe(struct platform_device *pdev)
udc->gadget.max_speed = USB_SPEED_HIGH; /* support dual speed */
/* the "gadget" abstracts/virtualizes the controller */
- dev_set_name(&udc->gadget.dev, "gadget");
udc->gadget.dev.parent = &pdev->dev;
udc->gadget.dev.dma_mask = pdev->dev.dma_mask;
udc->gadget.dev.release = gadget_release;
udc->gadget.name = driver_name; /* gadget name */
-
- retval = device_register(&udc->gadget.dev);
- if (retval)
- goto err_destroy_dma;
+ udc->gadget.register_my_device = true;
eps_init(udc);
@@ -2342,7 +2336,7 @@ static int mv_udc_probe(struct platform_device *pdev)
if (!udc->qwork) {
dev_err(&pdev->dev, "cannot create workqueue\n");
retval = -ENOMEM;
- goto err_unregister;
+ goto err_destroy_dma;
}
INIT_WORK(&udc->vbus_work, mv_udc_vbus_work);
@@ -2370,8 +2364,6 @@ static int mv_udc_probe(struct platform_device *pdev)
err_create_workqueue:
destroy_workqueue(udc->qwork);
-err_unregister:
- device_unregister(&udc->gadget.dev);
err_destroy_dma:
dma_pool_destroy(udc->dtd_pool);
err_free_dma:
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
* [RFC/PATCH 17/32] usb: gadget: mv_u3d_core: let udc-core manage gadget->dev
From: Felipe Balbi @ 2013-01-24 15:45 UTC (permalink / raw)
To: Linux USB Mailing List
Cc: kgene.kim, eric.y.miao, kuninori.morimoto.gx, alexander.shishkin,
gregkh, yoshihiro.shimoda.uh, nicolas.ferre, linux-geode,
haojian.zhuang, Linux OMAP Mailing List, linux-samsung-soc,
Felipe Balbi, ben-linux, dahlmann.thomas, linux, linuxppc-dev,
linux-arm-kernel
In-Reply-To: <1359042370-4358-1-git-send-email-balbi@ti.com>
By simply setting a flag, we can drop some
boilerplate code.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/usb/gadget/mv_u3d_core.c | 10 +---------
1 file changed, 1 insertion(+), 9 deletions(-)
diff --git a/drivers/usb/gadget/mv_u3d_core.c b/drivers/usb/gadget/mv_u3d_core.c
index b5cea27..565addc 100644
--- a/drivers/usb/gadget/mv_u3d_core.c
+++ b/drivers/usb/gadget/mv_u3d_core.c
@@ -1792,8 +1792,6 @@ static int mv_u3d_remove(struct platform_device *dev)
clk_put(u3d->clk);
- device_unregister(&u3d->gadget.dev);
-
platform_set_drvdata(dev, NULL);
kfree(u3d);
@@ -1957,15 +1955,11 @@ static int mv_u3d_probe(struct platform_device *dev)
u3d->gadget.speed = USB_SPEED_UNKNOWN; /* speed */
/* the "gadget" abstracts/virtualizes the controller */
- dev_set_name(&u3d->gadget.dev, "gadget");
u3d->gadget.dev.parent = &dev->dev;
u3d->gadget.dev.dma_mask = dev->dev.dma_mask;
u3d->gadget.dev.release = mv_u3d_gadget_release;
u3d->gadget.name = driver_name; /* gadget name */
-
- retval = device_register(&u3d->gadget.dev);
- if (retval)
- goto err_register_gadget_device;
+ u3d->gadget.register_my_device = true;
mv_u3d_eps_init(u3d);
@@ -1991,8 +1985,6 @@ static int mv_u3d_probe(struct platform_device *dev)
return 0;
err_unregister:
- device_unregister(&u3d->gadget.dev);
-err_register_gadget_device:
free_irq(u3d->irq, &dev->dev);
err_request_irq:
err_get_irq:
--
1.8.1.rc1.5.g7e0651a
^ permalink raw reply related
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox