Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

mfd: sec: Drop now unused struct sec_pmic_dev::irq_data

This was used only to allow the s5m RTC driver to deal with the alarm
IRQ. That driver now uses a different approach to acquire that IRQ, and
::irq_data doesn't need to be kept around anymore.

Signed-off-by: André Draszik <andre.draszik@linaro.org>
Link: https://patch.msgid.link/20260113-s5m-alarm-v3-3-855a19db1277@linaro.org
Signed-off-by: Lee Jones <lee@kernel.org>

authored by

André Draszik and committed by
Lee Jones
b31583a1 c70aee3d

+35 -41
+5 -4
drivers/mfd/sec-common.c
··· 163 163 int sec_pmic_probe(struct device *dev, int device_type, unsigned int irq, 164 164 struct regmap *regmap, struct i2c_client *client) 165 165 { 166 + struct regmap_irq_chip_data *irq_data; 166 167 struct sec_platform_data *pdata; 167 168 const struct mfd_cell *sec_devs; 168 169 struct sec_pmic_dev *sec_pmic; ··· 188 187 189 188 sec_pmic->pdata = pdata; 190 189 191 - ret = sec_irq_init(sec_pmic); 192 - if (ret) 193 - return ret; 190 + irq_data = sec_irq_init(sec_pmic); 191 + if (IS_ERR(irq_data)) 192 + return PTR_ERR(irq_data); 194 193 195 194 pm_runtime_set_active(sec_pmic->dev); 196 195 ··· 241 240 sec_pmic->device_type); 242 241 } 243 242 ret = devm_mfd_add_devices(sec_pmic->dev, -1, sec_devs, num_sec_devs, 244 - NULL, 0, regmap_irq_get_domain(sec_pmic->irq_data)); 243 + NULL, 0, regmap_irq_get_domain(irq_data)); 245 244 if (ret) 246 245 return ret; 247 246
+1 -1
drivers/mfd/sec-core.h
··· 18 18 struct regmap *regmap, struct i2c_client *client); 19 19 void sec_pmic_shutdown(struct device *dev); 20 20 21 - int sec_irq_init(struct sec_pmic_dev *sec_pmic); 21 + struct regmap_irq_chip_data *sec_irq_init(struct sec_pmic_dev *sec_pmic); 22 22 23 23 #endif /* __SEC_CORE_INT_H */
+29 -35
drivers/mfd/sec-irq.c
··· 268 268 .ack_base = S5M8767_REG_INT1, 269 269 }; 270 270 271 - static int s2mpg1x_add_chained_irq_chip(struct device *dev, struct regmap *regmap, int pirq, 272 - struct regmap_irq_chip_data *parent, 273 - const struct regmap_irq_chip *chip, 274 - struct regmap_irq_chip_data **data) 271 + static struct regmap_irq_chip_data * 272 + s2mpg1x_add_chained_pmic(struct sec_pmic_dev *sec_pmic, int pirq, 273 + struct regmap_irq_chip_data *parent, const struct regmap_irq_chip *chip) 275 274 { 275 + struct device *dev = sec_pmic->dev; 276 + struct regmap_irq_chip_data *data; 276 277 int irq, ret; 277 278 278 279 irq = regmap_irq_get_virq(parent, pirq); 279 280 if (irq < 0) 280 - return dev_err_probe(dev, irq, "Failed to get parent vIRQ(%d) for chip %s\n", pirq, 281 - chip->name); 281 + return dev_err_ptr_probe(dev, irq, "Failed to get parent vIRQ(%d) for chip %s\n", 282 + pirq, chip->name); 282 283 283 - ret = devm_regmap_add_irq_chip(dev, regmap, irq, IRQF_ONESHOT | IRQF_SHARED, 0, chip, data); 284 + ret = devm_regmap_add_irq_chip(dev, sec_pmic->regmap_pmic, irq, 285 + IRQF_ONESHOT | IRQF_SHARED, 0, chip, &data); 284 286 if (ret) 285 - return dev_err_probe(dev, ret, "Failed to add %s IRQ chip\n", chip->name); 287 + return dev_err_ptr_probe(dev, ret, "Failed to add %s IRQ chip\n", chip->name); 286 288 287 - return 0; 289 + return data; 288 290 } 289 291 290 - static int sec_irq_init_s2mpg1x(struct sec_pmic_dev *sec_pmic) 292 + static struct regmap_irq_chip_data *sec_irq_init_s2mpg1x(struct sec_pmic_dev *sec_pmic) 291 293 { 292 294 const struct regmap_irq_chip *irq_chip, *chained_irq_chip; 293 295 struct regmap_irq_chip_data *irq_data; ··· 304 302 chained_pirq = S2MPG10_COMMON_IRQ_PMIC; 305 303 break; 306 304 default: 307 - return dev_err_probe(sec_pmic->dev, -EINVAL, "Unsupported device type %d\n", 308 - sec_pmic->device_type); 305 + return dev_err_ptr_probe(sec_pmic->dev, -EINVAL, "Unsupported device type %d\n", 306 + sec_pmic->device_type); 309 307 } 310 308 311 309 regmap_common = dev_get_regmap(sec_pmic->dev, "common"); 312 310 if (!regmap_common) 313 - return dev_err_probe(sec_pmic->dev, -EINVAL, "No 'common' regmap %d\n", 314 - sec_pmic->device_type); 311 + return dev_err_ptr_probe(sec_pmic->dev, -EINVAL, "No 'common' regmap %d\n", 312 + sec_pmic->device_type); 315 313 316 314 ret = devm_regmap_add_irq_chip(sec_pmic->dev, regmap_common, sec_pmic->irq, IRQF_ONESHOT, 0, 317 315 irq_chip, &irq_data); 318 316 if (ret) 319 - return dev_err_probe(sec_pmic->dev, ret, "Failed to add %s IRQ chip\n", 320 - irq_chip->name); 317 + return dev_err_ptr_probe(sec_pmic->dev, ret, "Failed to add %s IRQ chip\n", 318 + irq_chip->name); 321 319 322 - return s2mpg1x_add_chained_irq_chip(sec_pmic->dev, sec_pmic->regmap_pmic, chained_pirq, 323 - irq_data, chained_irq_chip, &sec_pmic->irq_data); 320 + return s2mpg1x_add_chained_pmic(sec_pmic, chained_pirq, irq_data, chained_irq_chip); 324 321 } 325 322 326 - int sec_irq_init(struct sec_pmic_dev *sec_pmic) 323 + struct regmap_irq_chip_data *sec_irq_init(struct sec_pmic_dev *sec_pmic) 327 324 { 325 + struct regmap_irq_chip_data *sec_irq_chip_data; 328 326 const struct regmap_irq_chip *sec_irq_chip; 329 327 int ret; 330 328 ··· 333 331 sec_irq_chip = &s5m8767_irq_chip; 334 332 break; 335 333 case S2DOS05: 336 - return 0; 334 + return NULL; 337 335 case S2MPA01: 338 336 sec_irq_chip = &s2mps14_irq_chip; 339 337 break; ··· 358 356 sec_irq_chip = &s2mpu05_irq_chip; 359 357 break; 360 358 default: 361 - return dev_err_probe(sec_pmic->dev, -EINVAL, 362 - "Unsupported device type %d\n", 363 - sec_pmic->device_type); 359 + return dev_err_ptr_probe(sec_pmic->dev, -EINVAL, "Unsupported device type %d\n", 360 + sec_pmic->device_type); 364 361 } 365 362 366 363 if (!sec_pmic->irq) { 367 364 dev_warn(sec_pmic->dev, 368 365 "No interrupt specified, no interrupts\n"); 369 - return 0; 366 + return NULL; 370 367 } 371 368 372 369 ret = devm_regmap_add_irq_chip(sec_pmic->dev, sec_pmic->regmap_pmic, 373 370 sec_pmic->irq, IRQF_ONESHOT, 374 - 0, sec_irq_chip, &sec_pmic->irq_data); 371 + 0, sec_irq_chip, &sec_irq_chip_data); 375 372 if (ret) 376 - return dev_err_probe(sec_pmic->dev, ret, 377 - "Failed to add %s IRQ chip\n", 378 - sec_irq_chip->name); 373 + return dev_err_ptr_probe(sec_pmic->dev, ret, "Failed to add %s IRQ chip\n", 374 + sec_irq_chip->name); 379 375 380 - /* 381 - * The rtc-s5m driver requests S2MPS14_IRQ_RTCA0 also for S2MPS11 382 - * so the interrupt number must be consistent. 383 - */ 384 - BUILD_BUG_ON(((enum s2mps14_irq)S2MPS11_IRQ_RTCA0) != S2MPS14_IRQ_RTCA0); 385 - 386 - return 0; 376 + return sec_irq_chip_data; 387 377 }
-1
include/linux/mfd/samsung/core.h
··· 69 69 70 70 int device_type; 71 71 int irq; 72 - struct regmap_irq_chip_data *irq_data; 73 72 }; 74 73 75 74 struct sec_platform_data {