.. | .. |
---|
399 | 399 | struct device *dev = &pdev->dev; |
---|
400 | 400 | int rc; |
---|
401 | 401 | |
---|
402 | | - bt_bmc->irq = platform_get_irq(pdev, 0); |
---|
403 | | - if (!bt_bmc->irq) |
---|
404 | | - return -ENODEV; |
---|
| 402 | + bt_bmc->irq = platform_get_irq_optional(pdev, 0); |
---|
| 403 | + if (bt_bmc->irq < 0) |
---|
| 404 | + return bt_bmc->irq; |
---|
405 | 405 | |
---|
406 | 406 | rc = devm_request_irq(dev, bt_bmc->irq, bt_bmc_irq, IRQF_SHARED, |
---|
407 | 407 | DEVICE_NAME, bt_bmc); |
---|
408 | 408 | if (rc < 0) { |
---|
409 | 409 | dev_warn(dev, "Unable to request IRQ %d\n", bt_bmc->irq); |
---|
410 | | - bt_bmc->irq = 0; |
---|
| 410 | + bt_bmc->irq = rc; |
---|
411 | 411 | return rc; |
---|
412 | 412 | } |
---|
413 | 413 | |
---|
.. | .. |
---|
430 | 430 | struct device *dev; |
---|
431 | 431 | int rc; |
---|
432 | 432 | |
---|
433 | | - if (!pdev || !pdev->dev.of_node) |
---|
434 | | - return -ENODEV; |
---|
435 | | - |
---|
436 | 433 | dev = &pdev->dev; |
---|
437 | 434 | dev_info(dev, "Found bt bmc device\n"); |
---|
438 | 435 | |
---|
.. | .. |
---|
444 | 441 | |
---|
445 | 442 | bt_bmc->map = syscon_node_to_regmap(pdev->dev.parent->of_node); |
---|
446 | 443 | if (IS_ERR(bt_bmc->map)) { |
---|
447 | | - struct resource *res; |
---|
448 | 444 | void __iomem *base; |
---|
449 | 445 | |
---|
450 | 446 | /* |
---|
451 | 447 | * Assume it's not the MFD-based devicetree description, in |
---|
452 | 448 | * which case generate a regmap ourselves |
---|
453 | 449 | */ |
---|
454 | | - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
---|
455 | | - base = devm_ioremap_resource(&pdev->dev, res); |
---|
| 450 | + base = devm_platform_ioremap_resource(pdev, 0); |
---|
456 | 451 | if (IS_ERR(base)) |
---|
457 | 452 | return PTR_ERR(base); |
---|
458 | 453 | |
---|
.. | .. |
---|
468 | 463 | init_waitqueue_head(&bt_bmc->queue); |
---|
469 | 464 | |
---|
470 | 465 | bt_bmc->miscdev.minor = MISC_DYNAMIC_MINOR, |
---|
471 | | - bt_bmc->miscdev.name = DEVICE_NAME, |
---|
472 | | - bt_bmc->miscdev.fops = &bt_bmc_fops, |
---|
473 | | - bt_bmc->miscdev.parent = dev; |
---|
| 466 | + bt_bmc->miscdev.name = DEVICE_NAME, |
---|
| 467 | + bt_bmc->miscdev.fops = &bt_bmc_fops, |
---|
| 468 | + bt_bmc->miscdev.parent = dev; |
---|
474 | 469 | rc = misc_register(&bt_bmc->miscdev); |
---|
475 | 470 | if (rc) { |
---|
476 | 471 | dev_err(dev, "Unable to register misc device\n"); |
---|
.. | .. |
---|
479 | 474 | |
---|
480 | 475 | bt_bmc_config_irq(bt_bmc, pdev); |
---|
481 | 476 | |
---|
482 | | - if (bt_bmc->irq) { |
---|
| 477 | + if (bt_bmc->irq >= 0) { |
---|
483 | 478 | dev_info(dev, "Using IRQ %d\n", bt_bmc->irq); |
---|
484 | 479 | } else { |
---|
485 | 480 | dev_info(dev, "No IRQ; using timer\n"); |
---|
.. | .. |
---|
505 | 500 | struct bt_bmc *bt_bmc = dev_get_drvdata(&pdev->dev); |
---|
506 | 501 | |
---|
507 | 502 | misc_deregister(&bt_bmc->miscdev); |
---|
508 | | - if (!bt_bmc->irq) |
---|
| 503 | + if (bt_bmc->irq < 0) |
---|
509 | 504 | del_timer_sync(&bt_bmc->poll_timer); |
---|
510 | 505 | return 0; |
---|
511 | 506 | } |
---|