diff options
author | Andy Shevchenko <andriy.shevchenko@linux.intel.com> | 2015-10-12 07:19:46 -0400 |
---|---|---|
committer | Darren Hart <dvhart@linux.intel.com> | 2015-10-15 11:22:25 -0400 |
commit | 20903169fed97e1a972a85ed0b02f20465ae2ff8 (patch) | |
tree | 64f83654a9c3b3c2662fda3c332da138077c31a5 /drivers/platform | |
parent | b0b3f578a1c363585d0f74f3b80a1dc968d150b4 (diff) |
intel_scu_ipc: Convert to use struct device *
Switch the code to use struct device * instead of struct pci_dev * since there
is no reason to access PCI related features in the driver.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Darren Hart <dvhart@linux.intel.com>
Diffstat (limited to 'drivers/platform')
-rw-r--r-- | drivers/platform/x86/intel_scu_ipc.c | 41 |
1 files changed, 18 insertions, 23 deletions
diff --git a/drivers/platform/x86/intel_scu_ipc.c b/drivers/platform/x86/intel_scu_ipc.c index 6c9367fe569c..5087485a1fa7 100644 --- a/drivers/platform/x86/intel_scu_ipc.c +++ b/drivers/platform/x86/intel_scu_ipc.c | |||
@@ -92,11 +92,8 @@ static struct intel_scu_ipc_pdata_t intel_scu_ipc_tangier_pdata = { | |||
92 | .irq_mode = 0, | 92 | .irq_mode = 0, |
93 | }; | 93 | }; |
94 | 94 | ||
95 | static int ipc_probe(struct pci_dev *dev, const struct pci_device_id *id); | ||
96 | static void ipc_remove(struct pci_dev *pdev); | ||
97 | |||
98 | struct intel_scu_ipc_dev { | 95 | struct intel_scu_ipc_dev { |
99 | struct pci_dev *pdev; | 96 | struct device *dev; |
100 | void __iomem *ipc_base; | 97 | void __iomem *ipc_base; |
101 | void __iomem *i2c_base; | 98 | void __iomem *i2c_base; |
102 | struct completion cmd_complete; | 99 | struct completion cmd_complete; |
@@ -181,7 +178,7 @@ static inline int busy_loop(struct intel_scu_ipc_dev *scu) | |||
181 | } | 178 | } |
182 | 179 | ||
183 | if (status & BIT(0)) { | 180 | if (status & BIT(0)) { |
184 | dev_err(&scu->pdev->dev, "IPC timed out"); | 181 | dev_err(scu->dev, "IPC timed out"); |
185 | return -ETIMEDOUT; | 182 | return -ETIMEDOUT; |
186 | } | 183 | } |
187 | 184 | ||
@@ -197,8 +194,7 @@ static inline int ipc_wait_for_interrupt(struct intel_scu_ipc_dev *scu) | |||
197 | int status; | 194 | int status; |
198 | 195 | ||
199 | if (!wait_for_completion_timeout(&scu->cmd_complete, 3 * HZ)) { | 196 | if (!wait_for_completion_timeout(&scu->cmd_complete, 3 * HZ)) { |
200 | struct device *dev = &scu->pdev->dev; | 197 | dev_err(scu->dev, "IPC timed out\n"); |
201 | dev_err(dev, "IPC timed out\n"); | ||
202 | return -ETIMEDOUT; | 198 | return -ETIMEDOUT; |
203 | } | 199 | } |
204 | 200 | ||
@@ -228,7 +224,7 @@ static int pwr_reg_rdwr(u16 *addr, u8 *data, u32 count, u32 op, u32 id) | |||
228 | 224 | ||
229 | mutex_lock(&ipclock); | 225 | mutex_lock(&ipclock); |
230 | 226 | ||
231 | if (scu->pdev == NULL) { | 227 | if (scu->dev == NULL) { |
232 | mutex_unlock(&ipclock); | 228 | mutex_unlock(&ipclock); |
233 | return -ENODEV; | 229 | return -ENODEV; |
234 | } | 230 | } |
@@ -445,7 +441,7 @@ int intel_scu_ipc_simple_command(int cmd, int sub) | |||
445 | int err; | 441 | int err; |
446 | 442 | ||
447 | mutex_lock(&ipclock); | 443 | mutex_lock(&ipclock); |
448 | if (scu->pdev == NULL) { | 444 | if (scu->dev == NULL) { |
449 | mutex_unlock(&ipclock); | 445 | mutex_unlock(&ipclock); |
450 | return -ENODEV; | 446 | return -ENODEV; |
451 | } | 447 | } |
@@ -475,7 +471,7 @@ int intel_scu_ipc_command(int cmd, int sub, u32 *in, int inlen, | |||
475 | int i, err; | 471 | int i, err; |
476 | 472 | ||
477 | mutex_lock(&ipclock); | 473 | mutex_lock(&ipclock); |
478 | if (scu->pdev == NULL) { | 474 | if (scu->dev == NULL) { |
479 | mutex_unlock(&ipclock); | 475 | mutex_unlock(&ipclock); |
480 | return -ENODEV; | 476 | return -ENODEV; |
481 | } | 477 | } |
@@ -518,7 +514,7 @@ int intel_scu_ipc_i2c_cntrl(u32 addr, u32 *data) | |||
518 | u32 cmd = 0; | 514 | u32 cmd = 0; |
519 | 515 | ||
520 | mutex_lock(&ipclock); | 516 | mutex_lock(&ipclock); |
521 | if (scu->pdev == NULL) { | 517 | if (scu->dev == NULL) { |
522 | mutex_unlock(&ipclock); | 518 | mutex_unlock(&ipclock); |
523 | return -ENODEV; | 519 | return -ENODEV; |
524 | } | 520 | } |
@@ -533,7 +529,7 @@ int intel_scu_ipc_i2c_cntrl(u32 addr, u32 *data) | |||
533 | mdelay(1); | 529 | mdelay(1); |
534 | writel(addr, scu->i2c_base + IPC_I2C_CNTRL_ADDR); | 530 | writel(addr, scu->i2c_base + IPC_I2C_CNTRL_ADDR); |
535 | } else { | 531 | } else { |
536 | dev_err(&scu->pdev->dev, | 532 | dev_err(scu->dev, |
537 | "intel_scu_ipc: I2C INVALID_CMD = 0x%x\n", cmd); | 533 | "intel_scu_ipc: I2C INVALID_CMD = 0x%x\n", cmd); |
538 | 534 | ||
539 | mutex_unlock(&ipclock); | 535 | mutex_unlock(&ipclock); |
@@ -563,42 +559,42 @@ static irqreturn_t ioc(int irq, void *dev_id) | |||
563 | 559 | ||
564 | /** | 560 | /** |
565 | * ipc_probe - probe an Intel SCU IPC | 561 | * ipc_probe - probe an Intel SCU IPC |
566 | * @dev: the PCI device matching | 562 | * @pdev: the PCI device matching |
567 | * @id: entry in the match table | 563 | * @id: entry in the match table |
568 | * | 564 | * |
569 | * Enable and install an intel SCU IPC. This appears in the PCI space | 565 | * Enable and install an intel SCU IPC. This appears in the PCI space |
570 | * but uses some hard coded addresses as well. | 566 | * but uses some hard coded addresses as well. |
571 | */ | 567 | */ |
572 | static int ipc_probe(struct pci_dev *dev, const struct pci_device_id *id) | 568 | static int ipc_probe(struct pci_dev *pdev, const struct pci_device_id *id) |
573 | { | 569 | { |
574 | int err; | 570 | int err; |
575 | struct intel_scu_ipc_dev *scu = &ipcdev; | 571 | struct intel_scu_ipc_dev *scu = &ipcdev; |
576 | struct intel_scu_ipc_pdata_t *pdata; | 572 | struct intel_scu_ipc_pdata_t *pdata; |
577 | 573 | ||
578 | if (scu->pdev) /* We support only one SCU */ | 574 | if (scu->dev) /* We support only one SCU */ |
579 | return -EBUSY; | 575 | return -EBUSY; |
580 | 576 | ||
581 | pdata = (struct intel_scu_ipc_pdata_t *)id->driver_data; | 577 | pdata = (struct intel_scu_ipc_pdata_t *)id->driver_data; |
582 | 578 | ||
583 | scu->pdev = pci_dev_get(dev); | 579 | scu->dev = &pdev->dev; |
584 | scu->irq_mode = pdata->irq_mode; | 580 | scu->irq_mode = pdata->irq_mode; |
585 | 581 | ||
586 | err = pcim_enable_device(dev); | 582 | err = pcim_enable_device(pdev); |
587 | if (err) | 583 | if (err) |
588 | return err; | 584 | return err; |
589 | 585 | ||
590 | err = pcim_iomap_regions(dev, 1 << 0, pci_name(dev)); | 586 | err = pcim_iomap_regions(pdev, 1 << 0, pci_name(pdev)); |
591 | if (err) | 587 | if (err) |
592 | return err; | 588 | return err; |
593 | 589 | ||
594 | init_completion(&scu->cmd_complete); | 590 | init_completion(&scu->cmd_complete); |
595 | 591 | ||
596 | err = devm_request_irq(&dev->dev, dev->irq, ioc, 0, "intel_scu_ipc", | 592 | err = devm_request_irq(&pdev->dev, pdev->irq, ioc, 0, "intel_scu_ipc", |
597 | scu); | 593 | scu); |
598 | if (err) | 594 | if (err) |
599 | return err; | 595 | return err; |
600 | 596 | ||
601 | scu->ipc_base = pcim_iomap_table(dev)[0]; | 597 | scu->ipc_base = pcim_iomap_table(pdev)[0]; |
602 | 598 | ||
603 | scu->i2c_base = ioremap_nocache(pdata->i2c_base, pdata->i2c_len); | 599 | scu->i2c_base = ioremap_nocache(pdata->i2c_base, pdata->i2c_len); |
604 | if (!scu->i2c_base) | 600 | if (!scu->i2c_base) |
@@ -606,7 +602,7 @@ static int ipc_probe(struct pci_dev *dev, const struct pci_device_id *id) | |||
606 | 602 | ||
607 | intel_scu_devices_create(); | 603 | intel_scu_devices_create(); |
608 | 604 | ||
609 | pci_set_drvdata(dev, scu); | 605 | pci_set_drvdata(pdev, scu); |
610 | return 0; | 606 | return 0; |
611 | } | 607 | } |
612 | 608 | ||
@@ -624,8 +620,7 @@ static void ipc_remove(struct pci_dev *pdev) | |||
624 | { | 620 | { |
625 | struct intel_scu_ipc_dev *scu = pci_get_drvdata(pdev); | 621 | struct intel_scu_ipc_dev *scu = pci_get_drvdata(pdev); |
626 | 622 | ||
627 | pci_dev_put(scu->pdev); | 623 | scu->dev = NULL; |
628 | scu->pdev = NULL; | ||
629 | iounmap(scu->i2c_base); | 624 | iounmap(scu->i2c_base); |
630 | intel_scu_devices_destroy(); | 625 | intel_scu_devices_destroy(); |
631 | } | 626 | } |