Commit c6b48dad authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'usb-5.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb

Pull USB updates from Greg KH:
 "Here is the big set of USB patches for 5.4-rc1.

  Two major chunks of code are moving out of the tree and into the
  staging directory, uwb and wusb (wireless USB support), because there
  are no devices that actually use this protocol anymore, and what we
  have today probably doesn't work at all given that the maintainers
  left many many years ago. So move it to staging where it will be
  removed in a few releases if no one screams.

  Other than that, lots of little things. The usual gadget and xhci and
  usb serial driver updates, along with a bunch of sysfs file cleanups
  due to the driver core changes to support that. Nothing really major,
  just constant forward progress.

  All of these have been in linux-next for a while with no reported
  issues"

* tag 'usb-5.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (159 commits)
  USB: usbcore: Fix slab-out-of-bounds bug during device reset
  usb: cdns3: Remove redundant dev_err call in cdns3_probe()
  USB: rio500: Fix lockdep violation
  USB: rio500: simplify locking
  usb: mtu3: register a USB Role Switch for dual role mode
  usb: common: add USB GPIO based connection detection driver
  usb: common: create Kconfig file
  usb: roles: get usb-role-switch from parent
  usb: roles: Add fwnode_usb_role_switch_get() function
  device connection: Add fwnode_connection_find_match()
  usb: roles: Introduce stubs for the exiting functions in role.h
  dt-bindings: usb: mtu3: add properties about USB Role Switch
  dt-bindings: usb: add binding for USB GPIO based connection detection driver
  dt-bindings: connector: add optional properties for Type-B
  dt-binding: usb: add usb-role-switch property
  usbip: Implement SG support to vhci-hcd and stub driver
  usb: roles: intel: Enable static DRD mode for role switch
  xhci-ext-caps.c: Add property to disable Intel SW switch
  usb: dwc3: remove generic PHY calibrate() calls
  usb: core: phy: add support for PHY calibration
  ...
