svn commit: r330925 - in head/sys: conf powerpc/powernv

Nathan Whitehorn nwhitehorn at freebsd.org
Wed Mar 14 15:03:07 UTC 2018



On 03/14/18 02:20, Wojciech Macek wrote:
> Author: wma
> Date: Wed Mar 14 09:20:03 2018
> New Revision: 330925
> URL: https://svnweb.freebsd.org/changeset/base/330925
>
> Log:
>    PowerNV: Fix I2C to compile if FDT is disabled
>    
>    Submitted by:          Wojciech Macek <wma at semihalf.com>
>    Obtained from:         Semihalf
>    Sponsored by:          IBM, QCM Technologies

I don't think this makes any sense, for several reasons:
1. You are gating on #ifdef FDT for things that are using the OF_* API 
and aren't actually FDT-specific, so the #ifdef checks are testing the 
wrong thing.
2. It isn't possible to even build a PowerPC/AIM kernel, like PowerNV, 
without the Open Firmware support code that this uses, so there is no 
circumstance in which this helps anything.
3. The PowerNV platform is non-functional without a device tree 
intrinsically, so, even if you could build a kernel like this somehow, 
it would be impossible for it to work.

Given all of that, why was this necessary? It seems to just add 
pointless #ifdef to code that does not need it.
-Nathan

