From: "Noralf Trønnes" <noralf@tronnes.org> To: broonie@kernel.org, balbi@kernel.org, lee.jones@linaro.org Cc: linux-usb@vger.kernel.org, dri-devel@lists.freedesktop.org, "Noralf Trønnes" <noralf@tronnes.org> Subject: [RFC 0/9] Regmap over USB for Multifunction USB Device (gpio, display, ...) Date: Sun, 16 Feb 2020 18:21:08 +0100 [thread overview] Message-ID: <20200216172117.49832-1-noralf@tronnes.org> (raw) Hi, A while back I had the idea to turn a Raspberry Pi Zero into a $5 USB to HDMI/SDTV/DSI/DPI display adapter. Thinking about how to represent the display to the driver I realised that hardware use registers as API. And Linux does have a generic register abstraction: regmap. Furthermore this means that if I can do a regmap over USB implementation, it will be easy to do other functions like gpio, adc and others. After a few iterations trying to understand the USB subsystem and satisfying driver requirements, I now have something that looks promising. I'm sending out an early version hoping to get feedback especially on the core parts that handles regmap and interrupts. Overview: USB Host : USB Device : -------------- : ------------------ ---------- | mfd: mud | : | f_mud | ---------- | Driver | -------------- : | | | Driver | ---------- | regmap-usb | : | (mud_regmap) | ---------- -------------- : ------------------ I've attached 2 drivers: - gpio/pinctrl: is more or less finished - display: needs a lot more work USB3 device I've only tested this with usb2 devices (Pi, BBB) so I should get myself a usb3 gadget capable board. My searching didn't turn up much, so this seems to be quite rare. ROCK960 has USB 3.0 type C OTG but the price is $139 which is a bit expensive for this hobby project. Does anyone know of a cheap board? Noralf. Noralf Trønnes (9): regmap: Add USB support mfd: Add driver for Multifunction USB Device usb: gadget: function: Add Multifunction USB Device support pinctrl: Add Multifunction USB Device pinctrl driver usb: gadget: function: mud: Add gpio support regmap: Speed up _regmap_raw_write_impl() for large buffers drm: Add Multifunction USB Device display driver drm/client: Add drm_client_init_from_id() and drm_client_modeset_set() usb: gadget: function: mud: Add display support drivers/base/regmap/Kconfig | 8 +- drivers/base/regmap/Makefile | 1 + drivers/base/regmap/regmap-usb.c | 1026 ++++++++++++++++++ drivers/base/regmap/regmap.c | 10 +- drivers/gpu/drm/Kconfig | 2 + drivers/gpu/drm/Makefile | 1 + drivers/gpu/drm/drm_client.c | 37 + drivers/gpu/drm/drm_client_modeset.c | 52 + drivers/gpu/drm/mud/Kconfig | 18 + drivers/gpu/drm/mud/Makefile | 4 + drivers/gpu/drm/mud/mud_drm.c | 1198 ++++++++++++++++++++++ drivers/gpu/drm/mud/mud_drm.h | 137 +++ drivers/gpu/drm/mud/mud_drm_gadget.c | 889 ++++++++++++++++ drivers/mfd/Kconfig | 8 + drivers/mfd/Makefile | 1 + drivers/mfd/mud.c | 580 +++++++++++ drivers/pinctrl/Kconfig | 9 + drivers/pinctrl/Makefile | 1 + drivers/pinctrl/pinctrl-mud.c | 657 ++++++++++++ drivers/pinctrl/pinctrl-mud.h | 89 ++ drivers/usb/gadget/Kconfig | 36 + drivers/usb/gadget/function/Makefile | 6 + drivers/usb/gadget/function/f_mud.c | 913 +++++++++++++++++ drivers/usb/gadget/function/f_mud.h | 210 ++++ drivers/usb/gadget/function/f_mud_drm.c | 181 ++++ drivers/usb/gadget/function/f_mud_pins.c | 962 +++++++++++++++++ drivers/usb/gadget/function/mud_regmap.c | 936 +++++++++++++++++ include/drm/drm_client.h | 4 + include/linux/mfd/mud.h | 16 + include/linux/regmap.h | 23 + include/linux/regmap_usb.h | 97 ++ 31 files changed, 8107 insertions(+), 5 deletions(-) create mode 100644 drivers/base/regmap/regmap-usb.c create mode 100644 drivers/gpu/drm/mud/Kconfig create mode 100644 drivers/gpu/drm/mud/Makefile create mode 100644 drivers/gpu/drm/mud/mud_drm.c create mode 100644 drivers/gpu/drm/mud/mud_drm.h create mode 100644 drivers/gpu/drm/mud/mud_drm_gadget.c create mode 100644 drivers/mfd/mud.c create mode 100644 drivers/pinctrl/pinctrl-mud.c create mode 100644 drivers/pinctrl/pinctrl-mud.h create mode 100644 drivers/usb/gadget/function/f_mud.c create mode 100644 drivers/usb/gadget/function/f_mud.h create mode 100644 drivers/usb/gadget/function/f_mud_drm.c create mode 100644 drivers/usb/gadget/function/f_mud_pins.c create mode 100644 drivers/usb/gadget/function/mud_regmap.c create mode 100644 include/linux/mfd/mud.h create mode 100644 include/linux/regmap_usb.h -- 2.23.0
WARNING: multiple messages have this Message-ID (diff)
From: "Noralf Trønnes" <noralf@tronnes.org> To: broonie@kernel.org, balbi@kernel.org, lee.jones@linaro.org Cc: linux-usb@vger.kernel.org, dri-devel@lists.freedesktop.org Subject: [RFC 0/9] Regmap over USB for Multifunction USB Device (gpio, display, ...) Date: Sun, 16 Feb 2020 18:21:08 +0100 [thread overview] Message-ID: <20200216172117.49832-1-noralf@tronnes.org> (raw) Hi, A while back I had the idea to turn a Raspberry Pi Zero into a $5 USB to HDMI/SDTV/DSI/DPI display adapter. Thinking about how to represent the display to the driver I realised that hardware use registers as API. And Linux does have a generic register abstraction: regmap. Furthermore this means that if I can do a regmap over USB implementation, it will be easy to do other functions like gpio, adc and others. After a few iterations trying to understand the USB subsystem and satisfying driver requirements, I now have something that looks promising. I'm sending out an early version hoping to get feedback especially on the core parts that handles regmap and interrupts. Overview: USB Host : USB Device : -------------- : ------------------ ---------- | mfd: mud | : | f_mud | ---------- | Driver | -------------- : | | | Driver | ---------- | regmap-usb | : | (mud_regmap) | ---------- -------------- : ------------------ I've attached 2 drivers: - gpio/pinctrl: is more or less finished - display: needs a lot more work USB3 device I've only tested this with usb2 devices (Pi, BBB) so I should get myself a usb3 gadget capable board. My searching didn't turn up much, so this seems to be quite rare. ROCK960 has USB 3.0 type C OTG but the price is $139 which is a bit expensive for this hobby project. Does anyone know of a cheap board? Noralf. Noralf Trønnes (9): regmap: Add USB support mfd: Add driver for Multifunction USB Device usb: gadget: function: Add Multifunction USB Device support pinctrl: Add Multifunction USB Device pinctrl driver usb: gadget: function: mud: Add gpio support regmap: Speed up _regmap_raw_write_impl() for large buffers drm: Add Multifunction USB Device display driver drm/client: Add drm_client_init_from_id() and drm_client_modeset_set() usb: gadget: function: mud: Add display support drivers/base/regmap/Kconfig | 8 +- drivers/base/regmap/Makefile | 1 + drivers/base/regmap/regmap-usb.c | 1026 ++++++++++++++++++ drivers/base/regmap/regmap.c | 10 +- drivers/gpu/drm/Kconfig | 2 + drivers/gpu/drm/Makefile | 1 + drivers/gpu/drm/drm_client.c | 37 + drivers/gpu/drm/drm_client_modeset.c | 52 + drivers/gpu/drm/mud/Kconfig | 18 + drivers/gpu/drm/mud/Makefile | 4 + drivers/gpu/drm/mud/mud_drm.c | 1198 ++++++++++++++++++++++ drivers/gpu/drm/mud/mud_drm.h | 137 +++ drivers/gpu/drm/mud/mud_drm_gadget.c | 889 ++++++++++++++++ drivers/mfd/Kconfig | 8 + drivers/mfd/Makefile | 1 + drivers/mfd/mud.c | 580 +++++++++++ drivers/pinctrl/Kconfig | 9 + drivers/pinctrl/Makefile | 1 + drivers/pinctrl/pinctrl-mud.c | 657 ++++++++++++ drivers/pinctrl/pinctrl-mud.h | 89 ++ drivers/usb/gadget/Kconfig | 36 + drivers/usb/gadget/function/Makefile | 6 + drivers/usb/gadget/function/f_mud.c | 913 +++++++++++++++++ drivers/usb/gadget/function/f_mud.h | 210 ++++ drivers/usb/gadget/function/f_mud_drm.c | 181 ++++ drivers/usb/gadget/function/f_mud_pins.c | 962 +++++++++++++++++ drivers/usb/gadget/function/mud_regmap.c | 936 +++++++++++++++++ include/drm/drm_client.h | 4 + include/linux/mfd/mud.h | 16 + include/linux/regmap.h | 23 + include/linux/regmap_usb.h | 97 ++ 31 files changed, 8107 insertions(+), 5 deletions(-) create mode 100644 drivers/base/regmap/regmap-usb.c create mode 100644 drivers/gpu/drm/mud/Kconfig create mode 100644 drivers/gpu/drm/mud/Makefile create mode 100644 drivers/gpu/drm/mud/mud_drm.c create mode 100644 drivers/gpu/drm/mud/mud_drm.h create mode 100644 drivers/gpu/drm/mud/mud_drm_gadget.c create mode 100644 drivers/mfd/mud.c create mode 100644 drivers/pinctrl/pinctrl-mud.c create mode 100644 drivers/pinctrl/pinctrl-mud.h create mode 100644 drivers/usb/gadget/function/f_mud.c create mode 100644 drivers/usb/gadget/function/f_mud.h create mode 100644 drivers/usb/gadget/function/f_mud_drm.c create mode 100644 drivers/usb/gadget/function/f_mud_pins.c create mode 100644 drivers/usb/gadget/function/mud_regmap.c create mode 100644 include/linux/mfd/mud.h create mode 100644 include/linux/regmap_usb.h -- 2.23.0 _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
next reply other threads:[~2020-02-16 17:27 UTC|newest] Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-02-16 17:21 Noralf Trønnes [this message] 2020-02-16 17:21 ` [RFC 0/9] Regmap over USB for Multifunction USB Device (gpio, display, ...) Noralf Trønnes 2020-02-16 17:21 ` [RFC 1/9] regmap: Add USB support Noralf Trønnes 2020-02-16 17:21 ` Noralf Trønnes 2020-02-17 12:11 ` Mark Brown 2020-02-17 12:11 ` Mark Brown 2020-02-17 21:33 ` Noralf Trønnes 2020-02-17 21:33 ` Noralf Trønnes 2020-02-17 21:39 ` Mark Brown 2020-02-17 21:39 ` Mark Brown 2020-02-17 22:15 ` Noralf Trønnes 2020-02-17 22:15 ` Noralf Trønnes 2020-02-17 22:44 ` Mark Brown 2020-02-17 22:44 ` Mark Brown 2020-02-16 17:21 ` [RFC 2/9] mfd: Add driver for Multifunction USB Device Noralf Trønnes 2020-02-16 17:21 ` Noralf Trønnes 2020-02-27 9:09 ` Lee Jones 2020-02-27 9:09 ` Lee Jones 2020-02-29 13:26 ` Noralf Trønnes 2020-02-29 13:26 ` Noralf Trønnes 2020-02-29 16:02 ` Alan Stern 2020-02-29 16:02 ` Alan Stern 2020-02-16 17:21 ` [RFC 3/9] usb: gadget: function: Add Multifunction USB Device support Noralf Trønnes 2020-02-16 17:21 ` Noralf Trønnes 2020-02-16 17:21 ` [RFC 4/9] pinctrl: Add Multifunction USB Device pinctrl driver Noralf Trønnes 2020-02-16 17:21 ` Noralf Trønnes 2020-02-16 17:21 ` [RFC 5/9] usb: gadget: function: mud: Add gpio support Noralf Trønnes 2020-02-16 17:21 ` Noralf Trønnes 2020-02-16 17:21 ` [RFC 6/9] regmap: Speed up _regmap_raw_write_impl() for large buffers Noralf Trønnes 2020-02-16 17:21 ` Noralf Trønnes 2020-02-17 12:15 ` Mark Brown 2020-02-17 12:15 ` Mark Brown 2020-02-16 17:21 ` [RFC 7/9] drm: Add Multifunction USB Device display driver Noralf Trønnes 2020-02-16 17:21 ` Noralf Trønnes 2020-02-16 17:21 ` [RFC 8/9] drm/client: Add drm_client_init_from_id() and drm_client_modeset_set() Noralf Trønnes 2020-02-16 17:21 ` Noralf Trønnes 2020-02-17 9:38 ` Daniel Vetter 2020-02-17 9:38 ` Daniel Vetter 2020-02-23 17:43 ` Noralf Trønnes 2020-02-23 17:43 ` Noralf Trønnes 2020-02-23 20:59 ` Daniel Vetter 2020-02-23 20:59 ` Daniel Vetter 2020-02-16 17:21 ` [RFC 9/9] usb: gadget: function: mud: Add display support Noralf Trønnes 2020-02-16 17:21 ` Noralf Trønnes 2020-02-17 9:40 ` [RFC 0/9] Regmap over USB for Multifunction USB Device (gpio, display, ...) Daniel Vetter 2020-02-17 9:40 ` Daniel Vetter 2020-02-17 10:32 ` Neil Armstrong 2020-02-17 10:32 ` Neil Armstrong 2020-02-17 14:05 ` Noralf Trønnes 2020-02-17 14:05 ` Noralf Trønnes 2020-02-18 20:57 ` Andy Shevchenko 2020-02-18 20:57 ` Andy Shevchenko 2020-02-18 21:31 ` Noralf Trønnes 2020-02-18 21:31 ` Noralf Trønnes
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=20200216172117.49832-1-noralf@tronnes.org \ --to=noralf@tronnes.org \ --cc=balbi@kernel.org \ --cc=broonie@kernel.org \ --cc=dri-devel@lists.freedesktop.org \ --cc=lee.jones@linaro.org \ --cc=linux-usb@vger.kernel.org \ /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: linkBe 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.