| .. | .. |
|---|
| 1 | +// SPDX-License-Identifier: GPL-2.0+ |
|---|
| 1 | 2 | /* |
|---|
| 2 | | - * da9063-core.c: Device access for Dialog DA9063 modules |
|---|
| 3 | + * Device access for Dialog DA9063 modules |
|---|
| 3 | 4 | * |
|---|
| 4 | 5 | * Copyright 2012 Dialog Semiconductors Ltd. |
|---|
| 5 | 6 | * Copyright 2013 Philipp Zabel, Pengutronix |
|---|
| 6 | 7 | * |
|---|
| 7 | 8 | * Author: Krystian Garbaciak, Dialog Semiconductor |
|---|
| 8 | 9 | * Author: Michal Hajduk, Dialog Semiconductor |
|---|
| 9 | | - * |
|---|
| 10 | | - * This program is free software; you can redistribute it and/or modify it |
|---|
| 11 | | - * under the terms of the GNU General Public License as published by the |
|---|
| 12 | | - * Free Software Foundation; either version 2 of the License, or (at your |
|---|
| 13 | | - * option) any later version. |
|---|
| 14 | 10 | * |
|---|
| 15 | 11 | */ |
|---|
| 16 | 12 | |
|---|
| .. | .. |
|---|
| 26 | 22 | #include <linux/regmap.h> |
|---|
| 27 | 23 | |
|---|
| 28 | 24 | #include <linux/mfd/da9063/core.h> |
|---|
| 29 | | -#include <linux/mfd/da9063/pdata.h> |
|---|
| 30 | 25 | #include <linux/mfd/da9063/registers.h> |
|---|
| 31 | 26 | |
|---|
| 32 | 27 | #include <linux/proc_fs.h> |
|---|
| .. | .. |
|---|
| 165 | 160 | |
|---|
| 166 | 161 | int da9063_device_init(struct da9063 *da9063, unsigned int irq) |
|---|
| 167 | 162 | { |
|---|
| 168 | | - struct da9063_pdata *pdata = da9063->dev->platform_data; |
|---|
| 169 | | - int model, variant_id, variant_code; |
|---|
| 170 | 163 | int ret; |
|---|
| 171 | 164 | |
|---|
| 172 | 165 | ret = da9063_clear_fault_log(da9063); |
|---|
| 173 | 166 | if (ret < 0) |
|---|
| 174 | 167 | dev_err(da9063->dev, "Cannot clear fault log\n"); |
|---|
| 175 | 168 | |
|---|
| 176 | | - if (pdata) { |
|---|
| 177 | | - da9063->flags = pdata->flags; |
|---|
| 178 | | - da9063->irq_base = pdata->irq_base; |
|---|
| 179 | | - } else { |
|---|
| 180 | | - da9063->flags = 0; |
|---|
| 181 | | - da9063->irq_base = -1; |
|---|
| 182 | | - } |
|---|
| 169 | + da9063->flags = 0; |
|---|
| 170 | + da9063->irq_base = -1; |
|---|
| 183 | 171 | da9063->chip_irq = irq; |
|---|
| 184 | | - |
|---|
| 185 | | - if (pdata && pdata->init != NULL) { |
|---|
| 186 | | - ret = pdata->init(da9063); |
|---|
| 187 | | - if (ret != 0) { |
|---|
| 188 | | - dev_err(da9063->dev, |
|---|
| 189 | | - "Platform initialization failed.\n"); |
|---|
| 190 | | - return ret; |
|---|
| 191 | | - } |
|---|
| 192 | | - } |
|---|
| 193 | | - |
|---|
| 194 | | - ret = regmap_read(da9063->regmap, DA9063_REG_CHIP_ID, &model); |
|---|
| 195 | | - if (ret < 0) { |
|---|
| 196 | | - dev_err(da9063->dev, "Cannot read chip model id.\n"); |
|---|
| 197 | | - return -EIO; |
|---|
| 198 | | - } |
|---|
| 199 | | - if (model != PMIC_CHIP_ID_DA9063) { |
|---|
| 200 | | - dev_err(da9063->dev, "Invalid chip model id: 0x%02x\n", model); |
|---|
| 201 | | - return -ENODEV; |
|---|
| 202 | | - } |
|---|
| 203 | | - |
|---|
| 204 | | - ret = regmap_read(da9063->regmap, DA9063_REG_CHIP_VARIANT, &variant_id); |
|---|
| 205 | | - if (ret < 0) { |
|---|
| 206 | | - dev_err(da9063->dev, "Cannot read chip variant id.\n"); |
|---|
| 207 | | - return -EIO; |
|---|
| 208 | | - } |
|---|
| 209 | | - |
|---|
| 210 | | - variant_code = variant_id >> DA9063_CHIP_VARIANT_SHIFT; |
|---|
| 211 | | - |
|---|
| 212 | | - dev_info(da9063->dev, |
|---|
| 213 | | - "Device detected (chip-ID: 0x%02X, var-ID: 0x%02X)\n", |
|---|
| 214 | | - model, variant_id); |
|---|
| 215 | | - |
|---|
| 216 | | - if (variant_code < PMIC_DA9063_BB && variant_code != PMIC_DA9063_AD) { |
|---|
| 217 | | - dev_err(da9063->dev, |
|---|
| 218 | | - "Cannot support variant code: 0x%02X\n", variant_code); |
|---|
| 219 | | - return -ENODEV; |
|---|
| 220 | | - } |
|---|
| 221 | | - |
|---|
| 222 | | - da9063->variant_code = variant_code; |
|---|
| 223 | 172 | |
|---|
| 224 | 173 | ret = da9063_irq_init(da9063); |
|---|
| 225 | 174 | if (ret) { |
|---|