| .. | .. |
|---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-only |
|---|
| 1 | 2 | /* |
|---|
| 2 | 3 | * Core driver for TI TPS65090 PMIC family |
|---|
| 3 | 4 | * |
|---|
| 4 | 5 | * Copyright (c) 2012, NVIDIA CORPORATION. All rights reserved. |
|---|
| 5 | | - |
|---|
| 6 | | - * This program is free software; you can redistribute it and/or modify it |
|---|
| 7 | | - * under the terms and conditions of the GNU General Public License, |
|---|
| 8 | | - * version 2, as published by the Free Software Foundation. |
|---|
| 9 | | - |
|---|
| 10 | | - * This program is distributed in the hope it will be useful, but WITHOUT |
|---|
| 11 | | - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
|---|
| 12 | | - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
|---|
| 13 | | - * more details. |
|---|
| 14 | | - |
|---|
| 15 | | - * You should have received a copy of the GNU General Public License |
|---|
| 16 | | - * along with this program. If not, see <http://www.gnu.org/licenses/>. |
|---|
| 6 | + * |
|---|
| 7 | + * Author: Venu Byravarasu <vbyravarasu@nvidia.com> |
|---|
| 17 | 8 | */ |
|---|
| 18 | 9 | |
|---|
| 19 | 10 | #include <linux/interrupt.h> |
|---|
| 20 | 11 | #include <linux/irq.h> |
|---|
| 21 | 12 | #include <linux/kernel.h> |
|---|
| 22 | | -#include <linux/module.h> |
|---|
| 13 | +#include <linux/init.h> |
|---|
| 23 | 14 | #include <linux/mutex.h> |
|---|
| 24 | 15 | #include <linux/slab.h> |
|---|
| 25 | 16 | #include <linux/i2c.h> |
|---|
| .. | .. |
|---|
| 171 | 162 | { .compatible = "ti,tps65090",}, |
|---|
| 172 | 163 | {}, |
|---|
| 173 | 164 | }; |
|---|
| 174 | | -MODULE_DEVICE_TABLE(of, tps65090_of_match); |
|---|
| 175 | 165 | #endif |
|---|
| 176 | 166 | |
|---|
| 177 | 167 | static int tps65090_i2c_probe(struct i2c_client *client, |
|---|
| .. | .. |
|---|
| 236 | 226 | return ret; |
|---|
| 237 | 227 | } |
|---|
| 238 | 228 | |
|---|
| 239 | | -static int tps65090_i2c_remove(struct i2c_client *client) |
|---|
| 240 | | -{ |
|---|
| 241 | | - struct tps65090 *tps65090 = i2c_get_clientdata(client); |
|---|
| 242 | | - |
|---|
| 243 | | - mfd_remove_devices(tps65090->dev); |
|---|
| 244 | | - if (client->irq) |
|---|
| 245 | | - regmap_del_irq_chip(client->irq, tps65090->irq_data); |
|---|
| 246 | | - |
|---|
| 247 | | - return 0; |
|---|
| 248 | | -} |
|---|
| 249 | 229 | |
|---|
| 250 | 230 | static const struct i2c_device_id tps65090_id_table[] = { |
|---|
| 251 | 231 | { "tps65090", 0 }, |
|---|
| 252 | 232 | { }, |
|---|
| 253 | 233 | }; |
|---|
| 254 | | -MODULE_DEVICE_TABLE(i2c, tps65090_id_table); |
|---|
| 255 | 234 | |
|---|
| 256 | 235 | static struct i2c_driver tps65090_driver = { |
|---|
| 257 | 236 | .driver = { |
|---|
| 258 | 237 | .name = "tps65090", |
|---|
| 238 | + .suppress_bind_attrs = true, |
|---|
| 259 | 239 | .of_match_table = of_match_ptr(tps65090_of_match), |
|---|
| 260 | 240 | }, |
|---|
| 261 | 241 | .probe = tps65090_i2c_probe, |
|---|
| 262 | | - .remove = tps65090_i2c_remove, |
|---|
| 263 | 242 | .id_table = tps65090_id_table, |
|---|
| 264 | 243 | }; |
|---|
| 265 | 244 | |
|---|
| .. | .. |
|---|
| 268 | 247 | return i2c_add_driver(&tps65090_driver); |
|---|
| 269 | 248 | } |
|---|
| 270 | 249 | subsys_initcall(tps65090_init); |
|---|
| 271 | | - |
|---|
| 272 | | -static void __exit tps65090_exit(void) |
|---|
| 273 | | -{ |
|---|
| 274 | | - i2c_del_driver(&tps65090_driver); |
|---|
| 275 | | -} |
|---|
| 276 | | -module_exit(tps65090_exit); |
|---|
| 277 | | - |
|---|
| 278 | | -MODULE_DESCRIPTION("TPS65090 core driver"); |
|---|
| 279 | | -MODULE_AUTHOR("Venu Byravarasu <vbyravarasu@nvidia.com>"); |
|---|
| 280 | | -MODULE_LICENSE("GPL v2"); |
|---|