[U-Boot] [PATCH] phy: add a NO-OP phy driver

Patrice CHOTARD patrice.chotard at st.com
Fri Jul 21 11:08:43 UTC 2017


Hi Jean Jacques



On 07/21/2017 10:49 AM, Jean-Jacques Hiblot wrote:
> The no-op phy driver is useful when a driver uses the phy framework
> but no PHY driver is available for the hardware (or the hardware has no
> PHY).
> 
> Signed-off-by: Jean-Jacques Hiblot <jjhiblot at ti.com>
> ---
> 
> Following the email thread '[PATCH 1/1] dm: phy: add missing #ifdef CONFIG_PHY',
> here is a patch to add support for a no-op phy.
> 
> Jean-Jacques
> 
> 
>   Documentation/devicetree/bindings/phy/no-op.txt | 16 +++++++++++++++
>   drivers/phy/Kconfig                             | 18 +++++++++++++++++
>   drivers/phy/Makefile                            |  1 +
>   drivers/phy/noop-phy.c                          | 26 +++++++++++++++++++++++++
>   4 files changed, 61 insertions(+)
>   create mode 100644 Documentation/devicetree/bindings/phy/no-op.txt
>   create mode 100644 drivers/phy/noop-phy.c
> 
> diff --git a/Documentation/devicetree/bindings/phy/no-op.txt b/Documentation/devicetree/bindings/phy/no-op.txt
> new file mode 100644
> index 0000000..eb1a562
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/phy/no-op.txt
> @@ -0,0 +1,16 @@
> +NO-OP Phy driver
> +
> +The driver is used to stub PHY opeartions in a driver (USB, SATA).

typo opeartions

> +This is useful when the PHY driver for a particular hardware doesn't exist yet
> +(the hardware is initialized by the platform code).
> +
> +Required properties:
> +- compatible     : must contain "noop-phy"
> +- #phy-cells     : must contain <0>
> +
> +Example:
> +
> +noop_phy {
> +	compatible = "noop-phy";
> +	#phy-cells = <0>;
> +};
> diff --git a/drivers/phy/Kconfig b/drivers/phy/Kconfig
> index 7841554..68dced7 100644
> --- a/drivers/phy/Kconfig
> +++ b/drivers/phy/Kconfig
> @@ -41,6 +41,24 @@ config PHY_SANDBOX
>   	  This select a dummy sandbox PHY driver. It used only to implement
>   	  the unit tests for the phy framework
>   
> +config NOOP_PHY
> +	bool "no-op phy"
> +	depends on PHY
> +	help
> +	  Support for a no-op PHY
> +
> +	  This is useful when a driver uses the PHY framework but no driver
> +	  has yet been written for the PHY (or if there is no hardware PHY).
> +
> +config SPL_NOOP_PHY
> +	bool "no-op phy in SPL"
> +	depends on SPL_PHY
> +	help
> +	  Support for a no-op PHY in SPL
> +
> +	  This is useful when a driver uses the PHY framework but no driver
> +	  has yet been written for the PHY (or if there is no hardware PHY).
> +
>   config PIPE3_PHY
>   	bool "Support omap's PIPE3 PHY"
>   	depends on PHY && ARCH_OMAP2PLUS
> diff --git a/drivers/phy/Makefile b/drivers/phy/Makefile
> index 6ce96d2..f129b5c 100644
> --- a/drivers/phy/Makefile
> +++ b/drivers/phy/Makefile
> @@ -6,5 +6,6 @@
>   #
>   
>   obj-$(CONFIG_$(SPL_)PHY) += phy-uclass.o
> +obj-$(CONFIG_$(SPL_)NOOP_PHY) += noop-phy.o
>   obj-$(CONFIG_PHY_SANDBOX) += sandbox-phy.o
>   obj-$(CONFIG_$(SPL_)PIPE3_PHY) += ti-pipe3-phy.o
> diff --git a/drivers/phy/noop-phy.c b/drivers/phy/noop-phy.c
> new file mode 100644
> index 0000000..14ccf86
> --- /dev/null
> +++ b/drivers/phy/noop-phy.c
> @@ -0,0 +1,26 @@
> +/*
> + * Copyright (C) 2017 Texas Instruments Incorporated - http://www.ti.com/
> + * Written by Jean-Jacques Hiblot  <jjhiblot at ti.com>
> + *
> + * SPDX-License-Identifier:	GPL-2.0+
> + */
> +
> +#include <common.h>
> +#include <dm.h>
> +#include <dm/device.h>
> +#include <generic-phy.h>
> +
> +static const struct udevice_id noop_phy_ids[] = {
> +	{ .compatible = "noop-phy" },
> +	{ }
> +};
> +
> +static struct phy_ops noop_phy_ops = {
> +};
> +
> +U_BOOT_DRIVER(noop_phy) = {
> +	.name	= "noop_phy",
> +	.id	= UCLASS_PHY,
> +	.of_match = noop_phy_ids,
> +	.ops = &noop_phy_ops,
> +};
> 

This solution is more elegant ;-)

Merci


More information about the U-Boot mailing list