Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 18 Aug 2023 18:35:47 +0100
From:      Jessica Clarke <jrtc27@freebsd.org>
To:        Dmitry Salychev <dsl@FreeBSD.org>
Cc:        "src-committers@freebsd.org" <src-committers@FreeBSD.org>, "dev-commits-src-all@freebsd.org" <dev-commits-src-all@FreeBSD.org>, "dev-commits-src-main@freebsd.org" <dev-commits-src-main@FreeBSD.org>
Subject:   Re: git: 2a9021898c4e - main - sff: Add SFP driver (fdt-based draft)
Message-ID:  <00BDB172-6E09-4000-B59F-843DA4F723F7@freebsd.org>
In-Reply-To: <86h6ow5k9y.fsf@peasant.tower.home>
References:  <202308181040.37IAetMR060855@gitrepo.freebsd.org> <7DD26452-7D0C-45BA-AA01-825B1073FEC6@freebsd.org> <86h6ow5k9y.fsf@peasant.tower.home>

next in thread | previous in thread | raw e-mail | index | archive | help
On 18 Aug 2023, at 18:18, Dmitry Salychev <dsl@FreeBSD.org> wrote:
>=20
>=20
> Jessica Clarke <jrtc27@freebsd.org> writes:
>=20
>> On 18 Aug 2023, at 11:40, Dmitry Salychev <dsl@FreeBSD.org> wrote:
>>>=20
>>> The branch main has been updated by dsl:
>>>=20
>>> URL: =
https://cgit.FreeBSD.org/src/commit/?id=3D2a9021898c4ee2154787da862c238cfe=
ccd655df
>>>=20
>>> commit 2a9021898c4ee2154787da862c238cfeccd655df
>>> Author:     Dmitry Salychev <dsl@FreeBSD.org>
>>> AuthorDate: 2023-08-18 09:17:31 +0000
>>> Commit:     Dmitry Salychev <dsl@FreeBSD.org>
>>> CommitDate: 2023-08-18 10:40:11 +0000
>>>=20
>>>   sff: Add SFP driver (fdt-based draft)
>>>=20
>>>   This basic version of the driver obtains properties of the =
"sff,sfp"
>>>   compatible devices and implements a simple interface to provide an =
I2C
>>>   bus device for the rest of the drivers (e.g. to implement =
SIOCGI2C).
>>>=20
>>>   Both of the interface and driver are subjects for a further
>>>   generalization to be used in case of non-FDT and non-arm64 =
platforms.
>>>=20
>>>   Reviewed by:            bz, manu
>>>   Approved by:            bz (mentor)
>>>   MFC after:              3 weeks
>>>   Differential Revision:  https://reviews.freebsd.org/D41440
>>> ---
>>> sys/arm64/conf/std.nxp   |   3 +
>>> sys/conf/files           |   2 +
>>> sys/dev/sff/sff_if.m     |  35 +++++++++++
>>> sys/dev/sff/sfp_fdt.c    | 155 =
+++++++++++++++++++++++++++++++++++++++++++++++
>>> sys/modules/Makefile     |   2 +
>>> sys/modules/sff/Makefile |  13 ++++
>>> 6 files changed, 210 insertions(+)
>>>=20
>>> diff --git a/sys/arm64/conf/std.nxp b/sys/arm64/conf/std.nxp
>>> index 5b2e2b52d4e6..b4552fadaff4 100644
>>> --- a/sys/arm64/conf/std.nxp
>>> +++ b/sys/arm64/conf/std.nxp
>>> @@ -25,6 +25,9 @@ device sdhci
>>> device dpaa2 # Data Path Acceleration Architecture (2nd Gen)
>>> device enetc # QorIQ LS1028A NIC
>>>=20
>>> +# SFF/SFP
>>> +device sff # Small Form Factor Transceivers
>>> +
>>> options FDT
>>> device acpi
>>>=20
>>> diff --git a/sys/conf/files b/sys/conf/files
>>> index 0db5887e6a75..b5cd85cba0e4 100644
>>> --- a/sys/conf/files
>>> +++ b/sys/conf/files
>>> @@ -3044,6 +3044,8 @@ dev/sdhci/sdhci_pci.c optional sdhci pci
>>> dev/sdio/sdio_if.m optional mmccam
>>> dev/sdio/sdio_subr.c optional mmccam
>>> dev/sdio/sdiob.c optional mmccam
>>> +dev/sff/sff_if.m optional sff
>>> +dev/sff/sfp_fdt.c optional sff fdt
>>> dev/sge/if_sge.c optional sge pci
>>> dev/siis/siis.c optional siis pci
>>> dev/sis/if_sis.c optional sis pci
>>> diff --git a/sys/dev/sff/sff_if.m b/sys/dev/sff/sff_if.m
>>> new file mode 100644
>>> index 000000000000..823e557992c2
>>> --- /dev/null
>>> +++ b/sys/dev/sff/sff_if.m
>>> @@ -0,0 +1,35 @@
>>> +#-
>>> +# SPDX-License-Identifier: BSD-2-Clause
>>> +#
>>> +# Copyright =C2=A9 2023 Dmitry Salychev
>>> +#
>>> +# Redistribution and use in source and binary forms, with or =
without
>>> +# modification, are permitted provided that the following =
conditions
>>> +# are met:
>>> +# 1. Redistributions of source code must retain the above copyright
>>> +#    notice, this list of conditions and the following disclaimer.
>>> +# 2. Redistributions in binary form must reproduce the above =
copyright
>>> +#    notice, this list of conditions and the following disclaimer =
in the
>>> +#    documentation and/or other materials provided with the =
distribution.
>>> +#
>>> +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS =
IS'' AND
>>> +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, =
THE
>>> +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A =
PARTICULAR PURPOSE
>>> +# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE =
LIABLE
>>> +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR =
CONSEQUENTIAL
>>> +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE =
GOODS
>>> +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS =
INTERRUPTION)
>>> +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN =
CONTRACT, STRICT
>>> +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN =
ANY WAY
>>> +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE =
POSSIBILITY OF
>>> +# SUCH DAMAGE.
>>> +#
>>> +
>>> +#include <machine/bus.h>
>>> +
>>> +INTERFACE sff;
>>> +
>>> +METHOD int get_i2c_bus {
>>> + device_t dev;
>>> + device_t *i2c_bus;
>>> +};
>>> diff --git a/sys/dev/sff/sfp_fdt.c b/sys/dev/sff/sfp_fdt.c
>>> new file mode 100644
>>> index 000000000000..7430282ede70
>>> --- /dev/null
>>> +++ b/sys/dev/sff/sfp_fdt.c
>>> @@ -0,0 +1,155 @@
>>> +/*-
>>> + * SPDX-License-Identifier: BSD-2-Clause
>>> + *
>>> + * Copyright =C2=A9 2023 Dmitry Salychev
>>> + *
>>> + * Redistribution and use in source and binary forms, with or =
without
>>> + * modification, are permitted provided that the following =
conditions
>>> + * are met:
>>> + * 1. Redistributions of source code must retain the above =
copyright
>>> + *    notice, this list of conditions and the following disclaimer.
>>> + * 2. Redistributions in binary form must reproduce the above =
copyright
>>> + *    notice, this list of conditions and the following disclaimer =
in the
>>> + *    documentation and/or other materials provided with the =
distribution.
>>> + *
>>> + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS =
IS'' AND
>>> + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED =
TO, THE
>>> + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A =
PARTICULAR PURPOSE
>>> + * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE =
LIABLE
>>> + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR =
CONSEQUENTIAL
>>> + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF =
SUBSTITUTE GOODS
>>> + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS =
INTERRUPTION)
>>> + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN =
CONTRACT, STRICT
>>> + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING =
IN ANY WAY
>>> + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE =
POSSIBILITY OF
>>> + * SUCH DAMAGE.
>>> + */
>>> +
>>> +/*
>>> + * Small Form Factor (SFF) Committee Pluggable (SFP) Transceiver =
(FDT-based).
>>> + */
>>> +
>>> +#include <sys/param.h>
>>> +#include <sys/kernel.h>
>>> +#include <sys/bus.h>
>>> +#include <sys/module.h>
>>> +
>>> +#include <dev/ofw/ofw_bus.h>
>>> +#include <dev/ofw/ofw_bus_subr.h>
>>> +#include <dev/fdt/simplebus.h>
>>> +
>>> +#include "sff_if.h"
>>> +
>>> +struct sfp_fdt_softc {
>>> + phandle_t ofw_node;
>>> + phandle_t i2c_bus;
>>> +
>>> + phandle_t mod_def;
>>> + phandle_t los;
>>> + phandle_t tx_fault;
>>> + phandle_t tx_disable;
>>> + phandle_t rx_rate;
>>> + phandle_t tx_rate;
>>=20
>> These names sound like they should be numbers, not handles to GPIOs.
>>=20
>=20
> FDT example:
>=20
> sfp_xg1: dpmac1-sfp {
>        compatible =3D "sff,sfp";
>        i2c-bus =3D <&sfpupper_i2c>;
>        tx-fault-gpios =3D <&sfpgpio 4 GPIO_ACTIVE_HIGH>;
>        tx-disable-gpios =3D <&sfpgpio 5 GPIO_ACTIVE_HIGH>;
>        mod-def0-gpios =3D <&sfpgpio 6 GPIO_ACTIVE_LOW>;
>        los-gpios =3D <&sfpgpio 7 GPIO_ACTIVE_HIGH>;
>        maximum-power-milliwatt =3D <2000>;
> };

Yes, exactly. =E2=80=9Ctx_rate=E2=80=9D sounds like it=E2=80=99s some =
kind of bits-per-second
measure, for example, that would be a uint32_t (like max_power), but is
in fact a property called =E2=80=9Crate-select1-gpios=E2=80=9D that=E2=80=99=
s a handle. That
is, the softc member names are very confusing.

Jess




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?00BDB172-6E09-4000-B59F-843DA4F723F7>