parents 1f7d290a fb9617ed
...@@ -17,6 +17,20 @@ Optional properties: ...@@ -17,6 +17,20 @@ Optional properties:
- self-powered: Set this property if the usb device that has its own power - self-powered: Set this property if the usb device that has its own power
source. source.
Optional properties for usb-b-connector:
- id-gpios: an input gpio for USB ID pin.
- vbus-gpios: an input gpio for USB VBUS pin, used to detect presence of
VBUS 5V.
see gpio/gpio.txt.
- vbus-supply: a phandle to the regulator for USB VBUS if needed when host
mode or dual role mode is supported.
Particularly, if use an output GPIO to control a VBUS regulator, should
model it as a regulator.
see regulator/fixed-regulator.yaml
- pinctrl-names : a pinctrl state named "default" is optional
- pinctrl-0 : pin control group
see pinctrl/pinctrl-bindings.txt
Optional properties for usb-c-connector: Optional properties for usb-c-connector:
- power-role: should be one of "source", "sink" or "dual"(DRP) if typec - power-role: should be one of "source", "sink" or "dual"(DRP) if typec
connector has power support. connector has power support.
......
Binding for the Cadence USBSS-DRD controller
Required properties:
- reg: Physical base address and size of the controller's register areas.
Controller has 3 different regions:
- HOST registers area
- DEVICE registers area
- OTG/DRD registers area
- reg-names - register memory area names:
"xhci" - for HOST registers space
"dev" - for DEVICE registers space
"otg" - for OTG/DRD registers space
- compatible: Should contain: "cdns,usb3"
- interrupts: Interrupts used by cdns3 controller:
"host" - interrupt used by XHCI driver.
"peripheral" - interrupt used by device driver
"otg" - interrupt used by DRD/OTG part of driver
Optional properties:
- maximum-speed : valid arguments are "super-speed", "high-speed" and
"full-speed"; refer to usb/generic.txt
- dr_mode: Should be one of "host", "peripheral" or "otg".
- phys: reference to the USB PHY
- phy-names: from the *Generic PHY* bindings;
Supported names are:
- cdns3,usb2-phy
- cdns3,usb3-phy
- cdns,on-chip-buff-size : size of memory intended as internal memory for endpoints
buffers expressed in KB
Example:
usb@f3000000 {
compatible = "cdns,usb3";
interrupts = <GIC_USB_IRQ 7 IRQ_TYPE_LEVEL_HIGH>,
<GIC_USB_IRQ 7 IRQ_TYPE_LEVEL_HIGH>,
<GIC_USB_IRQ 8 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "host", "peripheral", "otg";
reg = <0xf3000000 0x10000>, /* memory area for HOST registers */
<0xf3010000 0x10000>, /* memory area for DEVICE registers */
<0xf3020000 0x10000>; /* memory area for OTG/DRD registers */
reg-names = "xhci", "dev", "otg";
phys = <&usb2_phy>, <&usb3_phy>;
phy-names = "cdns3,usb2-phy", "cnds3,usb3-phy";
};
...@@ -10,6 +10,7 @@ Required properties: ...@@ -10,6 +10,7 @@ Required properties:
"fsl,imx6sx-usb" "fsl,imx6sx-usb"
"fsl,imx6ul-usb" "fsl,imx6ul-usb"
"fsl,imx7d-usb" "fsl,imx7d-usb"
"fsl,imx7ulp-usb"
"lsi,zevio-usb" "lsi,zevio-usb"
"qcom,ci-hdrc" "qcom,ci-hdrc"
"chipidea,usb2" "chipidea,usb2"
......
...@@ -12,13 +12,11 @@ Required properties: ...@@ -12,13 +12,11 @@ Required properties:
- interrupts: interrupt number to the cpu. - interrupts: interrupt number to the cpu.
- clocks: from common clock binding: handle to usb clock. - clocks: from common clock binding: handle to usb clock.
- clock-names: from common clock binding: Shall be "usbhost". - clock-names: from common clock binding: Shall be "usbhost".
- port: if in the SoC there are EHCI phys, they should be listed here. - phys: from the *Generic PHY* bindings; array specifying phy(s) used
One phy per port. Each port should have following entries: by the root port.
- reg: port number on EHCI controller, e.g - phy-names: from the *Generic PHY* bindings; array of the names for
On Exynos5250, port 0 is USB2.0 otg phy each phy for the root ports, must be a subset of the following:
port 1 is HSIC phy0 "host", "hsic0", "hsic1".
port 2 is HSIC phy1
- phys: from the *Generic PHY* bindings; specifying phy used by port.
Optional properties: Optional properties:
- samsung,vbus-gpio: if present, specifies the GPIO that - samsung,vbus-gpio: if present, specifies the GPIO that
...@@ -35,12 +33,8 @@ Example: ...@@ -35,12 +33,8 @@ Example:
clocks = <&clock 285>; clocks = <&clock 285>;
clock-names = "usbhost"; clock-names = "usbhost";
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
phys = <&usb2phy 1>; phys = <&usb2phy 1>;
}; phy-names = "host";
}; };
OHCI OHCI
...@@ -52,13 +46,11 @@ Required properties: ...@@ -52,13 +46,11 @@ Required properties:
- interrupts: interrupt number to the cpu. - interrupts: interrupt number to the cpu.
- clocks: from common clock binding: handle to usb clock. - clocks: from common clock binding: handle to usb clock.
- clock-names: from common clock binding: Shall be "usbhost". - clock-names: from common clock binding: Shall be "usbhost".
- port: if in the SoC there are OHCI phys, they should be listed here. - phys: from the *Generic PHY* bindings; array specifying phy(s) used
One phy per port. Each port should have following entries: by the root port.
- reg: port number on OHCI controller, e.g - phy-names: from the *Generic PHY* bindings; array of the names for
On Exynos5250, port 0 is USB2.0 otg phy each phy for the root ports, must be a subset of the following:
port 1 is HSIC phy0 "host", "hsic0", "hsic1".
port 2 is HSIC phy1
- phys: from the *Generic PHY* bindings, specifying phy used by port.
Example: Example:
usb@12120000 { usb@12120000 {
...@@ -69,13 +61,8 @@ Example: ...@@ -69,13 +61,8 @@ Example:
clocks = <&clock 285>; clocks = <&clock 285>;
clock-names = "usbhost"; clock-names = "usbhost";
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
phys = <&usb2phy 1>; phys = <&usb2phy 1>;
}; phy-names = "host";
}; };
DWC3 DWC3
......
...@@ -11,13 +11,6 @@ Required sub-node: ...@@ -11,13 +11,6 @@ Required sub-node:
Documentation/devicetree/bindings/connector/usb-connector.txt Documentation/devicetree/bindings/connector/usb-connector.txt
Deprecated properties :
- fcs,max-sink-microvolt : Maximum sink voltage accepted by port controller
- fcs,max-sink-microamp : Maximum sink current accepted by port controller
- fcs,max-sink-microwatt : Maximum sink power accepted by port controller
- fcs,operating-sink-microwatt : Minimum amount of power accepted from a sink
when negotiating
Example: Example:
......
...@@ -30,6 +30,10 @@ Optional properties: ...@@ -30,6 +30,10 @@ Optional properties:
optional for OTG device. optional for OTG device.
- adp-disable: tells OTG controllers we want to disable OTG ADP, ADP is - adp-disable: tells OTG controllers we want to disable OTG ADP, ADP is
optional for OTG device. optional for OTG device.
- usb-role-switch: boolean, indicates that the device is capable of assigning
the USB data role (USB host or USB device) for a given
USB connector, such as Type-C, Type-B(micro).
see connector/usb-connector.txt.
This is an attribute to a USB controller such as: This is an attribute to a USB controller such as:
......
...@@ -30,7 +30,8 @@ Required properties: ...@@ -30,7 +30,8 @@ Required properties:
the following ones are optional: the following ones are optional:
"ref_ck": reference clock used by low power mode etc, "ref_ck": reference clock used by low power mode etc,
"mcu_ck": mcu_bus clock for register access, "mcu_ck": mcu_bus clock for register access,
"dma_ck": dma_bus clock for data transfer by DMA "dma_ck": dma_bus clock for data transfer by DMA,
"xhci_ck": controller clock
- phys : see usb-hcd.txt in the current directory - phys : see usb-hcd.txt in the current directory
...@@ -100,7 +101,7 @@ Required properties: ...@@ -100,7 +101,7 @@ Required properties:
- clocks : a list of phandle + clock-specifier pairs, one for each - clocks : a list of phandle + clock-specifier pairs, one for each
entry in clock-names entry in clock-names
- clock-names : must contain "sys_ck", and the following ones are optional: - clock-names : must contain "sys_ck", and the following ones are optional:
"ref_ck", "mcu_ck" and "dma_ck" "ref_ck", "mcu_ck" and "dma_ck", "xhci_ck"
Optional properties: Optional properties:
- vbus-supply : reference to the VBUS regulator; - vbus-supply : reference to the VBUS regulator;
......
...@@ -16,7 +16,7 @@ Required properties: ...@@ -16,7 +16,7 @@ Required properties:
entry in clock-names entry in clock-names
- clock-names : must contain "sys_ck" for clock of controller, - clock-names : must contain "sys_ck" for clock of controller,
the following clocks are optional: the following clocks are optional:
"ref_ck", "mcu_ck" and "dam_ck"; "ref_ck", "mcu_ck" and "dma_ck";
- phys : see usb-hcd.txt in the current directory - phys : see usb-hcd.txt in the current directory
- dr_mode : should be one of "host", "peripheral" or "otg", - dr_mode : should be one of "host", "peripheral" or "otg",
refer to usb/generic.txt refer to usb/generic.txt
...@@ -28,8 +28,13 @@ Optional properties: ...@@ -28,8 +28,13 @@ Optional properties:
parent's address space parent's address space
- extcon : external connector for vbus and idpin changes detection, needed - extcon : external connector for vbus and idpin changes detection, needed
when supports dual-role mode. when supports dual-role mode.
it's considered valid for compatibility reasons, not allowed for
new bindings, and use "usb-role-switch" property instead.
- vbus-supply : reference to the VBUS regulator, needed when supports - vbus-supply : reference to the VBUS regulator, needed when supports
dual-role mode. dual-role mode.
it's considered valid for compatibility reasons, not allowed for
new bindings, and put into a usb-connector node.
see connector/usb-connector.txt.
- pinctrl-names : a pinctrl state named "default" is optional, and need be - pinctrl-names : a pinctrl state named "default" is optional, and need be
defined if auto drd switch is enabled, that means the property dr_mode defined if auto drd switch is enabled, that means the property dr_mode
is set as "otg", and meanwhile the property "mediatek,enable-manual-drd" is set as "otg", and meanwhile the property "mediatek,enable-manual-drd"
...@@ -39,6 +44,8 @@ Optional properties: ...@@ -39,6 +44,8 @@ Optional properties:
- maximum-speed : valid arguments are "super-speed", "high-speed" and - maximum-speed : valid arguments are "super-speed", "high-speed" and
"full-speed"; refer to usb/generic.txt "full-speed"; refer to usb/generic.txt
- usb-role-switch : use USB Role Switch to support dual-role switch, but
not extcon; see usb/generic.txt.
- enable-manual-drd : supports manual dual-role switch via debugfs; usually - enable-manual-drd : supports manual dual-role switch via debugfs; usually
used when receptacle is TYPE-A and also wants to support dual-role used when receptacle is TYPE-A and also wants to support dual-role
mode. mode.
...@@ -61,6 +68,9 @@ The xhci should be added as subnode to mtu3 as shown in the following example ...@@ -61,6 +68,9 @@ The xhci should be added as subnode to mtu3 as shown in the following example
if host mode is enabled. The DT binding details of xhci can be found in: if host mode is enabled. The DT binding details of xhci can be found in:
Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.txt Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.txt
The port would be added as subnode if use "usb-role-switch" property.
see graph.txt
Example: Example:
ssusb: usb@11271000 { ssusb: usb@11271000 {
compatible = "mediatek,mt8173-mtu3"; compatible = "mediatek,mt8173-mtu3";
......
USB GPIO Based Connection Detection
This is typically used to switch dual role mode from the USB ID pin connected
to an input GPIO, and also used to enable/disable device mode from the USB
Vbus pin connected to an input GPIO.
Required properties:
- compatible : should include "gpio-usb-b-connector" and "usb-b-connector".
- id-gpios, vbus-gpios : input gpios, either one of them must be present,
and both can be present as well.
see connector/usb-connector.txt
Optional properties:
- vbus-supply : can be present if needed when supports dual role mode.
see connector/usb-connector.txt
- Sub-nodes:
- port : can be present.
see graph.txt
Example:
&mtu3 {
connector {
compatible = "gpio-usb-b-connector", "usb-b-connector";
type = "micro";
id-gpios = <&pio 12 GPIO_ACTIVE_HIGH>;
vbus-supply = <&usb_p0_vbus>;
};
};
...@@ -7,6 +7,7 @@ Required properties: ...@@ -7,6 +7,7 @@ Required properties:
"fsl,vf610-usbmisc" for Vybrid vf610 "fsl,vf610-usbmisc" for Vybrid vf610
"fsl,imx6sx-usbmisc" for imx6sx "fsl,imx6sx-usbmisc" for imx6sx
"fsl,imx7d-usbmisc" for imx7d "fsl,imx7d-usbmisc" for imx7d
"fsl,imx7ulp-usbmisc" for imx7ulp
- reg: Should contain registers location and length - reg: Should contain registers location and length
Examples: Examples:
......
...@@ -3797,14 +3797,9 @@ F: scripts/sign-file.c ...@@ -3797,14 +3797,9 @@ F: scripts/sign-file.c
F: scripts/extract-cert.c F: scripts/extract-cert.c
CERTIFIED WIRELESS USB (WUSB) SUBSYSTEM: CERTIFIED WIRELESS USB (WUSB) SUBSYSTEM:
L: linux-usb@vger.kernel.org L: devel@driverdev.osuosl.org
S: Orphan S: Obsolete
F: Documentation/usb/wusb-design-overview.rst F: drivers/staging/wusbcore/
F: Documentation/usb/wusb-cbaf
F: drivers/usb/host/hwa-hc.c
F: drivers/usb/host/whci/
F: drivers/usb/wusbcore/
F: include/linux/usb/wusb*
CFAG12864B LCD DRIVER CFAG12864B LCD DRIVER
M: Miguel Ojeda Sandonis <miguel.ojeda.sandonis@gmail.com> M: Miguel Ojeda Sandonis <miguel.ojeda.sandonis@gmail.com>
...@@ -16500,11 +16495,9 @@ F: drivers/usb/common/ulpi.c ...@@ -16500,11 +16495,9 @@ F: drivers/usb/common/ulpi.c
F: include/linux/ulpi/ F: include/linux/ulpi/
ULTRA-WIDEBAND (UWB) SUBSYSTEM: ULTRA-WIDEBAND (UWB) SUBSYSTEM:
L: linux-usb@vger.kernel.org L: devel@driverdev.osuosl.org
S: Orphan S: Obsolete
F: drivers/uwb/ F: drivers/staging/uwb/
F: include/linux/uwb.h
F: include/linux/uwb/
UNICODE SUBSYSTEM: UNICODE SUBSYSTEM:
M: Gabriel Krisman Bertazi <krisman@collabora.com> M: Gabriel Krisman Bertazi <krisman@collabora.com>
......
...@@ -380,23 +380,8 @@ ehci: ehci@12580000 { ...@@ -380,23 +380,8 @@ ehci: ehci@12580000 {
clocks = <&clock CLK_USB_HOST>; clocks = <&clock CLK_USB_HOST>;
clock-names = "usbhost"; clock-names = "usbhost";
status = "disabled"; status = "disabled";
#address-cells = <1>; phys = <&exynos_usbphy 1>, <&exynos_usbphy 2>, <&exynos_usbphy 3>;
#size-cells = <0>; phy-names = "host", "hsic0", "hsic1";
port@0 {
reg = <0>;
phys = <&exynos_usbphy 1>;
status = "disabled";
};
port@1 {
reg = <1>;
phys = <&exynos_usbphy 2>;
status = "disabled";
};
port@2 {
reg = <2>;
phys = <&exynos_usbphy 3>;
status = "disabled";
};
}; };
ohci: ohci@12590000 { ohci: ohci@12590000 {
...@@ -406,13 +391,8 @@ ohci: ohci@12590000 { ...@@ -406,13 +391,8 @@ ohci: ohci@12590000 {
clocks = <&clock CLK_USB_HOST>; clocks = <&clock CLK_USB_HOST>;
clock-names = "usbhost"; clock-names = "usbhost";
status = "disabled"; status = "disabled";
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
phys = <&exynos_usbphy 1>; phys = <&exynos_usbphy 1>;
status = "disabled"; phy-names = "host";
};
}; };
gpu: gpu@13000000 { gpu: gpu@13000000 {
......
...@@ -204,9 +204,8 @@ &cpu0 { ...@@ -204,9 +204,8 @@ &cpu0 {
&ehci { &ehci {
status = "okay"; status = "okay";
port@0 { phys = <&exynos_usbphy 1>;
status = "okay"; phy-names = "host";
};
}; };
&exynos_usbphy { &exynos_usbphy {
...@@ -520,9 +519,6 @@ &mixer { ...@@ -520,9 +519,6 @@ &mixer {
&ohci { &ohci {
status = "okay"; status = "okay";
port@0 {
status = "okay";
};
}; };
&pinctrl_1 { &pinctrl_1 {
......
...@@ -146,13 +146,8 @@ &ehci { ...@@ -146,13 +146,8 @@ &ehci {
/* In order to reset USB ethernet */ /* In order to reset USB ethernet */
samsung,vbus-gpio = <&gpc0 1 GPIO_ACTIVE_HIGH>; samsung,vbus-gpio = <&gpc0 1 GPIO_ACTIVE_HIGH>;
port@0 { phys = <&exynos_usbphy 1>, <&exynos_usbphy 3>;
status = "okay"; phy-names = "host", "hsic1";
};
port@2 {
status = "okay";
};
}; };
&exynos_usbphy { &exynos_usbphy {
......
...@@ -105,12 +105,8 @@ &usb3503 { ...@@ -105,12 +105,8 @@ &usb3503 {
}; };
&ehci { &ehci {
port@1 { phys = <&exynos_usbphy 2>, <&exynos_usbphy 3>;
status = "okay"; phy-names = "hsic0", "hsic1";
};
port@2 {
status = "okay";
};
}; };
&sound { &sound {
......
...@@ -72,9 +72,8 @@ &buck8_reg { ...@@ -72,9 +72,8 @@ &buck8_reg {
}; };
&ehci { &ehci {
port@1 { phys = <&exynos_usbphy 2>;
status = "okay"; phy-names = "hsic0";
};
}; };
&mshc_0 { &mshc_0 {
......
...@@ -88,13 +88,8 @@ &exynos_usbphy { ...@@ -88,13 +88,8 @@ &exynos_usbphy {
&ehci { &ehci {
samsung,vbus-gpio = <&gpx3 5 1>; samsung,vbus-gpio = <&gpx3 5 1>;
status = "okay"; status = "okay";
phys = <&exynos_usbphy 2>, <&exynos_usbphy 3>;
port@1 { phy-names = "hsic0", "hsic1";
status = "okay";
};
port@2 {
status = "okay";
};
}; };
&fimd { &fimd {
......
...@@ -665,12 +665,8 @@ ehci: usb@12110000 { ...@@ -665,12 +665,8 @@ ehci: usb@12110000 {
clocks = <&clock CLK_USB2>; clocks = <&clock CLK_USB2>;
clock-names = "usbhost"; clock-names = "usbhost";
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
phys = <&usb2_phy_gen 1>; phys = <&usb2_phy_gen 1>;
}; phy-names = "host";
}; };
ohci: usb@12120000 { ohci: usb@12120000 {
...@@ -680,12 +676,8 @@ ohci: usb@12120000 { ...@@ -680,12 +676,8 @@ ohci: usb@12120000 {
clocks = <&clock CLK_USB2>; clocks = <&clock CLK_USB2>;
clock-names = "usbhost"; clock-names = "usbhost";
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
phys = <&usb2_phy_gen 1>; phys = <&usb2_phy_gen 1>;
}; phy-names = "host";
}; };
usb2_phy_gen: phy@12130000 { usb2_phy_gen: phy@12130000 {
......
...@@ -189,26 +189,16 @@ usbhost2: usb@12110000 { ...@@ -189,26 +189,16 @@ usbhost2: usb@12110000 {
compatible = "samsung,exynos4210-ehci"; compatible = "samsung,exynos4210-ehci";
reg = <0x12110000 0x100>; reg = <0x12110000 0x100>;
interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
phys = <&usb2_phy 1>; phys = <&usb2_phy 1>;
}; phy-names = "host";
}; };
usbhost1: usb@12120000 { usbhost1: usb@12120000 {
compatible = "samsung,exynos4210-ohci"; compatible = "samsung,exynos4210-ohci";
reg = <0x12120000 0x100>; reg = <0x12120000 0x100>;
interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
phys = <&usb2_phy 1>; phys = <&usb2_phy 1>;
}; phy-names = "host";
}; };
usb2_phy: phy@12130000 { usb2_phy: phy@12130000 {
......
...@@ -79,12 +79,3 @@ void arch_sync_dma_for_device(struct device *dev, phys_addr_t handle, ...@@ -79,12 +79,3 @@ void arch_sync_dma_for_device(struct device *dev, phys_addr_t handle,
break; break;
} }
} }
void arch_setup_pdev_archdata(struct platform_device *pdev)
{
if (pdev->dev.coherent_dma_mask == DMA_MASK_NONE &&
pdev->dev.dma_mask == NULL) {
pdev->dev.coherent_dma_mask = DMA_BIT_MASK(32);
pdev->dev.dma_mask = &pdev->dev.coherent_dma_mask;
}
}
...@@ -778,12 +778,6 @@ void ppc_printk_progress(char *s, unsigned short hex) ...@@ -778,12 +778,6 @@ void ppc_printk_progress(char *s, unsigned short hex)
pr_info("%s\n", s); pr_info("%s\n", s);
} }
void arch_setup_pdev_archdata(struct platform_device *pdev)
{
pdev->archdata.dma_mask = DMA_BIT_MASK(32);
pdev->dev.dma_mask = &pdev->archdata.dma_mask;
}
static __init void print_system_info(void) static __init void print_system_info(void)
{ {
pr_info("-----------------------------------------------------\n"); pr_info("-----------------------------------------------------\n");
......
...@@ -527,7 +527,6 @@ static int __init ap325rxa_devices_setup(void) ...@@ -527,7 +527,6 @@ static int __init ap325rxa_devices_setup(void)
/* Initialize CEU platform device separately to map memory first */ /* Initialize CEU platform device separately to map memory first */
device_initialize(&ap325rxa_ceu_device.dev); device_initialize(&ap325rxa_ceu_device.dev);
arch_setup_pdev_archdata(&ap325rxa_ceu_device);
dma_declare_coherent_memory(&ap325rxa_ceu_device.dev, dma_declare_coherent_memory(&ap325rxa_ceu_device.dev,
ceu_dma_membase, ceu_dma_membase, ceu_dma_membase, ceu_dma_membase,
ceu_dma_membase + CEU_BUFFER_MEMORY_SIZE - 1); ceu_dma_membase + CEU_BUFFER_MEMORY_SIZE - 1);
......
...@@ -1440,7 +1440,6 @@ static int __init arch_setup(void) ...@@ -1440,7 +1440,6 @@ static int __init arch_setup(void)
/* Initialize CEU platform devices separately to map memory first */ /* Initialize CEU platform devices separately to map memory first */
device_initialize(&ecovec_ceu_devices[0]->dev); device_initialize(&ecovec_ceu_devices[0]->dev);
arch_setup_pdev_archdata(ecovec_ceu_devices[0]);
dma_declare_coherent_memory(&ecovec_ceu_devices[0]->dev, dma_declare_coherent_memory(&ecovec_ceu_devices[0]->dev,
ceu0_dma_membase, ceu0_dma_membase, ceu0_dma_membase, ceu0_dma_membase,
ceu0_dma_membase + ceu0_dma_membase +
...@@ -1448,7 +1447,6 @@ static int __init arch_setup(void) ...@@ -1448,7 +1447,6 @@ static int __init arch_setup(void)
platform_device_add(ecovec_ceu_devices[0]); platform_device_add(ecovec_ceu_devices[0]);
device_initialize(&ecovec_ceu_devices[1]->dev); device_initialize(&ecovec_ceu_devices[1]->dev);
arch_setup_pdev_archdata(ecovec_ceu_devices[1]);
dma_declare_coherent_memory(&ecovec_ceu_devices[1]->dev, dma_declare_coherent_memory(&ecovec_ceu_devices[1]->dev,
ceu1_dma_membase, ceu1_dma_membase, ceu1_dma_membase, ceu1_dma_membase,
ceu1_dma_membase + ceu1_dma_membase +
......
...@@ -601,7 +601,6 @@ static int __init kfr2r09_devices_setup(void) ...@@ -601,7 +601,6 @@ static int __init kfr2r09_devices_setup(void)
/* Initialize CEU platform device separately to map memory first */ /* Initialize CEU platform device separately to map memory first */
device_initialize(&kfr2r09_ceu_device.dev); device_initialize(&kfr2r09_ceu_device.dev);
arch_setup_pdev_archdata(&kfr2r09_ceu_device);
dma_declare_coherent_memory(&kfr2r09_ceu_device.dev, dma_declare_coherent_memory(&kfr2r09_ceu_device.dev,
ceu_dma_membase, ceu_dma_membase, ceu_dma_membase, ceu_dma_membase,
ceu_dma_membase + CEU_BUFFER_MEMORY_SIZE - 1); ceu_dma_membase + CEU_BUFFER_MEMORY_SIZE - 1);
......
...@@ -602,7 +602,6 @@ static int __init migor_devices_setup(void) ...@@ -602,7 +602,6 @@ static int __init migor_devices_setup(void)
/* Initialize CEU platform device separately to map memory first */ /* Initialize CEU platform device separately to map memory first */
device_initialize(&migor_ceu_device.dev); device_initialize(&migor_ceu_device.dev);
arch_setup_pdev_archdata(&migor_ceu_device);
dma_declare_coherent_memory(&migor_ceu_device.dev, dma_declare_coherent_memory(&migor_ceu_device.dev,
ceu_dma_membase, ceu_dma_membase, ceu_dma_membase, ceu_dma_membase,
ceu_dma_membase + CEU_BUFFER_MEMORY_SIZE - 1); ceu_dma_membase + CEU_BUFFER_MEMORY_SIZE - 1);
......
...@@ -937,7 +937,6 @@ static int __init devices_setup(void) ...@@ -937,7 +937,6 @@ static int __init devices_setup(void)
/* Initialize CEU platform devices separately to map memory first */ /* Initialize CEU platform devices separately to map memory first */
device_initialize(&ms7724se_ceu_devices[0]->dev); device_initialize(&ms7724se_ceu_devices[0]->dev);
arch_setup_pdev_archdata(ms7724se_ceu_devices[0]);
dma_declare_coherent_memory(&ms7724se_ceu_devices[0]->dev, dma_declare_coherent_memory(&ms7724se_ceu_devices[0]->dev,
ceu0_dma_membase, ceu0_dma_membase, ceu0_dma_membase, ceu0_dma_membase,
ceu0_dma_membase + ceu0_dma_membase +
...@@ -945,7 +944,6 @@ static int __init devices_setup(void) ...@@ -945,7 +944,6 @@ static int __init devices_setup(void)
platform_device_add(ms7724se_ceu_devices[0]); platform_device_add(ms7724se_ceu_devices[0]);
device_initialize(&ms7724se_ceu_devices[1]->dev); device_initialize(&ms7724se_ceu_devices[1]->dev);
arch_setup_pdev_archdata(ms7724se_ceu_devices[1]);
dma_declare_coherent_memory(&ms7724se_ceu_devices[1]->dev, dma_declare_coherent_memory(&ms7724se_ceu_devices[1]->dev,
ceu1_dma_membase, ceu1_dma_membase, ceu1_dma_membase, ceu1_dma_membase,
ceu1_dma_membase + ceu1_dma_membase +
......
...@@ -106,8 +106,6 @@ source "drivers/hid/Kconfig" ...@@ -106,8 +106,6 @@ source "drivers/hid/Kconfig"
source "drivers/usb/Kconfig" source "drivers/usb/Kconfig"
source "drivers/uwb/Kconfig"
source "drivers/mmc/Kconfig" source "drivers/mmc/Kconfig"
source "drivers/memstick/Kconfig" source "drivers/memstick/Kconfig"
......
...@@ -100,7 +100,6 @@ obj-$(CONFIG_ZORRO) += zorro/ ...@@ -100,7 +100,6 @@ obj-$(CONFIG_ZORRO) += zorro/
obj-$(CONFIG_ATA_OVER_ETH) += block/aoe/ obj-$(CONFIG_ATA_OVER_ETH) += block/aoe/
obj-$(CONFIG_PARIDE) += block/paride/ obj-$(CONFIG_PARIDE) += block/paride/
obj-$(CONFIG_TC) += tc/ obj-$(CONFIG_TC) += tc/
obj-$(CONFIG_UWB) += uwb/
obj-$(CONFIG_USB_PHY) += usb/ obj-$(CONFIG_USB_PHY) += usb/
obj-$(CONFIG_USB) += usb/ obj-$(CONFIG_USB) += usb/
obj-$(CONFIG_USB_SUPPORT) += usb/ obj-$(CONFIG_USB_SUPPORT) += usb/
......
...@@ -12,9 +12,6 @@ ...@@ -12,9 +12,6 @@
static DEFINE_MUTEX(devcon_lock); static DEFINE_MUTEX(devcon_lock);
static LIST_HEAD(devcon_list); static LIST_HEAD(devcon_list);
typedef void *(*devcon_match_fn_t)(struct device_connection *con, int ep,
void *data);
static void * static void *
fwnode_graph_devcon_match(struct fwnode_handle *fwnode, const char *con_id, fwnode_graph_devcon_match(struct fwnode_handle *fwnode, const char *con_id,
void *data, devcon_match_fn_t match) void *data, devcon_match_fn_t match)
...@@ -60,6 +57,34 @@ fwnode_devcon_match(struct fwnode_handle *fwnode, const char *con_id, ...@@ -60,6 +57,34 @@ fwnode_devcon_match(struct fwnode_handle *fwnode, const char *con_id,
return NULL; return NULL;
} }
/**
* fwnode_connection_find_match - Find connection from a device node
* @fwnode: Device node with the connection
* @con_id: Identifier for the connection
* @data: Data for the match function
* @match: Function to check and convert the connection description
*
* Find a connection with unique identifier @con_id between @fwnode and another
* device node. @match will be used to convert the connection description to
* data the caller is expecting to be returned.
*/
void *fwnode_connection_find_match(struct fwnode_handle *fwnode,
const char *con_id, void *data,
devcon_match_fn_t match)
{
void *ret;
if (!fwnode || !match)
return NULL;
ret = fwnode_graph_devcon_match(fwnode, con_id, data, match);
if (ret)
return ret;
return fwnode_devcon_match(fwnode, con_id, data, match);
}
EXPORT_SYMBOL_GPL(fwnode_connection_find_match);
/** /**
* device_connection_find_match - Find physical connection to a device * device_connection_find_match - Find physical connection to a device
* @dev: Device with the connection * @dev: Device with the connection
...@@ -83,16 +108,10 @@ void *device_connection_find_match(struct device *dev, const char *con_id, ...@@ -83,16 +108,10 @@ void *device_connection_find_match(struct device *dev, const char *con_id,
if (!match) if (!match)
return NULL; return NULL;
if (fwnode) { ret = fwnode_connection_find_match(fwnode, con_id, data, match);
ret = fwnode_graph_devcon_match(fwnode, con_id, data, match);
if (ret) if (ret)
return ret; return ret;
ret = fwnode_devcon_match(fwnode, con_id, data, match);
if (ret)
return ret;
}
mutex_lock(&devcon_lock); mutex_lock(&devcon_lock);
list_for_each_entry(con, &devcon_list, list) { list_for_each_entry(con, &devcon_list, list) {
......
...@@ -39,25 +39,6 @@ struct device platform_bus = { ...@@ -39,25 +39,6 @@ struct device platform_bus = {
}; };
EXPORT_SYMBOL_GPL(platform_bus); EXPORT_SYMBOL_GPL(platform_bus);
/**
* arch_setup_pdev_archdata - Allow manipulation of archdata before its used
* @pdev: platform device
*
* This is called before platform_device_add() such that any pdev_archdata may
* be setup before the platform_notifier is called. So if a user needs to
* manipulate any relevant information in the pdev_archdata they can do:
*
* platform_device_alloc()
* ... manipulate ...
* platform_device_add()
*
* And if they don't care they can just call platform_device_register() and
* everything will just work out.
*/
void __weak arch_setup_pdev_archdata(struct platform_device *pdev)
{
}
/** /**
* platform_get_resource - get a resource for a device * platform_get_resource - get a resource for a device
* @dev: platform device * @dev: platform device
...@@ -313,6 +294,20 @@ struct platform_object { ...@@ -313,6 +294,20 @@ struct platform_object {
char name[]; char name[];
}; };
/*
* Set up default DMA mask for platform devices if the they weren't
* previously set by the architecture / DT.
*/
static void setup_pdev_dma_masks(struct platform_device *pdev)
{
if (!pdev->dev.coherent_dma_mask)
pdev->dev.coherent_dma_mask = DMA_BIT_MASK(32);
if (!pdev->dma_mask)
pdev->dma_mask = DMA_BIT_MASK(32);
if (!pdev->dev.dma_mask)
pdev->dev.dma_mask = &pdev->dma_mask;
};
/** /**
* platform_device_put - destroy a platform device * platform_device_put - destroy a platform device
* @pdev: platform device to free * @pdev: platform device to free
...@@ -359,7 +354,7 @@ struct platform_device *platform_device_alloc(const char *name, int id) ...@@ -359,7 +354,7 @@ struct platform_device *platform_device_alloc(const char *name, int id)
pa->pdev.id = id; pa->pdev.id = id;
device_initialize(&pa->pdev.dev); device_initialize(&pa->pdev.dev);
pa->pdev.dev.release = platform_device_release; pa->pdev.dev.release = platform_device_release;
arch_setup_pdev_archdata(&pa->pdev); setup_pdev_dma_masks(&pa->pdev);
} }
return pa ? &pa->pdev : NULL; return pa ? &pa->pdev : NULL;
...@@ -561,7 +556,7 @@ EXPORT_SYMBOL_GPL(platform_device_del); ...@@ -561,7 +556,7 @@ EXPORT_SYMBOL_GPL(platform_device_del);
int platform_device_register(struct platform_device *pdev) int platform_device_register(struct platform_device *pdev)
{ {
device_initialize(&pdev->dev); device_initialize(&pdev->dev);
arch_setup_pdev_archdata(pdev); setup_pdev_dma_masks(pdev);
return platform_device_add(pdev); return platform_device_add(pdev);
} }
EXPORT_SYMBOL_GPL(platform_device_register); EXPORT_SYMBOL_GPL(platform_device_register);
......
...@@ -1105,7 +1105,6 @@ config MFD_SI476X_CORE ...@@ -1105,7 +1105,6 @@ config MFD_SI476X_CORE
config MFD_SM501 config MFD_SM501
tristate "Silicon Motion SM501" tristate "Silicon Motion SM501"
depends on HAS_DMA depends on HAS_DMA
select DMA_DECLARE_COHERENT
---help--- ---help---
This is the core driver for the Silicon Motion SM501 multimedia This is the core driver for the Silicon Motion SM501 multimedia
companion chip. This device is a multifunction device which may companion chip. This device is a multifunction device which may
...@@ -1714,7 +1713,6 @@ config MFD_TC6393XB ...@@ -1714,7 +1713,6 @@ config MFD_TC6393XB
select GPIOLIB select GPIOLIB
select MFD_CORE select MFD_CORE
select MFD_TMIO select MFD_TMIO
select DMA_DECLARE_COHERENT
help help
Support for Toshiba Mobile IO Controller TC6393XB Support for Toshiba Mobile IO Controller TC6393XB
......
...@@ -120,4 +120,7 @@ source "drivers/staging/kpc2000/Kconfig" ...@@ -120,4 +120,7 @@ source "drivers/staging/kpc2000/Kconfig"
source "drivers/staging/isdn/Kconfig" source "drivers/staging/isdn/Kconfig"
source "drivers/staging/wusbcore/Kconfig"
source "drivers/staging/uwb/Kconfig"
endif # STAGING endif # STAGING
...@@ -50,3 +50,5 @@ obj-$(CONFIG_EROFS_FS) += erofs/ ...@@ -50,3 +50,5 @@ obj-$(CONFIG_EROFS_FS) += erofs/
obj-$(CONFIG_FIELDBUS_DEV) += fieldbus/ obj-$(CONFIG_FIELDBUS_DEV) += fieldbus/
obj-$(CONFIG_KPC2000) += kpc2000/ obj-$(CONFIG_KPC2000) += kpc2000/
obj-$(CONFIG_ISDN_CAPI) += isdn/ obj-$(CONFIG_ISDN_CAPI) += isdn/
obj-$(CONFIG_UWB) += uwb/
obj-$(CONFIG_USB_WUSB) += wusbcore/
...@@ -3512,7 +3512,7 @@ static const struct hc_driver octeon_hc_driver = { ...@@ -3512,7 +3512,7 @@ static const struct hc_driver octeon_hc_driver = {
.product_desc = "Octeon Host Controller", .product_desc = "Octeon Host Controller",
.hcd_priv_size = sizeof(struct octeon_hcd), .hcd_priv_size = sizeof(struct octeon_hcd),
.irq = octeon_usb_irq, .irq = octeon_usb_irq,
.flags = HCD_MEMORY | HCD_USB2, .flags = HCD_MEMORY | HCD_DMA | HCD_USB2,
.start = octeon_usb_start, .start = octeon_usb_start,
.stop = octeon_usb_stop, .stop = octeon_usb_stop,
.urb_enqueue = octeon_usb_urb_enqueue, .urb_enqueue = octeon_usb_urb_enqueue,
......
TODO: Remove in late 2019 unless there are users
There seems to not be any real wireless USB devices anywhere in the wild
anymore. It turned out to be a failed technology :(
This will be removed from the tree if no one objects.
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
*/ */
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/uwb.h> #include "uwb.h"
#include "uwb-internal.h" #include "uwb-internal.h"
......
...@@ -8,8 +8,8 @@ ...@@ -8,8 +8,8 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/random.h> #include <linux/random.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/uwb.h>
#include "uwb.h"
#include "uwb-internal.h" #include "uwb-internal.h"
......
...@@ -38,9 +38,9 @@ ...@@ -38,9 +38,9 @@
#include <linux/module.h> #include <linux/module.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/usb.h> #include <linux/usb.h>
#include <linux/usb/wusb.h> #include "../wusbcore/include/wusb.h"
#include <linux/usb/wusb-wa.h> #include "../wusbcore/include/wusb-wa.h"
#include <linux/uwb.h> #include "uwb.h"
#include "uwb-internal.h" #include "uwb-internal.h"
......
...@@ -17,9 +17,9 @@ ...@@ -17,9 +17,9 @@
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/pci.h> #include <linux/pci.h>
#include <linux/device.h> #include <linux/device.h>
#include <linux/uwb.h>
#include <linux/random.h> #include <linux/random.h>
#include <linux/export.h> #include <linux/export.h>
#include "../../uwb.h"
/* /*
* i1480_rceb_check - Check RCEB for expected field values * i1480_rceb_check - Check RCEB for expected field values
......
...@@ -50,9 +50,9 @@ ...@@ -50,9 +50,9 @@
#ifndef __i1480_DFU_H__ #ifndef __i1480_DFU_H__
#define __i1480_DFU_H__ #define __i1480_DFU_H__
#include <linux/uwb/spec.h>
#include <linux/types.h> #include <linux/types.h>
#include <linux/completion.h> #include <linux/completion.h>
#include "../../include/spec.h"
#define i1480_FW_UPLOAD_MODE_MASK (cpu_to_le32(0x00000018)) #define i1480_FW_UPLOAD_MODE_MASK (cpu_to_le32(0x00000018))
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/firmware.h> #include <linux/firmware.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/uwb.h> #include "../../uwb.h"
#include "i1480-dfu.h" #include "i1480-dfu.h"
/* /*
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/device.h> #include <linux/device.h>
#include <linux/firmware.h> #include <linux/firmware.h>
#include <linux/usb/wusb.h> #include "../../../wusbcore/include/wusb.h"
#include "i1480-dfu.h" #include "i1480-dfu.h"
......
...@@ -25,9 +25,9 @@ ...@@ -25,9 +25,9 @@
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/uwb.h> #include "../../uwb.h"
#include <linux/usb/wusb.h> #include "../../../wusbcore/include/wusb.h"
#include <linux/usb/wusb-wa.h> #include "../../../wusbcore/include/wusb-wa.h"
#include "i1480-dfu.h" #include "i1480-dfu.h"
struct i1480_usb { struct i1480_usb {
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
#include <linux/init.h> #include <linux/init.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/usb.h> #include <linux/usb.h>
#include <linux/uwb.h> #include "../uwb.h"
#include "dfu/i1480-dfu.h" #include "dfu/i1480-dfu.h"
......
...@@ -6,9 +6,9 @@ ...@@ -6,9 +6,9 @@
*/ */
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/debugfs.h> #include <linux/debugfs.h>
#include <linux/uwb.h>
#include <linux/export.h> #include <linux/export.h>
#include "uwb.h"
#include "uwb-internal.h" #include "uwb-internal.h"
/** /**
......
...@@ -5,9 +5,9 @@ ...@@ -5,9 +5,9 @@
* Copyright (C) 2008 Cambridge Silicon Radio Ltd. * Copyright (C) 2008 Cambridge Silicon Radio Ltd.
*/ */
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/uwb.h>
#include <linux/export.h> #include <linux/export.h>
#include "uwb.h"
#include "uwb-internal.h" #include "uwb-internal.h"
......
...@@ -5,11 +5,11 @@ ...@@ -5,11 +5,11 @@
* Copyright (C) 2008 Cambridge Silicon Radio Ltd. * Copyright (C) 2008 Cambridge Silicon Radio Ltd.
*/ */
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/uwb.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/random.h> #include <linux/random.h>
#include <linux/export.h> #include <linux/export.h>
#include "uwb.h"
#include "uwb-internal.h" #include "uwb-internal.h"
static void uwb_rsv_timer(struct timer_list *t); static void uwb_rsv_timer(struct timer_list *t);
......
...@@ -8,8 +8,8 @@ ...@@ -8,8 +8,8 @@
#include <linux/sysfs.h> #include <linux/sysfs.h>
#include <linux/workqueue.h> #include <linux/workqueue.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/uwb/umc.h>
#include <linux/pci.h> #include <linux/pci.h>
#include "include/umc.h"
static int umc_bus_pre_reset_helper(struct device *dev, void *data) static int umc_bus_pre_reset_helper(struct device *dev, void *data)
{ {
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/export.h> #include <linux/export.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/uwb/umc.h> #include "include/umc.h"
static void umc_device_release(struct device *dev) static void umc_device_release(struct device *dev)
{ {
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
*/ */
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/export.h> #include <linux/export.h>
#include <linux/uwb/umc.h> #include "include/umc.h"
int __umc_driver_register(struct umc_driver *umc_drv, struct module *module, int __umc_driver_register(struct umc_driver *umc_drv, struct module *module,
const char *mod_name) const char *mod_name)
......
...@@ -19,8 +19,7 @@ ...@@ -19,8 +19,7 @@
#include <linux/uaccess.h> #include <linux/uaccess.h>
#include <linux/seq_file.h> #include <linux/seq_file.h>
#include <linux/uwb/debug-cmd.h> #include "include/debug-cmd.h"
#include "uwb-internal.h" #include "uwb-internal.h"
/* /*
......
...@@ -17,8 +17,8 @@ ...@@ -17,8 +17,8 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/device.h> #include <linux/device.h>
#include <linux/uwb.h>
#include <linux/mutex.h> #include <linux/mutex.h>
#include "uwb.h"
struct uwb_beca_e; struct uwb_beca_e;
......
...@@ -18,8 +18,8 @@ ...@@ -18,8 +18,8 @@
#include <linux/timer.h> #include <linux/timer.h>
#include <linux/wait.h> #include <linux/wait.h>
#include <linux/workqueue.h> #include <linux/workqueue.h>
#include <linux/uwb/spec.h>
#include <asm/page.h> #include <asm/page.h>
#include "include/spec.h"
struct uwb_dev; struct uwb_dev;
struct uwb_beca_e; struct uwb_beca_e;
......
...@@ -33,9 +33,9 @@ ...@@ -33,9 +33,9 @@
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/workqueue.h> #include <linux/workqueue.h>
#include <linux/uwb.h> #include "uwb.h"
#include <linux/uwb/whci.h> #include "include/whci.h"
#include <linux/uwb/umc.h> #include "include/umc.h"
#include "uwb-internal.h" #include "uwb-internal.h"
......
...@@ -10,8 +10,8 @@ ...@@ -10,8 +10,8 @@
#include <linux/pci.h> #include <linux/pci.h>
#include <linux/dma-mapping.h> #include <linux/dma-mapping.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/uwb/whci.h> #include "include/whci.h"
#include <linux/uwb/umc.h> #include "include/umc.h"
struct whci_card { struct whci_card {
struct pci_dev *pci; struct pci_dev *pci;
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
# #
config USB_WUSB config USB_WUSB
tristate "Enable Wireless USB extensions" tristate "Enable Wireless USB extensions"
depends on UWB depends on UWB && USB
select CRYPTO select CRYPTO
select CRYPTO_AES select CRYPTO_AES
select CRYPTO_CCM select CRYPTO_CCM
...@@ -36,3 +36,4 @@ config USB_WUSB_CBAF_DEBUG ...@@ -36,3 +36,4 @@ config USB_WUSB_CBAF_DEBUG
to the system log. Select this if you are having a problem with to the system log. Select this if you are having a problem with
CBA support and want to see more of what is going on. CBA support and want to see more of what is going on.
source "drivers/staging/wusbcore/host/Kconfig"
...@@ -24,3 +24,5 @@ wusb-wa-y := \ ...@@ -24,3 +24,5 @@ wusb-wa-y := \
wa-nep.o \ wa-nep.o \
wa-rpipe.o \ wa-rpipe.o \
wa-xfer.o wa-xfer.o
obj-y += host/
TODO: Remove in late 2019 unless there are users
There seems to not be any real wireless USB devices anywhere in the wild
anymore. It turned out to be a failed technology :(
This will be removed from the tree if no one objects.
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
...@@ -80,9 +80,9 @@ ...@@ -80,9 +80,9 @@
#include <linux/random.h> #include <linux/random.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/mutex.h> #include <linux/mutex.h>
#include <linux/uwb.h> #include "../uwb/uwb.h"
#include <linux/usb/wusb.h> #include "include/wusb.h"
#include <linux/usb/association.h> #include "include/association.h"
#define CBA_NAME_LEN 0x40 /* [WUSB-AM] table 4-7 */ #define CBA_NAME_LEN 0x40 /* [WUSB-AM] table 4-7 */
......
...@@ -38,10 +38,10 @@ ...@@ -38,10 +38,10 @@
#include <linux/crypto.h> #include <linux/crypto.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/err.h> #include <linux/err.h>
#include <linux/uwb.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/usb/wusb.h>
#include <linux/scatterlist.h> #include <linux/scatterlist.h>
#include "../uwb/uwb.h"
#include "include/wusb.h"
static int debug_crypto_verify; static int debug_crypto_verify;
......
...@@ -49,7 +49,7 @@ ...@@ -49,7 +49,7 @@
* for processing a DN_Alive pong from a device. * for processing a DN_Alive pong from a device.
* *
* wusb_handle_dn_disconnect()Called by notif.c:wusb_handle_dn() to * wusb_handle_dn_disconnect()Called by notif.c:wusb_handle_dn() to
* process a disconenct request from a * process a disconnect request from a
* device. * device.
* *
* __wusb_dev_disable() Called by rh.c:wusbhc_rh_clear_port_feat() when * __wusb_dev_disable() Called by rh.c:wusbhc_rh_clear_port_feat() when
......
# SPDX-License-Identifier: GPL-2.0
config USB_WHCI_HCD
tristate "Wireless USB Host Controller Interface (WHCI) driver"
depends on USB_PCI && USB && UWB
select USB_WUSB
select UWB_WHCI
help
A driver for PCI-based Wireless USB Host Controllers that are
compliant with the WHCI specification.
To compile this driver a module, choose M here: the module
will be called "whci-hcd".
config USB_HWA_HCD
tristate "Host Wire Adapter (HWA) driver"
depends on USB && UWB
select USB_WUSB
select UWB_HWA
help
This driver enables you to connect Wireless USB devices to
your system using a Host Wire Adaptor USB dongle. This is an
UWB Radio Controller and WUSB Host Controller connected to
your machine via USB (specified in WUSB1.0).
To compile this driver a module, choose M here: the module
will be called "hwa-hc".
# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_USB_WHCI_HCD) += whci/
obj-$(CONFIG_USB_HWA_HCD) += hwa-hc.o
...@@ -45,8 +45,8 @@ ...@@ -45,8 +45,8 @@
#include <linux/workqueue.h> #include <linux/workqueue.h>
#include <linux/wait.h> #include <linux/wait.h>
#include <linux/completion.h> #include <linux/completion.h>
#include "../wusbcore/wa-hc.h" #include "../wa-hc.h"
#include "../wusbcore/wusbhc.h" #include "../wusbhc.h"
struct hwahc { struct hwahc {
struct wusbhc wusbhc; /* has to be 1st */ struct wusbhc wusbhc; /* has to be 1st */
......
...@@ -7,10 +7,10 @@ ...@@ -7,10 +7,10 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/gfp.h> #include <linux/gfp.h>
#include <linux/dma-mapping.h> #include <linux/dma-mapping.h>
#include <linux/uwb/umc.h>
#include <linux/usb.h> #include <linux/usb.h>
#include "../../wusbcore/wusbhc.h" #include "../../../uwb/include/umc.h"
#include "../../wusbhc.h"
#include "whcd.h" #include "whcd.h"
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
#include <linux/seq_file.h> #include <linux/seq_file.h>
#include <linux/export.h> #include <linux/export.h>
#include "../../wusbcore/wusbhc.h" #include "../../wusbhc.h"
#include "whcd.h" #include "whcd.h"
......
...@@ -7,9 +7,9 @@ ...@@ -7,9 +7,9 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/uwb/umc.h>
#include "../../wusbcore/wusbhc.h" #include "../../../uwb/include/umc.h"
#include "../../wusbhc.h"
#include "whcd.h" #include "whcd.h"
......
...@@ -6,9 +6,9 @@ ...@@ -6,9 +6,9 @@
*/ */
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/dma-mapping.h> #include <linux/dma-mapping.h>
#include <linux/uwb/umc.h>
#include "../../wusbcore/wusbhc.h" #include "../../../uwb/include/umc.h"
#include "../../wusbhc.h"
#include "whcd.h" #include "whcd.h"
......
...@@ -7,9 +7,9 @@ ...@@ -7,9 +7,9 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/gfp.h> #include <linux/gfp.h>
#include <linux/dma-mapping.h> #include <linux/dma-mapping.h>
#include <linux/uwb/umc.h>
#include "../../wusbcore/wusbhc.h" #include "../../../uwb/include/umc.h"
#include "../../wusbhc.h"
#include "whcd.h" #include "whcd.h"
......
...@@ -5,9 +5,9 @@ ...@@ -5,9 +5,9 @@
* Copyright (C) 2007 Cambridge Silicon Radio Ltd. * Copyright (C) 2007 Cambridge Silicon Radio Ltd.
*/ */
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/uwb/umc.h>
#include "../../wusbcore/wusbhc.h" #include "../../../uwb/include/umc.h"
#include "../../wusbhc.h"
#include "whcd.h" #include "whcd.h"
......
...@@ -7,10 +7,10 @@ ...@@ -7,10 +7,10 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/gfp.h> #include <linux/gfp.h>
#include <linux/dma-mapping.h> #include <linux/dma-mapping.h>
#include <linux/uwb/umc.h>
#include <linux/usb.h> #include <linux/usb.h>
#include "../../wusbcore/wusbhc.h" #include "../../../uwb/include/umc.h"
#include "../../wusbhc.h"
#include "whcd.h" #include "whcd.h"
......
...@@ -7,10 +7,10 @@ ...@@ -7,10 +7,10 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/dma-mapping.h> #include <linux/dma-mapping.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/uwb/umc.h>
#include <linux/usb.h> #include <linux/usb.h>
#include "../../wusbcore/wusbhc.h" #include "../../../uwb/include/umc.h"
#include "../../wusbhc.h"
#include "whcd.h" #include "whcd.h"
......
...@@ -7,10 +7,10 @@ ...@@ -7,10 +7,10 @@
#ifndef __WHCD_H #ifndef __WHCD_H
#define __WHCD_H #define __WHCD_H
#include <linux/uwb/whci.h>
#include <linux/uwb/umc.h>
#include <linux/workqueue.h> #include <linux/workqueue.h>
#include "../../../uwb/include/whci.h"
#include "../../../uwb/include/umc.h"
#include "whci-hc.h" #include "whci-hc.h"
/* Generic command timeout. */ /* Generic command timeout. */
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment