lkml.org 
[lkml]   [2024]   [Apr]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 3/4] can: mcp251xfd: add gpio functionality
    On 17.04.2024 15:43:56, Gregor Herburger wrote:
    > The mcp251xfd devices allow two pins to be configured as gpio. Add this
    > functionality to driver.
    >
    > Signed-off-by: Gregor Herburger <gregor.herburger@ew.tq-group.com>
    > ---
    > drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c | 138 ++++++++++++++++++++++-
    > drivers/net/can/spi/mcp251xfd/mcp251xfd-regmap.c | 21 +++-
    > drivers/net/can/spi/mcp251xfd/mcp251xfd.h | 4 +
    > 3 files changed, 159 insertions(+), 4 deletions(-)
    >
    > diff --git a/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c b/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c
    > index eb699288c076..5ba9fd0af4b6 100644
    > --- a/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c
    > +++ b/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c

    [...]

    > +static int mcp251fdx_gpio_setup(struct mcp251xfd_priv *priv)
    > +{
    > + struct gpio_chip *gc = &priv->gc;
    > +
    > + if (!device_property_present(&priv->spi->dev, "gpio-controller"))
    > + return 0;
    > +
    > + if (priv->rx_int)
    > + return dev_err_probe(&priv->spi->dev, -EINVAL,
    > + "Can't configure gpio-controller with RX-INT!\n");
    > +
    > + gc->label = dev_name(&priv->spi->dev);
    > + gc->parent = &priv->spi->dev;
    > + gc->owner = THIS_MODULE;
    > + gc->request = mcp251xfd_gpio_request;
    > + gc->get_direction = mcp251xfd_gpio_get_direction;
    > + gc->direction_output = mcp251xfd_gpio_direction_output;
    > + gc->direction_input = mcp251xfd_gpio_direction_input;
    > + gc->get = mcp251xfd_gpio_get;
    > + gc->set = mcp251xfd_gpio_set;

    Please also implement the get_multiple and set_multiple callbacks.

    > + gc->base = -1;
    > + gc->can_sleep = true;
    > + gc->ngpio = ARRAY_SIZE(mcp251xfd_gpio_names);
    > + gc->names = mcp251xfd_gpio_names;
    > +
    > + return devm_gpiochip_add_data(&priv->spi->dev, gc, priv);
    > +}
    > +
    > static int
    > mcp251xfd_register_get_dev_id(const struct mcp251xfd_priv *priv, u32 *dev_id,
    > u32 *effective_speed_hz_slow,
    > @@ -2142,6 +2270,12 @@ static int mcp251xfd_probe(struct spi_device *spi)

    [...]

    > diff --git a/drivers/net/can/spi/mcp251xfd/mcp251xfd.h b/drivers/net/can/spi/mcp251xfd/mcp251xfd.h
    > index 24510b3b8020..e2ab486862d8 100644
    > --- a/drivers/net/can/spi/mcp251xfd/mcp251xfd.h
    > +++ b/drivers/net/can/spi/mcp251xfd/mcp251xfd.h
    > @@ -14,6 +14,7 @@
    > #include <linux/can/core.h>
    > #include <linux/can/dev.h>
    > #include <linux/can/rx-offload.h>
    > +#include <linux/gpio/driver.h>

    please keep the includes alphabetically sorted.

    > #include <linux/gpio/consumer.h>
    > #include <linux/kernel.h>
    > #include <linux/netdevice.h>
    > @@ -660,6 +661,9 @@ struct mcp251xfd_priv {
    >
    > struct mcp251xfd_devtype_data devtype_data;
    > struct can_berr_counter bec;
    > +#ifdef CONFIG_GPIOLIB
    > + struct gpio_chip gc;
    > +#endif
    > };
    >
    > #define MCP251XFD_IS(_model) \

    regards,
    Marc

    --
    Pengutronix e.K. | Marc Kleine-Budde |
    Embedded Linux | https://www.pengutronix.de |
    Vertretung Nürnberg | Phone: +49-5121-206917-129 |
    Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-9 |
    [unhandled content-type:application/pgp-signature]
    \
     
     \ /
      Last update: 2024-04-24 11:16    [W:3.186 / U:0.064 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site