Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1463910
| From | Tal Shorer <tal.shorer@gmail.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH v3 0/8] usb: ulpi: remove "dev" field from struct ulpi_ops |
| Date | 2016-08-16 18:10 +0200 |
| Message-ID | <s6P69-5fK-3@gated-at.bofh.it> (permalink) |
| Organization | linux.* mail to news gateway |
struct ulpi_ops is defined as follows:
struct ulpi_ops {
struct device *dev;
int (*read)(struct ulpi_ops *ops, u8 addr);
int (*write)(struct ulpi_ops *ops, u8 addr, u8 val);
};
Upon calling ulpi_register_interface(), the struct device argument is
put inside the struct ulpi_ops argument's dev field. Later, when
calling the actual read()/write() operations, the struct ulpi_ops is
passed to them and they use the stored device to access whatever
private data they need.
This means that if one wishes to reuse the same oprations for multiple
interfaces (e.g if we have multiple instances of the same controller),
any but the last interface registered will not operate properly (and
the one that does work will be at the mercy of the others to not mess
it up).
I understand that barely any driver uses this bus right now, but I
suppose it's there to be used at some point. We might as well fix the
design here before we hit this bug.
This series fixes this by passing the given struct device directly to
the operation functions via ulpi->dev.parent in ulpi_read() and
ulpi_write(). It also changes the operations struct to be constant
since now nobody has a reason to modify it.
Changes from v1:
* Split the actual api change into multiple patch as per Felipe Balbi's
suggestion. The series now first adds the new api, then migrates
everything to use and only then removes the old api.
Changes from v2:
* Merge patches 2 and 3 (now patch 2)
* Merge patches 5 and 6 (now patch 4)
* Remove comment documenting the removed dev field in struct ulpi_ops
Tal Shorer (8):
usb: ulpi: move setting of ulpi->dev parent up in ulpi_register()
usb: ulpi: add new api functions, {read|write}_dev()
usb: dwc3: ulpi: use new api
usb: ulpi: remove calls to old api callbacks
usb: ulpi: rename operations {read|write}_dev to simply {read|write}
usb: ulpi: remove "dev" field from struct ulpi_ops
usb: ulpi: make ops struct constant
usb: dwc3: ulpi: make dwc3_ulpi_ops constant
drivers/usb/common/ulpi.c | 11 ++++++-----
drivers/usb/dwc3/ulpi.c | 10 +++++-----
include/linux/ulpi/driver.h | 2 +-
include/linux/ulpi/interface.h | 9 ++++-----
4 files changed, 16 insertions(+), 16 deletions(-)
--
2.7.4
Back to linux.kernel | Previous | Next — Next in thread | Find similar | Unroll thread
[PATCH v3 0/8] usb: ulpi: remove "dev" field from struct ulpi_ops Tal Shorer <tal.shorer@gmail.com> - 2016-08-16 18:10 +0200
[PATCH v3 1/8] usb: ulpi: move setting of ulpi->dev parent up in ulpi_register() Tal Shorer <tal.shorer@gmail.com> - 2016-08-16 18:10 +0200
Re: [PATCH v3 1/8] usb: ulpi: move setting of ulpi->dev parent up in ulpi_register() Heikki Krogerus <heikki.krogerus@linux.intel.com> - 2016-08-17 13:20 +0200
[PATCH v3 3/8] usb: dwc3: ulpi: use new api Tal Shorer <tal.shorer@gmail.com> - 2016-08-16 18:10 +0200
Re: [PATCH v3 3/8] usb: dwc3: ulpi: use new api Heikki Krogerus <heikki.krogerus@linux.intel.com> - 2016-08-17 13:20 +0200
[PATCH v3 5/8] usb: ulpi: rename operations {read|write}_dev to simply {read|write} Tal Shorer <tal.shorer@gmail.com> - 2016-08-16 18:10 +0200
Re: [PATCH v3 5/8] usb: ulpi: rename operations {read|write}_dev to simply {read|write} Heikki Krogerus <heikki.krogerus@linux.intel.com> - 2016-08-17 13:20 +0200
[PATCH v3 7/8] usb: ulpi: make ops struct constant Tal Shorer <tal.shorer@gmail.com> - 2016-08-16 18:10 +0200
Re: [PATCH v3 7/8] usb: ulpi: make ops struct constant Heikki Krogerus <heikki.krogerus@linux.intel.com> - 2016-08-17 13:20 +0200
[PATCH v3 4/8] usb: ulpi: remove calls to old api callbacks Tal Shorer <tal.shorer@gmail.com> - 2016-08-16 18:10 +0200
Re: [PATCH v3 4/8] usb: ulpi: remove calls to old api callbacks Heikki Krogerus <heikki.krogerus@linux.intel.com> - 2016-08-17 13:20 +0200
[PATCH v3 6/8] usb: ulpi: remove "dev" field from struct ulpi_ops Tal Shorer <tal.shorer@gmail.com> - 2016-08-16 18:10 +0200
Re: [PATCH v3 6/8] usb: ulpi: remove "dev" field from struct ulpi_ops Heikki Krogerus <heikki.krogerus@linux.intel.com> - 2016-08-17 13:20 +0200
[PATCH v3 8/8] usb: dwc3: ulpi: make dwc3_ulpi_ops constant Tal Shorer <tal.shorer@gmail.com> - 2016-08-16 18:10 +0200
Re: [PATCH v3 8/8] usb: dwc3: ulpi: make dwc3_ulpi_ops constant Heikki Krogerus <heikki.krogerus@linux.intel.com> - 2016-08-17 13:20 +0200
csiph-web