Lines Matching full:glue
2 Writing a MUSB Glue Layer
21 As a self-taught exercise I have written an MUSB glue layer for the
22 Ingenic JZ4740 SoC, modelled after the many MUSB glue layers in the
25 basics of the ``jz4740.c`` glue layer, explaining the different pieces and
26 what needs to be done in order to write your own device glue layer.
61 | aka "Glue Layer" |
68 As outlined above, the glue layer is actually the platform specific code
72 subsystem, the MUSB glue layer needs first to register itself with the
74 about which device the glue layer supports and which functions to call
80 a :c:type:`platform_driver` structure defined in the glue layer as::
92 device supported by this glue layer. In the current case it matches a
96 In order to register itself to the controller driver, the glue layer
115 Let's go through the steps of the probe function that leads the glue
129 struct jz4740_glue *glue;
133 glue = devm_kzalloc(&pdev->dev, sizeof(*glue), GFP_KERNEL);
134 if (!glue)
158 glue->dev = &pdev->dev;
159 glue->musb = musb;
160 glue->clk = clk;
169 The first few lines of the probe function allocate and assign the glue,
175 (line 18) the glue layer allocates the clock -- the ``devm_`` prefix
193 platform_set_drvdata(pdev, glue);
217 The first step is to pass the device data privately held by the glue
291 musb glue layer for a more complex controller hardware, you might need
314 This is the last part of the device registration process where the glue
324 struct jz4740_glue *glue = platform_get_drvdata(pdev);
326 platform_device_unregister(glue->musb);
327 clk_disable_unprepare(glue->clk);
342 registration, the glue layer is also responsible for handling the IRQs:
375 Here the glue layer mostly has to read the relevant hardware registers
402 The glue layer still needs to register the IRQ handler though. Remember
412 This instruction sets a pointer to the glue layer IRQ handler function,
422 In order to write an MUSB glue layer, you need to have some data
518 done, let's get back to the MUSB glue layer specific platform data in
540 First the glue layer configures some aspects of the controller driver
575 to write some code in the glue layer to work around some device specific
675 peripheral mode only. As a consequence, the glue layer masks these
688 Writing a Linux MUSB glue layer should be a more accessible task, as
691 The JZ4740 USB device controller being fairly simple, I hope its glue
693 current MUSB glue layers, this documentation should provide enough
701 my questions while I was writing the JZ4740 glue layer and for helping