Am Wed, Feb 17, 2021 at 11:56:16AM +1100 schrieb Jonathan Gray:
> Add a driver for "simple-pm-bus" a way to enable a clock and/or
> power domain for a group of devices.
> 
> https://www.kernel.org/doc/Documentation/devicetree/bindings/bus/simple-pm-bus.txt
> 
> This is needed to use am335x/omap4 dtbs from linux 5.11.

"A Simple Power-Managed Bus is a transparent bus that doesn't need a real
driver, as it's typically initialized by the boot loader."

That's a bit funny though. :-)  But I think they meant "it doesn't need
a real driver, apart from the generic simple-pm-bus driver".


> Index: sys/dev/fdt/files.fdt
> ===================================================================
> RCS file: /cvs/src/sys/dev/fdt/files.fdt,v
> retrieving revision 1.146
> diff -u -p -r1.146 files.fdt
> --- sys/dev/fdt/files.fdt     5 Feb 2021 00:05:20 -0000       1.146
> +++ sys/dev/fdt/files.fdt     17 Feb 2021 00:49:02 -0000
> @@ -23,6 +23,10 @@ device     simplepanel
>  attach       simplepanel at fdt
>  file dev/fdt/simplepanel.c           simplepanel
>  
> +device       simplepmbus: fdt
> +attach       simplepmbus at fdt
> +file dev/fdt/simplepmbus.c           simplepmbus
> +
>  device       sxiccmu
>  attach       sxiccmu at fdt
>  file dev/fdt/sxiccmu.c               sxiccmu
> Index: share/man/man4/Makefile
> ===================================================================
> RCS file: /cvs/src/share/man/man4/Makefile,v
> retrieving revision 1.792
> diff -u -p -r1.792 Makefile
> --- share/man/man4/Makefile   4 Feb 2021 16:25:38 -0000       1.792
> +++ share/man/man4/Makefile   17 Feb 2021 00:49:02 -0000
> @@ -72,7 +72,8 @@ MAN=        aac.4 abcrtc.4 abl.4 ac97.4 acphy.4
>       rl.4 rlphy.4 route.4 rsu.4 rtsx.4 rum.4 run.4 rtw.4 rtwn.4 \
>       safe.4 safte.4 sbus.4 schsio.4 scsi.4 sd.4 \
>       sdmmc.4 sdhc.4 se.4 ses.4 sf.4 sili.4 \
> -     simpleamp.4 simpleaudio.4 simplefb.4 simplepanel.4 siop.4 sis.4 sk.4 \
> +     simpleamp.4 simpleaudio.4 simplefb.4 simplepanel.4 simplepmbus.4 \
> +     siop.4 sis.4 sk.4 \
>       sm.4 smsc.4 softraid.4 spdmem.4 sdtemp.4 speaker.4 sppp.4 sqphy.4 \
>       ssdfb.4 st.4 ste.4 stge.4 sti.4 stp.4 sv.4 switch.4 sxiccmu.4 \
>       sxidog.4 sximmc.4 sxipio.4 sxipwm.4 sxirsb.4 sxirtc.4 sxisid.4 \
> Index: sys/arch/armv7/conf/GENERIC
> ===================================================================
> RCS file: /cvs/src/sys/arch/armv7/conf/GENERIC,v
> retrieving revision 1.134
> diff -u -p -r1.134 GENERIC
> --- sys/arch/armv7/conf/GENERIC       4 Feb 2021 16:25:39 -0000       1.134
> +++ sys/arch/armv7/conf/GENERIC       17 Feb 2021 00:49:02 -0000
> @@ -31,6 +31,7 @@ config              bsd     swap generic
>  # The main bus device
>  mainbus0     at root
>  simplebus*   at fdt?
> +simplepmbus* at fdt?
>  cpu0         at mainbus?
>  
>  # Cortex-A9
> Index: sys/arch/armv7/conf/RAMDISK
> ===================================================================
> RCS file: /cvs/src/sys/arch/armv7/conf/RAMDISK,v
> retrieving revision 1.119
> diff -u -p -r1.119 RAMDISK
> --- sys/arch/armv7/conf/RAMDISK       18 Jun 2020 08:48:04 -0000      1.119
> +++ sys/arch/armv7/conf/RAMDISK       17 Feb 2021 00:49:02 -0000
> @@ -30,6 +30,7 @@ config              bsd root on rd0a swap on rd0b
>  mainbus0     at root
>  softraid0    at root
>  simplebus*   at fdt?
> +simplepmbus* at fdt?
>  cpu0         at mainbus?
>  
>  # Cortex-A9
> --- /dev/null Wed Feb 17 11:49:05 2021
> +++ sys/dev/fdt/simplepmbus.c Tue Feb 16 17:24:55 2021
> @@ -0,0 +1,62 @@
> +/*   $OpenBSD$       */
> +/*
> + * Copyright (c) 2021 Jonathan Gray <j...@openbsd.org>
> + *
> + * Permission to use, copy, modify, and distribute this software for any
> + * purpose with or without fee is hereby granted, provided that the above
> + * copyright notice and this permission notice appear in all copies.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
> + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
> + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
> + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
> + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
> + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
> + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
> + */
> +
> +#include <sys/param.h>
> +#include <sys/device.h>
> +
> +#include <machine/fdt.h>
> +
> +#include <dev/ofw/openfirm.h>
> +#include <dev/ofw/ofw_clock.h>
> +#include <dev/ofw/ofw_power.h>
> +
> +#include <arm/simplebus/simplebusvar.h>

