diff options
Diffstat (limited to 'drivers/mfd/da9063.c')
-rw-r--r-- | drivers/mfd/da9063.c | 48 |
1 files changed, 19 insertions, 29 deletions
diff --git a/drivers/mfd/da9063.c b/drivers/mfd/da9063.c index e1343bac76..04bcad8804 100644 --- a/drivers/mfd/da9063.c +++ b/drivers/mfd/da9063.c @@ -1,16 +1,6 @@ +// SPDX-License-Identifier: GPL-2.0-or-later /* * Copyright (C) 2015 Pengutronix, Philipp Zabel <p.zabel@pengutronix.de> - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * */ #include <common.h> @@ -32,7 +22,7 @@ struct da9063 { struct i2c_client *client; /* dummy client for accessing bank #1 */ struct i2c_client *client1; - struct device_d *dev; + struct device *dev; unsigned int timeout; uint64_t last_ping; }; @@ -263,7 +253,7 @@ static int da9063_watchdog_ping(struct da9063 *priv) static int da9063_watchdog_set_timeout(struct watchdog *wd, unsigned timeout) { struct da9063 *priv = container_of(wd, struct da9063, wd); - struct device_d *dev = priv->dev; + struct device *dev = priv->dev; unsigned int scale = 0; int ret; @@ -366,18 +356,15 @@ static struct da906x_device_data const da9062_device_data = { .init = da9062_device_init, }; -static int da9063_probe(struct device_d *dev) +static int da9063_probe(struct device *dev) { struct da9063 *priv = NULL; struct da906x_device_data const *dev_data; - void const *dev_data_tmp; int ret; - ret = dev_get_drvdata(dev, &dev_data_tmp); - dev_data = ret < 0 ? NULL : dev_data_tmp; + dev_data = device_get_match_data(dev); priv = xzalloc(sizeof(struct da9063)); - priv->wd.priority = of_get_watchdog_priority(dev->device_node); priv->wd.set_timeout = da9063_watchdog_set_timeout; priv->wd.hwdev = dev; priv->timeout = DA9063_INITIAL_TIMEOUT; @@ -396,22 +383,24 @@ static int da9063_probe(struct device_d *dev) da9063_detect_reset_source(priv); - priv->restart.priority = of_get_restart_priority(dev->device_node); + priv->restart.of_node = dev->of_node; priv->restart.name = "da9063"; priv->restart.restart = &da9063_restart; restart_handler_register(&priv->restart); - priv->gpio.base = -1; - priv->gpio.ngpio = 5; - priv->gpio.ops = &da9063_gpio_ops; - priv->gpio.dev = dev; - ret = gpiochip_add(&priv->gpio); - if (ret) - goto on_error; + if (IS_ENABLED(CONFIG_GPIOLIB)) { + priv->gpio.base = -1; + priv->gpio.ngpio = 5; + priv->gpio.ops = &da9063_gpio_ops; + priv->gpio.dev = dev; + ret = gpiochip_add(&priv->gpio); + if (ret) + goto on_error; + } - if (IS_ENABLED(CONFIG_OFDEVICE) && dev->device_node) - return of_platform_populate(dev->device_node, NULL, dev); + if (IS_ENABLED(CONFIG_OFDEVICE) && dev->of_node) + return of_platform_populate(dev->of_node, NULL, dev); return 0; @@ -437,8 +426,9 @@ static struct of_device_id const da906x_dt_ids[] = { }, { } }; +MODULE_DEVICE_TABLE(of, da906x_dt_ids); -static struct driver_d da9063_driver = { +static struct driver da9063_driver = { .name = "da9063", .probe = da9063_probe, .id_table = da9063_id, |