>
> Modified:
>    head/sys/conf/files.powerpc
>    head/sys/powerpc/powernv/opal_i2c.c
>    head/sys/powerpc/powernv/opal_i2cm.c
>    head/sys/powerpc/powernv/powernv_centaur.c
>    head/sys/powerpc/powernv/powernv_xscom.c
>
> Modified: head/sys/conf/files.powerpc
> ==============================================================================
> --- head/sys/conf/files.powerpc	Wed Mar 14 08:48:40 2018	(r330924)
> +++ head/sys/conf/files.powerpc	Wed Mar 14 09:20:03 2018	(r330925)
> @@ -186,8 +186,8 @@ powerpc/powermac/vcoregpio.c	optional	powermac
>   powerpc/powernv/opal.c		optional	powernv
>   powerpc/powernv/opal_console.c	optional	powernv
>   powerpc/powernv/opal_dev.c	optional	powernv
> -powerpc/powernv/opal_i2c.c	optional	iicbus fdt powernv
> -powerpc/powernv/opal_i2cm.c	optional	iicbus fdt powernv
> +powerpc/powernv/opal_i2c.c	optional	iicbus powernv
> +powerpc/powernv/opal_i2cm.c	optional	iicbus powernv
>   powerpc/powernv/opal_pci.c	optional	powernv pci
>   powerpc/powernv/opalcall.S	optional	powernv
>   powerpc/powernv/platform_powernv.c optional	powernv
>
> Modified: head/sys/powerpc/powernv/opal_i2c.c
> ==============================================================================
> --- head/sys/powerpc/powernv/opal_i2c.c	Wed Mar 14 08:48:40 2018	(r330924)
> +++ head/sys/powerpc/powernv/opal_i2c.c	Wed Mar 14 09:20:03 2018	(r330925)
> @@ -120,7 +120,9 @@ static int
>   opal_i2c_probe(device_t dev)
>   {
>   
> +#ifdef FDT
>   	if (!(ofw_bus_is_compatible(dev, "ibm,opal-i2c")))
> +#endif
>   		return (ENXIO);
>   
>   	device_set_desc(dev, "opal-i2c");
> @@ -131,6 +133,7 @@ opal_i2c_probe(device_t dev)
>   static int
>   opal_i2c_attach(device_t dev)
>   {
> +#ifdef FDT
>   	struct opal_i2c_softc *sc;
>   	int len;
>   
> @@ -150,6 +153,9 @@ opal_i2c_attach(device_t dev)
>   	I2C_LOCK_INIT(sc);
>   
>   	return (bus_generic_attach(dev));
> +#else
> +	return (ENXIO);
> +#endif
>   }
>   
>   static int
>
> Modified: head/sys/powerpc/powernv/opal_i2cm.c
> ==============================================================================
> --- head/sys/powerpc/powernv/opal_i2cm.c	Wed Mar 14 08:48:40 2018	(r330924)
> +++ head/sys/powerpc/powernv/opal_i2cm.c	Wed Mar 14 09:20:03 2018	(r330925)
> @@ -57,14 +57,17 @@ struct opal_i2cm_softc
>   
>   static int opal_i2cm_attach(device_t);
>   static int opal_i2cm_probe(device_t);
> +#ifdef FDT
>   static const struct ofw_bus_devinfo *
>       opal_i2cm_get_devinfo(device_t, device_t);
> +#endif
>   
>   static device_method_t opal_i2cm_methods[] = {
>   	/* Device interface */
>   	DEVMETHOD(device_probe,		opal_i2cm_probe),
>   	DEVMETHOD(device_attach,	opal_i2cm_attach),
>   
> +#ifdef FDT
>   	/* ofw_bus interface */
>   	DEVMETHOD(ofw_bus_get_devinfo,	opal_i2cm_get_devinfo),
>   	DEVMETHOD(ofw_bus_get_compat,	ofw_bus_gen_get_compat),
> @@ -72,6 +75,7 @@ static device_method_t opal_i2cm_methods[] = {
>   	DEVMETHOD(ofw_bus_get_name,	ofw_bus_gen_get_name),
>   	DEVMETHOD(ofw_bus_get_node,	ofw_bus_gen_get_node),
>   	DEVMETHOD(ofw_bus_get_type,	ofw_bus_gen_get_type),
> +#endif
>   
>   	DEVMETHOD_END
>   };
> @@ -82,8 +86,10 @@ static int
>   opal_i2cm_probe(device_t dev)
>   {
>   
> +#ifdef FDT
>   	if (!(ofw_bus_is_compatible(dev, "ibm,centaur-i2cm") ||
>   	    ofw_bus_is_compatible(dev, "ibm,power8-i2cm")))
> +#endif
>   		return (ENXIO);
>   
>   	device_set_desc(dev, "centaur-i2cm");
> @@ -93,6 +99,7 @@ opal_i2cm_probe(device_t dev)
>   static int
>   opal_i2cm_attach(device_t dev)
>   {
> +#ifdef FDT
>   	phandle_t child;
>   	device_t cdev;
>   	struct ofw_bus_devinfo *dinfo;
> @@ -116,13 +123,18 @@ opal_i2cm_attach(device_t dev)
>   	}
>   
>   	return (bus_generic_attach(dev));
> +#else
> +	return (ENXIO);
> +#endif
>   }
>   
> +#ifdef FDT
>   static const struct ofw_bus_devinfo *
>   opal_i2cm_get_devinfo(device_t dev, device_t child)
>   {
>           return (device_get_ivars(child));
>   }
> +#endif
>   
>   DEFINE_CLASS_0(opal_i2cm, opal_i2cm_driver, opal_i2cm_methods,
>       sizeof(struct opal_i2cm_softc));
>
> Modified: head/sys/powerpc/powernv/powernv_centaur.c
> ==============================================================================
> --- head/sys/powerpc/powernv/powernv_centaur.c	Wed Mar 14 08:48:40 2018	(r330924)
> +++ head/sys/powerpc/powernv/powernv_centaur.c	Wed Mar 14 09:20:03 2018	(r330925)
> @@ -57,14 +57,17 @@ struct powernv_centaur_softc
>   
>   static int powernv_centaur_attach(device_t);
>   static int powernv_centaur_probe(device_t);
> +#ifdef FDT
>   static const struct ofw_bus_devinfo *
>       powernv_centaur_get_devinfo(device_t, device_t);
> +#endif
>   
>   static device_method_t powernv_centaur_methods[] = {
>   	/* Device interface */
>   	DEVMETHOD(device_probe,		powernv_centaur_probe),
>   	DEVMETHOD(device_attach,	powernv_centaur_attach),
>   
> +#ifdef FDT
>   	/* ofw_bus interface */
>   	DEVMETHOD(ofw_bus_get_devinfo,	powernv_centaur_get_devinfo),
>   	DEVMETHOD(ofw_bus_get_compat,	ofw_bus_gen_get_compat),
> @@ -72,7 +75,7 @@ static device_method_t powernv_centaur_methods[] = {
>   	DEVMETHOD(ofw_bus_get_name,	ofw_bus_gen_get_name),
>   	DEVMETHOD(ofw_bus_get_node,	ofw_bus_gen_get_node),
>   	DEVMETHOD(ofw_bus_get_type,	ofw_bus_gen_get_type),
> -
> +#endif
>   	DEVMETHOD_END
>   };
>   
> @@ -82,7 +85,9 @@ static int
>   powernv_centaur_probe(device_t dev)
>   {
>   
> +#ifdef FDT
>   	if (!(ofw_bus_is_compatible(dev, "ibm,centaur")))
> +#endif
>   		return (ENXIO);
>   
>   	device_set_desc(dev, "centaur");
> @@ -92,6 +97,7 @@ powernv_centaur_probe(device_t dev)
>   static int
>   powernv_centaur_attach(device_t dev)
>   {
> +#ifdef FDT
>   	phandle_t child;
>   	device_t cdev;
>   	struct ofw_bus_devinfo *dinfo;
> @@ -115,13 +121,18 @@ powernv_centaur_attach(device_t dev)
>   	}
>   
>   	return (bus_generic_attach(dev));
> +#else
> +	return (ENXIO);
> +#endif
>   }
>   
> +#ifdef FDT
>   static const struct ofw_bus_devinfo *
>   powernv_centaur_get_devinfo(device_t dev, device_t child)
>   {
>           return (device_get_ivars(child));
>   }
> +#endif
>   
>   DEFINE_CLASS_0(powernv_centaur, powernv_centaur_driver, powernv_centaur_methods,
>       sizeof(struct powernv_centaur_softc));
>
> Modified: head/sys/powerpc/powernv/powernv_xscom.c
> ==============================================================================
> --- head/sys/powerpc/powernv/powernv_xscom.c	Wed Mar 14 08:48:40 2018	(r330924)
> +++ head/sys/powerpc/powernv/powernv_xscom.c	Wed Mar 14 09:20:03 2018	(r330925)
> @@ -57,14 +57,17 @@ struct powernv_xscom_softc
>   
>   static int powernv_xscom_attach(device_t);
>   static int powernv_xscom_probe(device_t);
> +#ifdef FDT
>   static const struct ofw_bus_devinfo *
>       powernv_xscom_get_devinfo(device_t, device_t);
> +#endif
>   
>   static device_method_t powernv_xscom_methods[] = {
>   	/* Device interface */
>   	DEVMETHOD(device_probe,		powernv_xscom_probe),
>   	DEVMETHOD(device_attach,	powernv_xscom_attach),
>   
> +#ifdef FDT
>   	/* ofw_bus interface */
>   	DEVMETHOD(ofw_bus_get_devinfo,	powernv_xscom_get_devinfo),
>   	DEVMETHOD(ofw_bus_get_compat,	ofw_bus_gen_get_compat),
> @@ -72,6 +75,7 @@ static device_method_t powernv_xscom_methods[] = {
>   	DEVMETHOD(ofw_bus_get_name,	ofw_bus_gen_get_name),
>   	DEVMETHOD(ofw_bus_get_node,	ofw_bus_gen_get_node),
>   	DEVMETHOD(ofw_bus_get_type,	ofw_bus_gen_get_type),
> +#endif
>   
>   	DEVMETHOD_END
>   };
> @@ -82,7 +86,9 @@ static int
>   powernv_xscom_probe(device_t dev)
>   {
>   
> +#ifdef FDT
>   	if (!(ofw_bus_is_compatible(dev, "ibm,xscom")))
> +#endif
>   		return (ENXIO);
>   
>   	device_set_desc(dev, "xscom");
> @@ -92,6 +98,7 @@ powernv_xscom_probe(device_t dev)
>   static int
>   powernv_xscom_attach(device_t dev)
>   {
> +#ifdef FDT
>   	phandle_t child;
>   	device_t cdev;
>   	struct ofw_bus_devinfo *dinfo;
> @@ -115,13 +122,18 @@ powernv_xscom_attach(device_t dev)
>   	}
>   
>   	return (bus_generic_attach(dev));
> +#else
> +	return (ENXIO);
> +#endif
>   }
>   
> +#ifdef FDT
>   static const struct ofw_bus_devinfo *
>   powernv_xscom_get_devinfo(device_t dev, device_t child)
>   {
>           return (device_get_ivars(child));
>   }
> +#endif
>   
>   DEFINE_CLASS_0(powernv_xscom, powernv_xscom_driver, powernv_xscom_methods,
>       sizeof(struct powernv_xscom_softc));
>



More information about the svn-src-head mailing list