Hi, I'm sending one more version of these patches to you before sending them to Greg. There are still some fixes coming that will conflict with patches in this series. Since I'm not in any hurry with these, I'll wait for those fixes in this case. The only change in this version is that I'm now checking that kmemdup did not fail in the first patch. Cover letter from v3: The broken conditions in the *_store() functions should now be fixed. Cover letter from v2: In this version there should be no more semantic changes. The original cover letter: This series moves the callback members from struct typec_capabilities to a new struct typec_operations. That removes the need for the drivers to keep a copy of the struct typec_capabilites if they don't need it, and struct typec_operations can probable always be constified. The change is small, however I think the code ends up being a bit more cleaner looking this way. Let me know if it's OK. thanks, Heikki Krogerus (9): usb: typec: Copy everything from struct typec_capability during registration usb: typec: Introduce typec_get_drvdata() usb: typec: Separate the operations vector usb: typec: tcpm: Start using struct typec_operations usb: typec: tps6598x: Start using struct typec_operations usb: typec: ucsi: Start using struct typec_operations usb: typec: hd3ss3220: Start using struct typec_operations usb: typec: Remove the callback members from struct typec_capability usb: typec: Remove unused members from struct typec_capability drivers/usb/typec/class.c | 42 ++++++++++++++++++++++-------- drivers/usb/typec/hd3ss3220.c | 24 +++++++++-------- drivers/usb/typec/tcpm/tcpm.c | 45 ++++++++++++++------------------ drivers/usb/typec/tps6598x.c | 49 +++++++++++++++++++---------------- drivers/usb/typec/ucsi/ucsi.c | 22 ++++++++-------- include/linux/usb/typec.h | 41 ++++++++++++++++------------- 6 files changed, 124 insertions(+), 99 deletions(-) -- 2.23.0