diff options
-rw-r--r-- | arch/arm/kernel/bios32.c | 12 | ||||
-rw-r--r-- | drivers/edac/i82875p_edac.c | 8 | ||||
-rw-r--r-- | drivers/pci/bus.c | 10 | ||||
-rw-r--r-- | drivers/pci/host/pci-exynos.c | 7 | ||||
-rw-r--r-- | drivers/pci/host/pci-imx6.c | 147 | ||||
-rw-r--r-- | drivers/pci/host/pcie-designware.c | 6 | ||||
-rw-r--r-- | drivers/pci/host/pcie-designware.h | 2 | ||||
-rw-r--r-- | drivers/pci/iov.c | 2 | ||||
-rw-r--r-- | drivers/platform/x86/asus-wmi.c | 3 | ||||
-rw-r--r-- | drivers/platform/x86/eeepc-laptop.c | 3 | ||||
-rw-r--r-- | include/linux/pci.h | 2 |
11 files changed, 83 insertions, 119 deletions
diff --git a/arch/arm/kernel/bios32.c b/arch/arm/kernel/bios32.c index 16d43cd45619..17a26c17f7f5 100644 --- a/arch/arm/kernel/bios32.c +++ b/arch/arm/kernel/bios32.c | |||
@@ -545,6 +545,18 @@ void pci_common_init_dev(struct device *parent, struct hw_pci *hw) | |||
545 | */ | 545 | */ |
546 | pci_bus_add_devices(bus); | 546 | pci_bus_add_devices(bus); |
547 | } | 547 | } |
548 | |||
549 | list_for_each_entry(sys, &head, node) { | ||
550 | struct pci_bus *bus = sys->bus; | ||
551 | |||
552 | /* Configure PCI Express settings */ | ||
553 | if (bus && !pci_has_flag(PCI_PROBE_ONLY)) { | ||
554 | struct pci_bus *child; | ||
555 | |||
556 | list_for_each_entry(child, &bus->children, node) | ||
557 | pcie_bus_configure_settings(child); | ||
558 | } | ||
559 | } | ||
548 | } | 560 | } |
549 | 561 | ||
550 | #ifndef CONFIG_PCI_HOST_ITE8152 | 562 | #ifndef CONFIG_PCI_HOST_ITE8152 |
diff --git a/drivers/edac/i82875p_edac.c b/drivers/edac/i82875p_edac.c index 8d0450b9b9af..64b68320249f 100644 --- a/drivers/edac/i82875p_edac.c +++ b/drivers/edac/i82875p_edac.c | |||
@@ -275,7 +275,6 @@ static int i82875p_setup_overfl_dev(struct pci_dev *pdev, | |||
275 | { | 275 | { |
276 | struct pci_dev *dev; | 276 | struct pci_dev *dev; |
277 | void __iomem *window; | 277 | void __iomem *window; |
278 | int err; | ||
279 | 278 | ||
280 | *ovrfl_pdev = NULL; | 279 | *ovrfl_pdev = NULL; |
281 | *ovrfl_window = NULL; | 280 | *ovrfl_window = NULL; |
@@ -293,13 +292,8 @@ static int i82875p_setup_overfl_dev(struct pci_dev *pdev, | |||
293 | if (dev == NULL) | 292 | if (dev == NULL) |
294 | return 1; | 293 | return 1; |
295 | 294 | ||
296 | err = pci_bus_add_device(dev); | ||
297 | if (err) { | ||
298 | i82875p_printk(KERN_ERR, | ||
299 | "%s(): pci_bus_add_device() Failed\n", | ||
300 | __func__); | ||
301 | } | ||
302 | pci_bus_assign_resources(dev->bus); | 295 | pci_bus_assign_resources(dev->bus); |
296 | pci_bus_add_device(dev); | ||
303 | } | 297 | } |
304 | 298 | ||
305 | *ovrfl_pdev = dev; | 299 | *ovrfl_pdev = dev; |
diff --git a/drivers/pci/bus.c b/drivers/pci/bus.c index ba2bf55a38df..447d393725e1 100644 --- a/drivers/pci/bus.c +++ b/drivers/pci/bus.c | |||
@@ -235,7 +235,7 @@ void __weak pcibios_resource_survey_bus(struct pci_bus *bus) { } | |||
235 | * | 235 | * |
236 | * This adds add sysfs entries and start device drivers | 236 | * This adds add sysfs entries and start device drivers |
237 | */ | 237 | */ |
238 | int pci_bus_add_device(struct pci_dev *dev) | 238 | void pci_bus_add_device(struct pci_dev *dev) |
239 | { | 239 | { |
240 | int retval; | 240 | int retval; |
241 | 241 | ||
@@ -252,8 +252,6 @@ int pci_bus_add_device(struct pci_dev *dev) | |||
252 | WARN_ON(retval < 0); | 252 | WARN_ON(retval < 0); |
253 | 253 | ||
254 | dev->is_added = 1; | 254 | dev->is_added = 1; |
255 | |||
256 | return 0; | ||
257 | } | 255 | } |
258 | 256 | ||
259 | /** | 257 | /** |
@@ -266,16 +264,12 @@ void pci_bus_add_devices(const struct pci_bus *bus) | |||
266 | { | 264 | { |
267 | struct pci_dev *dev; | 265 | struct pci_dev *dev; |
268 | struct pci_bus *child; | 266 | struct pci_bus *child; |
269 | int retval; | ||
270 | 267 | ||
271 | list_for_each_entry(dev, &bus->devices, bus_list) { | 268 | list_for_each_entry(dev, &bus->devices, bus_list) { |
272 | /* Skip already-added devices */ | 269 | /* Skip already-added devices */ |
273 | if (dev->is_added) | 270 | if (dev->is_added) |
274 | continue; | 271 | continue; |
275 | retval = pci_bus_add_device(dev); | 272 | pci_bus_add_device(dev); |
276 | if (retval) | ||
277 | dev_err(&dev->dev, "Error adding device (%d)\n", | ||
278 | retval); | ||
279 | } | 273 | } |
280 | 274 | ||
281 | list_for_each_entry(dev, &bus->devices, bus_list) { | 275 | list_for_each_entry(dev, &bus->devices, bus_list) { |
diff --git a/drivers/pci/host/pci-exynos.c b/drivers/pci/host/pci-exynos.c index 81aa700a8ada..1632661c5b7f 100644 --- a/drivers/pci/host/pci-exynos.c +++ b/drivers/pci/host/pci-exynos.c | |||
@@ -415,9 +415,7 @@ static irqreturn_t exynos_pcie_msi_irq_handler(int irq, void *arg) | |||
415 | { | 415 | { |
416 | struct pcie_port *pp = arg; | 416 | struct pcie_port *pp = arg; |
417 | 417 | ||
418 | dw_handle_msi_irq(pp); | 418 | return dw_handle_msi_irq(pp); |
419 | |||
420 | return IRQ_HANDLED; | ||
421 | } | 419 | } |
422 | 420 | ||
423 | static void exynos_pcie_msi_init(struct pcie_port *pp) | 421 | static void exynos_pcie_msi_init(struct pcie_port *pp) |
@@ -511,7 +509,8 @@ static struct pcie_host_ops exynos_pcie_host_ops = { | |||
511 | .host_init = exynos_pcie_host_init, | 509 | .host_init = exynos_pcie_host_init, |
512 | }; | 510 | }; |
513 | 511 | ||
514 | static int add_pcie_port(struct pcie_port *pp, struct platform_device *pdev) | 512 | static int __init add_pcie_port(struct pcie_port *pp, |
513 | struct platform_device *pdev) | ||
515 | { | 514 | { |
516 | int ret; | 515 | int ret; |
517 | 516 | ||
diff --git a/drivers/pci/host/pci-imx6.c b/drivers/pci/host/pci-imx6.c index ee082509b0ba..a5645ae4aef0 100644 --- a/drivers/pci/host/pci-imx6.c +++ b/drivers/pci/host/pci-imx6.c | |||
@@ -25,6 +25,7 @@ | |||
25 | #include <linux/resource.h> | 25 | #include <linux/resource.h> |
26 | #include <linux/signal.h> | 26 | #include <linux/signal.h> |
27 | #include <linux/types.h> | 27 | #include <linux/types.h> |
28 | #include <linux/interrupt.h> | ||
28 | 29 | ||
29 | #include "pcie-designware.h" | 30 | #include "pcie-designware.h" |
30 | 31 | ||
@@ -32,13 +33,9 @@ | |||
32 | 33 | ||
33 | struct imx6_pcie { | 34 | struct imx6_pcie { |
34 | int reset_gpio; | 35 | int reset_gpio; |
35 | int power_on_gpio; | 36 | struct clk *pcie_bus; |
36 | int wake_up_gpio; | 37 | struct clk *pcie_phy; |
37 | int disable_gpio; | 38 | struct clk *pcie; |
38 | struct clk *lvds_gate; | ||
39 | struct clk *sata_ref_100m; | ||
40 | struct clk *pcie_ref_125m; | ||
41 | struct clk *pcie_axi; | ||
42 | struct pcie_port pp; | 39 | struct pcie_port pp; |
43 | struct regmap *iomuxc_gpr; | 40 | struct regmap *iomuxc_gpr; |
44 | void __iomem *mem_base; | 41 | void __iomem *mem_base; |
@@ -231,36 +228,27 @@ static int imx6_pcie_deassert_core_reset(struct pcie_port *pp) | |||
231 | struct imx6_pcie *imx6_pcie = to_imx6_pcie(pp); | 228 | struct imx6_pcie *imx6_pcie = to_imx6_pcie(pp); |
232 | int ret; | 229 | int ret; |
233 | 230 | ||
234 | if (gpio_is_valid(imx6_pcie->power_on_gpio)) | ||
235 | gpio_set_value(imx6_pcie->power_on_gpio, 1); | ||
236 | |||
237 | regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR1, | 231 | regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR1, |
238 | IMX6Q_GPR1_PCIE_TEST_PD, 0 << 18); | 232 | IMX6Q_GPR1_PCIE_TEST_PD, 0 << 18); |
239 | regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR1, | 233 | regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR1, |
240 | IMX6Q_GPR1_PCIE_REF_CLK_EN, 1 << 16); | 234 | IMX6Q_GPR1_PCIE_REF_CLK_EN, 1 << 16); |
241 | 235 | ||
242 | ret = clk_prepare_enable(imx6_pcie->sata_ref_100m); | 236 | ret = clk_prepare_enable(imx6_pcie->pcie_phy); |
243 | if (ret) { | ||
244 | dev_err(pp->dev, "unable to enable sata_ref_100m\n"); | ||
245 | goto err_sata_ref; | ||
246 | } | ||
247 | |||
248 | ret = clk_prepare_enable(imx6_pcie->pcie_ref_125m); | ||
249 | if (ret) { | 237 | if (ret) { |
250 | dev_err(pp->dev, "unable to enable pcie_ref_125m\n"); | 238 | dev_err(pp->dev, "unable to enable pcie_phy clock\n"); |
251 | goto err_pcie_ref; | 239 | goto err_pcie_phy; |
252 | } | 240 | } |
253 | 241 | ||
254 | ret = clk_prepare_enable(imx6_pcie->lvds_gate); | 242 | ret = clk_prepare_enable(imx6_pcie->pcie_bus); |
255 | if (ret) { | 243 | if (ret) { |
256 | dev_err(pp->dev, "unable to enable lvds_gate\n"); | 244 | dev_err(pp->dev, "unable to enable pcie_bus clock\n"); |
257 | goto err_lvds_gate; | 245 | goto err_pcie_bus; |
258 | } | 246 | } |
259 | 247 | ||
260 | ret = clk_prepare_enable(imx6_pcie->pcie_axi); | 248 | ret = clk_prepare_enable(imx6_pcie->pcie); |
261 | if (ret) { | 249 | if (ret) { |
262 | dev_err(pp->dev, "unable to enable pcie_axi\n"); | 250 | dev_err(pp->dev, "unable to enable pcie clock\n"); |
263 | goto err_pcie_axi; | 251 | goto err_pcie; |
264 | } | 252 | } |
265 | 253 | ||
266 | /* allow the clocks to stabilize */ | 254 | /* allow the clocks to stabilize */ |
@@ -274,13 +262,11 @@ static int imx6_pcie_deassert_core_reset(struct pcie_port *pp) | |||
274 | } | 262 | } |
275 | return 0; | 263 | return 0; |
276 | 264 | ||
277 | err_pcie_axi: | 265 | err_pcie: |
278 | clk_disable_unprepare(imx6_pcie->lvds_gate); | 266 | clk_disable_unprepare(imx6_pcie->pcie_bus); |
279 | err_lvds_gate: | 267 | err_pcie_bus: |
280 | clk_disable_unprepare(imx6_pcie->pcie_ref_125m); | 268 | clk_disable_unprepare(imx6_pcie->pcie_phy); |
281 | err_pcie_ref: | 269 | err_pcie_phy: |
282 | clk_disable_unprepare(imx6_pcie->sata_ref_100m); | ||
283 | err_sata_ref: | ||
284 | return ret; | 270 | return ret; |
285 | 271 | ||
286 | } | 272 | } |
@@ -329,6 +315,13 @@ static int imx6_pcie_wait_for_link(struct pcie_port *pp) | |||
329 | return 0; | 315 | return 0; |
330 | } | 316 | } |
331 | 317 | ||
318 | static irqreturn_t imx6_pcie_msi_handler(int irq, void *arg) | ||
319 | { | ||
320 | struct pcie_port *pp = arg; | ||
321 | |||
322 | return dw_handle_msi_irq(pp); | ||
323 | } | ||
324 | |||
332 | static int imx6_pcie_start_link(struct pcie_port *pp) | 325 | static int imx6_pcie_start_link(struct pcie_port *pp) |
333 | { | 326 | { |
334 | struct imx6_pcie *imx6_pcie = to_imx6_pcie(pp); | 327 | struct imx6_pcie *imx6_pcie = to_imx6_pcie(pp); |
@@ -403,6 +396,9 @@ static void imx6_pcie_host_init(struct pcie_port *pp) | |||
403 | dw_pcie_setup_rc(pp); | 396 | dw_pcie_setup_rc(pp); |
404 | 397 | ||
405 | imx6_pcie_start_link(pp); | 398 | imx6_pcie_start_link(pp); |
399 | |||
400 | if (IS_ENABLED(CONFIG_PCI_MSI)) | ||
401 | dw_pcie_msi_init(pp); | ||
406 | } | 402 | } |
407 | 403 | ||
408 | static void imx6_pcie_reset_phy(struct pcie_port *pp) | 404 | static void imx6_pcie_reset_phy(struct pcie_port *pp) |
@@ -487,15 +483,25 @@ static struct pcie_host_ops imx6_pcie_host_ops = { | |||
487 | .host_init = imx6_pcie_host_init, | 483 | .host_init = imx6_pcie_host_init, |
488 | }; | 484 | }; |
489 | 485 | ||
490 | static int imx6_add_pcie_port(struct pcie_port *pp, | 486 | static int __init imx6_add_pcie_port(struct pcie_port *pp, |
491 | struct platform_device *pdev) | 487 | struct platform_device *pdev) |
492 | { | 488 | { |
493 | int ret; | 489 | int ret; |
494 | 490 | ||
495 | pp->irq = platform_get_irq(pdev, 0); | 491 | if (IS_ENABLED(CONFIG_PCI_MSI)) { |
496 | if (!pp->irq) { | 492 | pp->msi_irq = platform_get_irq_byname(pdev, "msi"); |
497 | dev_err(&pdev->dev, "failed to get irq\n"); | 493 | if (pp->msi_irq <= 0) { |
498 | return -ENODEV; | 494 | dev_err(&pdev->dev, "failed to get MSI irq\n"); |
495 | return -ENODEV; | ||
496 | } | ||
497 | |||
498 | ret = devm_request_irq(&pdev->dev, pp->msi_irq, | ||
499 | imx6_pcie_msi_handler, | ||
500 | IRQF_SHARED, "mx6-pcie-msi", pp); | ||
501 | if (ret) { | ||
502 | dev_err(&pdev->dev, "failed to request MSI irq\n"); | ||
503 | return -ENODEV; | ||
504 | } | ||
499 | } | 505 | } |
500 | 506 | ||
501 | pp->root_bus_nr = -1; | 507 | pp->root_bus_nr = -1; |
@@ -546,69 +552,26 @@ static int __init imx6_pcie_probe(struct platform_device *pdev) | |||
546 | } | 552 | } |
547 | } | 553 | } |
548 | 554 | ||
549 | imx6_pcie->power_on_gpio = of_get_named_gpio(np, "power-on-gpio", 0); | ||
550 | if (gpio_is_valid(imx6_pcie->power_on_gpio)) { | ||
551 | ret = devm_gpio_request_one(&pdev->dev, | ||
552 | imx6_pcie->power_on_gpio, | ||
553 | GPIOF_OUT_INIT_LOW, | ||
554 | "PCIe power enable"); | ||
555 | if (ret) { | ||
556 | dev_err(&pdev->dev, "unable to get power-on gpio\n"); | ||
557 | return ret; | ||
558 | } | ||
559 | } | ||
560 | |||
561 | imx6_pcie->wake_up_gpio = of_get_named_gpio(np, "wake-up-gpio", 0); | ||
562 | if (gpio_is_valid(imx6_pcie->wake_up_gpio)) { | ||
563 | ret = devm_gpio_request_one(&pdev->dev, | ||
564 | imx6_pcie->wake_up_gpio, | ||
565 | GPIOF_IN, | ||
566 | "PCIe wake up"); | ||
567 | if (ret) { | ||
568 | dev_err(&pdev->dev, "unable to get wake-up gpio\n"); | ||
569 | return ret; | ||
570 | } | ||
571 | } | ||
572 | |||
573 | imx6_pcie->disable_gpio = of_get_named_gpio(np, "disable-gpio", 0); | ||
574 | if (gpio_is_valid(imx6_pcie->disable_gpio)) { | ||
575 | ret = devm_gpio_request_one(&pdev->dev, | ||
576 | imx6_pcie->disable_gpio, | ||
577 | GPIOF_OUT_INIT_HIGH, | ||
578 | "PCIe disable endpoint"); | ||
579 | if (ret) { | ||
580 | dev_err(&pdev->dev, "unable to get disable-ep gpio\n"); | ||
581 | return ret; | ||
582 | } | ||
583 | } | ||
584 | |||
585 | /* Fetch clocks */ | 555 | /* Fetch clocks */ |
586 | imx6_pcie->lvds_gate = devm_clk_get(&pdev->dev, "lvds_gate"); | 556 | imx6_pcie->pcie_phy = devm_clk_get(&pdev->dev, "pcie_phy"); |
587 | if (IS_ERR(imx6_pcie->lvds_gate)) { | 557 | if (IS_ERR(imx6_pcie->pcie_phy)) { |
588 | dev_err(&pdev->dev, | ||
589 | "lvds_gate clock select missing or invalid\n"); | ||
590 | return PTR_ERR(imx6_pcie->lvds_gate); | ||
591 | } | ||
592 | |||
593 | imx6_pcie->sata_ref_100m = devm_clk_get(&pdev->dev, "sata_ref_100m"); | ||
594 | if (IS_ERR(imx6_pcie->sata_ref_100m)) { | ||
595 | dev_err(&pdev->dev, | 558 | dev_err(&pdev->dev, |
596 | "sata_ref_100m clock source missing or invalid\n"); | 559 | "pcie_phy clock source missing or invalid\n"); |
597 | return PTR_ERR(imx6_pcie->sata_ref_100m); | 560 | return PTR_ERR(imx6_pcie->pcie_phy); |
598 | } | 561 | } |
599 | 562 | ||
600 | imx6_pcie->pcie_ref_125m = devm_clk_get(&pdev->dev, "pcie_ref_125m"); | 563 | imx6_pcie->pcie_bus = devm_clk_get(&pdev->dev, "pcie_bus"); |
601 | if (IS_ERR(imx6_pcie->pcie_ref_125m)) { | 564 | if (IS_ERR(imx6_pcie->pcie_bus)) { |
602 | dev_err(&pdev->dev, | 565 | dev_err(&pdev->dev, |
603 | "pcie_ref_125m clock source missing or invalid\n"); | 566 | "pcie_bus clock source missing or invalid\n"); |
604 | return PTR_ERR(imx6_pcie->pcie_ref_125m); | 567 | return PTR_ERR(imx6_pcie->pcie_bus); |
605 | } | 568 | } |
606 | 569 | ||
607 | imx6_pcie->pcie_axi = devm_clk_get(&pdev->dev, "pcie_axi"); | 570 | imx6_pcie->pcie = devm_clk_get(&pdev->dev, "pcie"); |
608 | if (IS_ERR(imx6_pcie->pcie_axi)) { | 571 | if (IS_ERR(imx6_pcie->pcie)) { |
609 | dev_err(&pdev->dev, | 572 | dev_err(&pdev->dev, |
610 | "pcie_axi clock source missing or invalid\n"); | 573 | "pcie clock source missing or invalid\n"); |
611 | return PTR_ERR(imx6_pcie->pcie_axi); | 574 | return PTR_ERR(imx6_pcie->pcie); |
612 | } | 575 | } |
613 | 576 | ||
614 | /* Grab GPR config register range */ | 577 | /* Grab GPR config register range */ |
diff --git a/drivers/pci/host/pcie-designware.c b/drivers/pci/host/pcie-designware.c index 509a29d84509..77a649dd1473 100644 --- a/drivers/pci/host/pcie-designware.c +++ b/drivers/pci/host/pcie-designware.c | |||
@@ -155,15 +155,17 @@ static struct irq_chip dw_msi_irq_chip = { | |||
155 | }; | 155 | }; |
156 | 156 | ||
157 | /* MSI int handler */ | 157 | /* MSI int handler */ |
158 | void dw_handle_msi_irq(struct pcie_port *pp) | 158 | irqreturn_t dw_handle_msi_irq(struct pcie_port *pp) |
159 | { | 159 | { |
160 | unsigned long val; | 160 | unsigned long val; |
161 | int i, pos, irq; | 161 | int i, pos, irq; |
162 | irqreturn_t ret = IRQ_NONE; | ||
162 | 163 | ||
163 | for (i = 0; i < MAX_MSI_CTRLS; i++) { | 164 | for (i = 0; i < MAX_MSI_CTRLS; i++) { |
164 | dw_pcie_rd_own_conf(pp, PCIE_MSI_INTR0_STATUS + i * 12, 4, | 165 | dw_pcie_rd_own_conf(pp, PCIE_MSI_INTR0_STATUS + i * 12, 4, |
165 | (u32 *)&val); | 166 | (u32 *)&val); |
166 | if (val) { | 167 | if (val) { |
168 | ret = IRQ_HANDLED; | ||
167 | pos = 0; | 169 | pos = 0; |
168 | while ((pos = find_next_bit(&val, 32, pos)) != 32) { | 170 | while ((pos = find_next_bit(&val, 32, pos)) != 32) { |
169 | irq = irq_find_mapping(pp->irq_domain, | 171 | irq = irq_find_mapping(pp->irq_domain, |
@@ -176,6 +178,8 @@ void dw_handle_msi_irq(struct pcie_port *pp) | |||
176 | } | 178 | } |
177 | } | 179 | } |
178 | } | 180 | } |
181 | |||
182 | return ret; | ||
179 | } | 183 | } |
180 | 184 | ||
181 | void dw_pcie_msi_init(struct pcie_port *pp) | 185 | void dw_pcie_msi_init(struct pcie_port *pp) |
diff --git a/drivers/pci/host/pcie-designware.h b/drivers/pci/host/pcie-designware.h index 3063b3594d88..a169d22d517e 100644 --- a/drivers/pci/host/pcie-designware.h +++ b/drivers/pci/host/pcie-designware.h | |||
@@ -68,7 +68,7 @@ struct pcie_host_ops { | |||
68 | 68 | ||
69 | int dw_pcie_cfg_read(void __iomem *addr, int where, int size, u32 *val); | 69 | int dw_pcie_cfg_read(void __iomem *addr, int where, int size, u32 *val); |
70 | int dw_pcie_cfg_write(void __iomem *addr, int where, int size, u32 val); | 70 | int dw_pcie_cfg_write(void __iomem *addr, int where, int size, u32 val); |
71 | void dw_handle_msi_irq(struct pcie_port *pp); | 71 | irqreturn_t dw_handle_msi_irq(struct pcie_port *pp); |
72 | void dw_pcie_msi_init(struct pcie_port *pp); | 72 | void dw_pcie_msi_init(struct pcie_port *pp); |
73 | int dw_pcie_link_up(struct pcie_port *pp); | 73 | int dw_pcie_link_up(struct pcie_port *pp); |
74 | void dw_pcie_setup_rc(struct pcie_port *pp); | 74 | void dw_pcie_setup_rc(struct pcie_port *pp); |
diff --git a/drivers/pci/iov.c b/drivers/pci/iov.c index de7a74782f92..cb6f24740ee3 100644 --- a/drivers/pci/iov.c +++ b/drivers/pci/iov.c | |||
@@ -106,7 +106,7 @@ static int virtfn_add(struct pci_dev *dev, int id, int reset) | |||
106 | pci_device_add(virtfn, virtfn->bus); | 106 | pci_device_add(virtfn, virtfn->bus); |
107 | mutex_unlock(&iov->dev->sriov->lock); | 107 | mutex_unlock(&iov->dev->sriov->lock); |
108 | 108 | ||
109 | rc = pci_bus_add_device(virtfn); | 109 | pci_bus_add_device(virtfn); |
110 | sprintf(buf, "virtfn%u", id); | 110 | sprintf(buf, "virtfn%u", id); |
111 | rc = sysfs_create_link(&dev->dev.kobj, &virtfn->dev.kobj, buf); | 111 | rc = sysfs_create_link(&dev->dev.kobj, &virtfn->dev.kobj, buf); |
112 | if (rc) | 112 | if (rc) |
diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c index c5e082fb82fa..91ef69a52263 100644 --- a/drivers/platform/x86/asus-wmi.c +++ b/drivers/platform/x86/asus-wmi.c | |||
@@ -642,8 +642,7 @@ static void asus_rfkill_hotplug(struct asus_wmi *asus) | |||
642 | dev = pci_scan_single_device(bus, 0); | 642 | dev = pci_scan_single_device(bus, 0); |
643 | if (dev) { | 643 | if (dev) { |
644 | pci_bus_assign_resources(bus); | 644 | pci_bus_assign_resources(bus); |
645 | if (pci_bus_add_device(dev)) | 645 | pci_bus_add_device(dev); |
646 | pr_err("Unable to hotplug wifi\n"); | ||
647 | } | 646 | } |
648 | } else { | 647 | } else { |
649 | dev = pci_get_slot(bus, 0); | 648 | dev = pci_get_slot(bus, 0); |
diff --git a/drivers/platform/x86/eeepc-laptop.c b/drivers/platform/x86/eeepc-laptop.c index 399e8c562192..9b0c57cd1d4a 100644 --- a/drivers/platform/x86/eeepc-laptop.c +++ b/drivers/platform/x86/eeepc-laptop.c | |||
@@ -633,8 +633,7 @@ static void eeepc_rfkill_hotplug(struct eeepc_laptop *eeepc, acpi_handle handle) | |||
633 | dev = pci_scan_single_device(bus, 0); | 633 | dev = pci_scan_single_device(bus, 0); |
634 | if (dev) { | 634 | if (dev) { |
635 | pci_bus_assign_resources(bus); | 635 | pci_bus_assign_resources(bus); |
636 | if (pci_bus_add_device(dev)) | 636 | pci_bus_add_device(dev); |
637 | pr_err("Unable to hotplug wifi\n"); | ||
638 | } | 637 | } |
639 | } else { | 638 | } else { |
640 | dev = pci_get_slot(bus, 0); | 639 | dev = pci_get_slot(bus, 0); |
diff --git a/include/linux/pci.h b/include/linux/pci.h index 65f22e85612d..71d9673c1b2c 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h | |||
@@ -781,7 +781,7 @@ int pci_scan_slot(struct pci_bus *bus, int devfn); | |||
781 | struct pci_dev *pci_scan_single_device(struct pci_bus *bus, int devfn); | 781 | struct pci_dev *pci_scan_single_device(struct pci_bus *bus, int devfn); |
782 | void pci_device_add(struct pci_dev *dev, struct pci_bus *bus); | 782 | void pci_device_add(struct pci_dev *dev, struct pci_bus *bus); |
783 | unsigned int pci_scan_child_bus(struct pci_bus *bus); | 783 | unsigned int pci_scan_child_bus(struct pci_bus *bus); |
784 | int __must_check pci_bus_add_device(struct pci_dev *dev); | 784 | void pci_bus_add_device(struct pci_dev *dev); |
785 | void pci_read_bridge_bases(struct pci_bus *child); | 785 | void pci_read_bridge_bases(struct pci_bus *child); |
786 | struct resource *pci_find_parent_resource(const struct pci_dev *dev, | 786 | struct resource *pci_find_parent_resource(const struct pci_dev *dev, |
787 | struct resource *res); | 787 | struct resource *res); |