Maybe like this, was we have in rkpinctrl?

#ifdef __armv7__
#include <arm/simplebus/simplebusvar.h>
#else
#include <arm64/dev/simplebusvar.h>
#endif

Generally I was wondering if we shouldn't just add this to simplebus.c
itself?  You'd need to add a compatible to the match function, and in
the attach function you'd need to check for the compatible and then
do

        power_domain_enable(faa->fa_node);
        clock_enable_all(faa->fa_node);

in the if-block.

Haven't made my mind up yet what I like better, maybe kettenis@ has an
opinion.

Patrick

> +
> +int  simplepmbus_match(struct device *, void *, void *);
> +void simplepmbus_attach(struct device *, struct device *, void *);
> +
> +struct simplepmbus_softc {
> +     struct simplebus_softc sc_bus;
> +};
> +
> +struct cfattach simplepmbus_ca = {
> +     sizeof(struct simplepmbus_softc), simplepmbus_match, simplepmbus_attach
> +};
> +
> +struct cfdriver simplepmbus_cd = {
> +     NULL, "simplepmbus", DV_DULL
> +};
> +
> +int
> +simplepmbus_match(struct device *parent, void *cfdata, void *aux)
> +{
> +     struct fdt_attach_args *faa = aux;
> +
> +     return OF_is_compatible(faa->fa_node, "simple-pm-bus");
> +}
> +
> +void
> +simplepmbus_attach(struct device *parent, struct device *self, void *aux)
> +{
> +     struct simplepmbus_softc *sc = (struct simplepmbus_softc *)self;
> +     struct fdt_attach_args *faa = aux;
> +
> +     power_domain_enable(faa->fa_node);
> +     clock_enable_all(faa->fa_node);
> +
> +     simplebus_attach(parent, &sc->sc_bus.sc_dev, faa);
> +}
> --- /dev/null Wed Feb 17 11:49:07 2021
> +++ share/man/man4/simplepmbus.4      Wed Feb 17 11:31:06 2021
> @@ -0,0 +1,36 @@
> +.\"  $OpenBSD$
> +.\"
> +.\" Copyright (c) 2021 Jonathan Gray <j...@openbsd.org>
> +.\"
> +.\" Permission to use, copy, modify, and distribute this software for any
> +.\" purpose with or without fee is hereby granted, provided that the above
> +.\" copyright notice and this permission notice appear in all copies.
> +.\"
> +.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
> +.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
> +.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
> +.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
> +.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
> +.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
> +.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
> +.\"
> +.Dd $Mdocdate$
> +.Dt SIMPLEPMBUS 4
> +.Os
> +.Sh NAME
> +.Nm simplepmbus
> +.Nd simple power managed bus
> +.Sh SYNOPSIS
> +.Cd "simplepmbus* at fdt?"
> +.Sh DESCRIPTION
> +The
> +.Nm
> +driver provides an abstraction to enable a clock and/or power domain for
> +a group of devices.
> +.Sh SEE ALSO
> +.Xr mainbus 4
> +.Sh HISTORY
> +The
> +.Nm
> +driver first appeared in
> +.Ox 6.9 .
> 

Reply via email to