diff options
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/hwmon/Kconfig | 4 | ||||
| -rw-r--r-- | drivers/hwmon/abituguru3.c | 7 | ||||
| -rw-r--r-- | drivers/hwmon/f75375s.c | 2 | ||||
| -rw-r--r-- | drivers/hwmon/it87.c | 8 | ||||
| -rw-r--r-- | drivers/hwmon/lm90.c | 8 | ||||
| -rw-r--r-- | drivers/infiniband/hw/nes/nes_cm.c | 39 | ||||
| -rw-r--r-- | drivers/infiniband/hw/nes/nes_verbs.c | 2 | ||||
| -rw-r--r-- | drivers/infiniband/hw/nes/nes_verbs.h | 1 | ||||
| -rw-r--r-- | drivers/mfd/wm8350-core.c | 5 | ||||
| -rw-r--r-- | drivers/mmc/host/s3cmci.c | 3 | ||||
| -rw-r--r-- | drivers/net/sunhme.c | 2 | ||||
| -rw-r--r-- | drivers/pci/hotplug/Kconfig | 2 | ||||
| -rw-r--r-- | drivers/pci/pcie/aer/aerdrv_core.c | 3 | ||||
| -rw-r--r-- | drivers/pci/pcie/portdrv_pci.c | 1 | ||||
| -rw-r--r-- | drivers/pci/quirks.c | 31 | ||||
| -rw-r--r-- | drivers/platform/x86/acer-wmi.c | 2 | ||||
| -rw-r--r-- | drivers/power/ds2760_battery.c | 11 | ||||
| -rw-r--r-- | drivers/sbus/char/bbc_i2c.c | 2 | ||||
| -rw-r--r-- | drivers/sbus/char/jsflash.c | 3 | ||||
| -rw-r--r-- | drivers/w1/masters/w1-gpio.c | 2 |
20 files changed, 104 insertions, 34 deletions
diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig index b84bf066879b..b4eea0292c1a 100644 --- a/drivers/hwmon/Kconfig +++ b/drivers/hwmon/Kconfig | |||
| @@ -543,8 +543,8 @@ config SENSORS_LM90 | |||
| 543 | help | 543 | help |
| 544 | If you say yes here you get support for National Semiconductor LM90, | 544 | If you say yes here you get support for National Semiconductor LM90, |
| 545 | LM86, LM89 and LM99, Analog Devices ADM1032 and ADT7461, and Maxim | 545 | LM86, LM89 and LM99, Analog Devices ADM1032 and ADT7461, and Maxim |
| 546 | MAX6646, MAX6647, MAX6649, MAX6657, MAX6658, MAX6659, MAX6680 and | 546 | MAX6646, MAX6647, MAX6648, MAX6649, MAX6657, MAX6658, MAX6659, |
| 547 | MAX6681 sensor chips. | 547 | MAX6680, MAX6681 and MAX6692 sensor chips. |
| 548 | 548 | ||
| 549 | This driver can also be built as a module. If so, the module | 549 | This driver can also be built as a module. If so, the module |
| 550 | will be called lm90. | 550 | will be called lm90. |
diff --git a/drivers/hwmon/abituguru3.c b/drivers/hwmon/abituguru3.c index e52b38806d03..ad2b3431b725 100644 --- a/drivers/hwmon/abituguru3.c +++ b/drivers/hwmon/abituguru3.c | |||
| @@ -760,8 +760,11 @@ static int abituguru3_read_increment_offset(struct abituguru3_data *data, | |||
| 760 | 760 | ||
| 761 | for (i = 0; i < offset_count; i++) | 761 | for (i = 0; i < offset_count; i++) |
| 762 | if ((x = abituguru3_read(data, bank, offset + i, count, | 762 | if ((x = abituguru3_read(data, bank, offset + i, count, |
| 763 | buf + i * count)) != count) | 763 | buf + i * count)) != count) { |
| 764 | return i * count + (i && (x < 0)) ? 0 : x; | 764 | if (x < 0) |
| 765 | return x; | ||
| 766 | return i * count + x; | ||
| 767 | } | ||
| 765 | 768 | ||
| 766 | return i * count; | 769 | return i * count; |
| 767 | } | 770 | } |
diff --git a/drivers/hwmon/f75375s.c b/drivers/hwmon/f75375s.c index 1692de369969..18a1ba888165 100644 --- a/drivers/hwmon/f75375s.c +++ b/drivers/hwmon/f75375s.c | |||
| @@ -617,7 +617,7 @@ static void f75375_init(struct i2c_client *client, struct f75375_data *data, | |||
| 617 | static int f75375_probe(struct i2c_client *client, | 617 | static int f75375_probe(struct i2c_client *client, |
| 618 | const struct i2c_device_id *id) | 618 | const struct i2c_device_id *id) |
| 619 | { | 619 | { |
| 620 | struct f75375_data *data = i2c_get_clientdata(client); | 620 | struct f75375_data *data; |
| 621 | struct f75375s_platform_data *f75375s_pdata = client->dev.platform_data; | 621 | struct f75375s_platform_data *f75375s_pdata = client->dev.platform_data; |
| 622 | int err; | 622 | int err; |
| 623 | 623 | ||
diff --git a/drivers/hwmon/it87.c b/drivers/hwmon/it87.c index 95a99c590da2..9157247fed8e 100644 --- a/drivers/hwmon/it87.c +++ b/drivers/hwmon/it87.c | |||
| @@ -213,7 +213,7 @@ static inline u16 FAN16_TO_REG(long rpm) | |||
| 213 | 213 | ||
| 214 | #define TEMP_TO_REG(val) (SENSORS_LIMIT(((val)<0?(((val)-500)/1000):\ | 214 | #define TEMP_TO_REG(val) (SENSORS_LIMIT(((val)<0?(((val)-500)/1000):\ |
| 215 | ((val)+500)/1000),-128,127)) | 215 | ((val)+500)/1000),-128,127)) |
| 216 | #define TEMP_FROM_REG(val) (((val)>0x80?(val)-0x100:(val))*1000) | 216 | #define TEMP_FROM_REG(val) ((val) * 1000) |
| 217 | 217 | ||
| 218 | #define PWM_TO_REG(val) ((val) >> 1) | 218 | #define PWM_TO_REG(val) ((val) >> 1) |
| 219 | #define PWM_FROM_REG(val) (((val)&0x7f) << 1) | 219 | #define PWM_FROM_REG(val) (((val)&0x7f) << 1) |
| @@ -267,9 +267,9 @@ struct it87_data { | |||
| 267 | u8 has_fan; /* Bitfield, fans enabled */ | 267 | u8 has_fan; /* Bitfield, fans enabled */ |
| 268 | u16 fan[5]; /* Register values, possibly combined */ | 268 | u16 fan[5]; /* Register values, possibly combined */ |
| 269 | u16 fan_min[5]; /* Register values, possibly combined */ | 269 | u16 fan_min[5]; /* Register values, possibly combined */ |
| 270 | u8 temp[3]; /* Register value */ | 270 | s8 temp[3]; /* Register value */ |
| 271 | u8 temp_high[3]; /* Register value */ | 271 | s8 temp_high[3]; /* Register value */ |
| 272 | u8 temp_low[3]; /* Register value */ | 272 | s8 temp_low[3]; /* Register value */ |
| 273 | u8 sensor; /* Register value */ | 273 | u8 sensor; /* Register value */ |
| 274 | u8 fan_div[3]; /* Register encoding, shifted right */ | 274 | u8 fan_div[3]; /* Register encoding, shifted right */ |
| 275 | u8 vid; /* Register encoding, combined */ | 275 | u8 vid; /* Register encoding, combined */ |
diff --git a/drivers/hwmon/lm90.c b/drivers/hwmon/lm90.c index 96a701866726..1aff7575799d 100644 --- a/drivers/hwmon/lm90.c +++ b/drivers/hwmon/lm90.c | |||
| @@ -32,10 +32,10 @@ | |||
| 32 | * supported by this driver. These chips lack the remote temperature | 32 | * supported by this driver. These chips lack the remote temperature |
| 33 | * offset feature. | 33 | * offset feature. |
| 34 | * | 34 | * |
| 35 | * This driver also supports the MAX6646, MAX6647 and MAX6649 chips | 35 | * This driver also supports the MAX6646, MAX6647, MAX6648, MAX6649 and |
| 36 | * made by Maxim. These are again similar to the LM86, but they use | 36 | * MAX6692 chips made by Maxim. These are again similar to the LM86, |
| 37 | * unsigned temperature values and can report temperatures from 0 to | 37 | * but they use unsigned temperature values and can report temperatures |
| 38 | * 145 degrees. | 38 | * from 0 to 145 degrees. |
| 39 | * | 39 | * |
| 40 | * This driver also supports the MAX6680 and MAX6681, two other sensor | 40 | * This driver also supports the MAX6680 and MAX6681, two other sensor |
| 41 | * chips made by Maxim. These are quite similar to the other Maxim | 41 | * chips made by Maxim. These are quite similar to the other Maxim |
diff --git a/drivers/infiniband/hw/nes/nes_cm.c b/drivers/infiniband/hw/nes/nes_cm.c index a01b4488208b..4a65b96db2c8 100644 --- a/drivers/infiniband/hw/nes/nes_cm.c +++ b/drivers/infiniband/hw/nes/nes_cm.c | |||
| @@ -2490,12 +2490,14 @@ static int nes_disconnect(struct nes_qp *nesqp, int abrupt) | |||
| 2490 | int ret = 0; | 2490 | int ret = 0; |
| 2491 | struct nes_vnic *nesvnic; | 2491 | struct nes_vnic *nesvnic; |
| 2492 | struct nes_device *nesdev; | 2492 | struct nes_device *nesdev; |
| 2493 | struct nes_ib_device *nesibdev; | ||
| 2493 | 2494 | ||
| 2494 | nesvnic = to_nesvnic(nesqp->ibqp.device); | 2495 | nesvnic = to_nesvnic(nesqp->ibqp.device); |
| 2495 | if (!nesvnic) | 2496 | if (!nesvnic) |
| 2496 | return -EINVAL; | 2497 | return -EINVAL; |
| 2497 | 2498 | ||
| 2498 | nesdev = nesvnic->nesdev; | 2499 | nesdev = nesvnic->nesdev; |
| 2500 | nesibdev = nesvnic->nesibdev; | ||
| 2499 | 2501 | ||
| 2500 | nes_debug(NES_DBG_CM, "netdev refcnt = %u.\n", | 2502 | nes_debug(NES_DBG_CM, "netdev refcnt = %u.\n", |
| 2501 | atomic_read(&nesvnic->netdev->refcnt)); | 2503 | atomic_read(&nesvnic->netdev->refcnt)); |
| @@ -2507,6 +2509,8 @@ static int nes_disconnect(struct nes_qp *nesqp, int abrupt) | |||
| 2507 | } else { | 2509 | } else { |
| 2508 | /* Need to free the Last Streaming Mode Message */ | 2510 | /* Need to free the Last Streaming Mode Message */ |
| 2509 | if (nesqp->ietf_frame) { | 2511 | if (nesqp->ietf_frame) { |
| 2512 | if (nesqp->lsmm_mr) | ||
| 2513 | nesibdev->ibdev.dereg_mr(nesqp->lsmm_mr); | ||
| 2510 | pci_free_consistent(nesdev->pcidev, | 2514 | pci_free_consistent(nesdev->pcidev, |
| 2511 | nesqp->private_data_len+sizeof(struct ietf_mpa_frame), | 2515 | nesqp->private_data_len+sizeof(struct ietf_mpa_frame), |
| 2512 | nesqp->ietf_frame, nesqp->ietf_frame_pbase); | 2516 | nesqp->ietf_frame, nesqp->ietf_frame_pbase); |
| @@ -2543,6 +2547,12 @@ int nes_accept(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param) | |||
| 2543 | u32 crc_value; | 2547 | u32 crc_value; |
| 2544 | int ret; | 2548 | int ret; |
| 2545 | int passive_state; | 2549 | int passive_state; |
| 2550 | struct nes_ib_device *nesibdev; | ||
| 2551 | struct ib_mr *ibmr = NULL; | ||
| 2552 | struct ib_phys_buf ibphysbuf; | ||
| 2553 | struct nes_pd *nespd; | ||
| 2554 | |||
| 2555 | |||
| 2546 | 2556 | ||
| 2547 | ibqp = nes_get_qp(cm_id->device, conn_param->qpn); | 2557 | ibqp = nes_get_qp(cm_id->device, conn_param->qpn); |
| 2548 | if (!ibqp) | 2558 | if (!ibqp) |
| @@ -2601,6 +2611,26 @@ int nes_accept(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param) | |||
| 2601 | if (cm_id->remote_addr.sin_addr.s_addr != | 2611 | if (cm_id->remote_addr.sin_addr.s_addr != |
| 2602 | cm_id->local_addr.sin_addr.s_addr) { | 2612 | cm_id->local_addr.sin_addr.s_addr) { |
| 2603 | u64temp = (unsigned long)nesqp; | 2613 | u64temp = (unsigned long)nesqp; |
| 2614 | nesibdev = nesvnic->nesibdev; | ||
| 2615 | nespd = nesqp->nespd; | ||
| 2616 | ibphysbuf.addr = nesqp->ietf_frame_pbase; | ||
| 2617 | ibphysbuf.size = conn_param->private_data_len + | ||
| 2618 | sizeof(struct ietf_mpa_frame); | ||
| 2619 | ibmr = nesibdev->ibdev.reg_phys_mr((struct ib_pd *)nespd, | ||
| 2620 | &ibphysbuf, 1, | ||
| 2621 | IB_ACCESS_LOCAL_WRITE, | ||
| 2622 | (u64 *)&nesqp->ietf_frame); | ||
| 2623 | if (!ibmr) { | ||
| 2624 | nes_debug(NES_DBG_CM, "Unable to register memory region" | ||
| 2625 | "for lSMM for cm_node = %p \n", | ||
| 2626 | cm_node); | ||
| 2627 | return -ENOMEM; | ||
| 2628 | } | ||
| 2629 | |||
| 2630 | ibmr->pd = &nespd->ibpd; | ||
| 2631 | ibmr->device = nespd->ibpd.device; | ||
| 2632 | nesqp->lsmm_mr = ibmr; | ||
| 2633 | |||
| 2604 | u64temp |= NES_SW_CONTEXT_ALIGN>>1; | 2634 | u64temp |= NES_SW_CONTEXT_ALIGN>>1; |
| 2605 | set_wqe_64bit_value(wqe->wqe_words, | 2635 | set_wqe_64bit_value(wqe->wqe_words, |
| 2606 | NES_IWARP_SQ_WQE_COMP_CTX_LOW_IDX, | 2636 | NES_IWARP_SQ_WQE_COMP_CTX_LOW_IDX, |
| @@ -2611,14 +2641,13 @@ int nes_accept(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param) | |||
| 2611 | wqe->wqe_words[NES_IWARP_SQ_WQE_TOTAL_PAYLOAD_IDX] = | 2641 | wqe->wqe_words[NES_IWARP_SQ_WQE_TOTAL_PAYLOAD_IDX] = |
| 2612 | cpu_to_le32(conn_param->private_data_len + | 2642 | cpu_to_le32(conn_param->private_data_len + |
| 2613 | sizeof(struct ietf_mpa_frame)); | 2643 | sizeof(struct ietf_mpa_frame)); |
| 2614 | wqe->wqe_words[NES_IWARP_SQ_WQE_FRAG0_LOW_IDX] = | 2644 | set_wqe_64bit_value(wqe->wqe_words, |
| 2615 | cpu_to_le32((u32)nesqp->ietf_frame_pbase); | 2645 | NES_IWARP_SQ_WQE_FRAG0_LOW_IDX, |
| 2616 | wqe->wqe_words[NES_IWARP_SQ_WQE_FRAG0_HIGH_IDX] = | 2646 | (u64)nesqp->ietf_frame); |
| 2617 | cpu_to_le32((u32)((u64)nesqp->ietf_frame_pbase >> 32)); | ||
| 2618 | wqe->wqe_words[NES_IWARP_SQ_WQE_LENGTH0_IDX] = | 2647 | wqe->wqe_words[NES_IWARP_SQ_WQE_LENGTH0_IDX] = |
| 2619 | cpu_to_le32(conn_param->private_data_len + | 2648 | cpu_to_le32(conn_param->private_data_len + |
| 2620 | sizeof(struct ietf_mpa_frame)); | 2649 | sizeof(struct ietf_mpa_frame)); |
| 2621 | wqe->wqe_words[NES_IWARP_SQ_WQE_STAG0_IDX] = 0; | 2650 | wqe->wqe_words[NES_IWARP_SQ_WQE_STAG0_IDX] = ibmr->lkey; |
| 2622 | 2651 | ||
| 2623 | nesqp->nesqp_context->ird_ord_sizes |= | 2652 | nesqp->nesqp_context->ird_ord_sizes |= |
| 2624 | cpu_to_le32(NES_QPCONTEXT_ORDIRD_LSMM_PRESENT | | 2653 | cpu_to_le32(NES_QPCONTEXT_ORDIRD_LSMM_PRESENT | |
diff --git a/drivers/infiniband/hw/nes/nes_verbs.c b/drivers/infiniband/hw/nes/nes_verbs.c index 4fdb72454f94..d93a6562817c 100644 --- a/drivers/infiniband/hw/nes/nes_verbs.c +++ b/drivers/infiniband/hw/nes/nes_verbs.c | |||
| @@ -1360,8 +1360,10 @@ static struct ib_qp *nes_create_qp(struct ib_pd *ibpd, | |||
| 1360 | NES_QPCONTEXT_MISC_RQ_SIZE_SHIFT); | 1360 | NES_QPCONTEXT_MISC_RQ_SIZE_SHIFT); |
| 1361 | nesqp->nesqp_context->misc |= cpu_to_le32((u32)nesqp->hwqp.sq_encoded_size << | 1361 | nesqp->nesqp_context->misc |= cpu_to_le32((u32)nesqp->hwqp.sq_encoded_size << |
| 1362 | NES_QPCONTEXT_MISC_SQ_SIZE_SHIFT); | 1362 | NES_QPCONTEXT_MISC_SQ_SIZE_SHIFT); |
| 1363 | if (!udata) { | ||
| 1363 | nesqp->nesqp_context->misc |= cpu_to_le32(NES_QPCONTEXT_MISC_PRIV_EN); | 1364 | nesqp->nesqp_context->misc |= cpu_to_le32(NES_QPCONTEXT_MISC_PRIV_EN); |
| 1364 | nesqp->nesqp_context->misc |= cpu_to_le32(NES_QPCONTEXT_MISC_FAST_REGISTER_EN); | 1365 | nesqp->nesqp_context->misc |= cpu_to_le32(NES_QPCONTEXT_MISC_FAST_REGISTER_EN); |
| 1366 | } | ||
| 1365 | nesqp->nesqp_context->cqs = cpu_to_le32(nesqp->nesscq->hw_cq.cq_number + | 1367 | nesqp->nesqp_context->cqs = cpu_to_le32(nesqp->nesscq->hw_cq.cq_number + |
| 1366 | ((u32)nesqp->nesrcq->hw_cq.cq_number << 16)); | 1368 | ((u32)nesqp->nesrcq->hw_cq.cq_number << 16)); |
| 1367 | u64temp = (u64)nesqp->hwqp.sq_pbase; | 1369 | u64temp = (u64)nesqp->hwqp.sq_pbase; |
diff --git a/drivers/infiniband/hw/nes/nes_verbs.h b/drivers/infiniband/hw/nes/nes_verbs.h index 6c6b4da5184f..ae0ca9bc83bd 100644 --- a/drivers/infiniband/hw/nes/nes_verbs.h +++ b/drivers/infiniband/hw/nes/nes_verbs.h | |||
| @@ -134,6 +134,7 @@ struct nes_qp { | |||
| 134 | struct ietf_mpa_frame *ietf_frame; | 134 | struct ietf_mpa_frame *ietf_frame; |
| 135 | dma_addr_t ietf_frame_pbase; | 135 | dma_addr_t ietf_frame_pbase; |
| 136 | wait_queue_head_t state_waitq; | 136 | wait_queue_head_t state_waitq; |
| 137 | struct ib_mr *lsmm_mr; | ||
| 137 | unsigned long socket; | 138 | unsigned long socket; |
| 138 | struct nes_hw_qp hwqp; | 139 | struct nes_hw_qp hwqp; |
| 139 | struct work_struct work; | 140 | struct work_struct work; |
diff --git a/drivers/mfd/wm8350-core.c b/drivers/mfd/wm8350-core.c index 84d5ea1ec171..b457a05b28d9 100644 --- a/drivers/mfd/wm8350-core.c +++ b/drivers/mfd/wm8350-core.c | |||
| @@ -1383,6 +1383,11 @@ int wm8350_device_init(struct wm8350 *wm8350, int irq, | |||
| 1383 | wm8350->power.rev_g_coeff = 1; | 1383 | wm8350->power.rev_g_coeff = 1; |
| 1384 | break; | 1384 | break; |
| 1385 | 1385 | ||
| 1386 | case 1: | ||
| 1387 | dev_info(wm8350->dev, "WM8351 Rev B\n"); | ||
| 1388 | wm8350->power.rev_g_coeff = 1; | ||
| 1389 | break; | ||
| 1390 | |||
| 1386 | default: | 1391 | default: |
| 1387 | dev_err(wm8350->dev, "Unknown WM8351 CHIP_REV\n"); | 1392 | dev_err(wm8350->dev, "Unknown WM8351 CHIP_REV\n"); |
| 1388 | ret = -ENODEV; | 1393 | ret = -ENODEV; |
diff --git a/drivers/mmc/host/s3cmci.c b/drivers/mmc/host/s3cmci.c index f4a67c65d301..2db166b7096f 100644 --- a/drivers/mmc/host/s3cmci.c +++ b/drivers/mmc/host/s3cmci.c | |||
| @@ -793,8 +793,7 @@ static void s3cmci_dma_setup(struct s3cmci_host *host, | |||
| 793 | host->mem->start + host->sdidata); | 793 | host->mem->start + host->sdidata); |
| 794 | 794 | ||
| 795 | if (!setup_ok) { | 795 | if (!setup_ok) { |
| 796 | s3c2410_dma_config(host->dma, 4, | 796 | s3c2410_dma_config(host->dma, 4, 0); |
| 797 | (S3C2410_DCON_HWTRIG | S3C2410_DCON_CH0_SDI)); | ||
| 798 | s3c2410_dma_set_buffdone_fn(host->dma, | 797 | s3c2410_dma_set_buffdone_fn(host->dma, |
| 799 | s3cmci_dma_done_callback); | 798 | s3cmci_dma_done_callback); |
| 800 | s3c2410_dma_setflags(host->dma, S3C2410_DMAF_AUTOSTART); | 799 | s3c2410_dma_setflags(host->dma, S3C2410_DMAF_AUTOSTART); |
diff --git a/drivers/net/sunhme.c b/drivers/net/sunhme.c index d4fb4acdbebd..4e9bd380a5c2 100644 --- a/drivers/net/sunhme.c +++ b/drivers/net/sunhme.c | |||
| @@ -2649,8 +2649,6 @@ static int __devinit happy_meal_sbus_probe_one(struct of_device *op, int is_qfe) | |||
| 2649 | int err = -ENODEV; | 2649 | int err = -ENODEV; |
| 2650 | 2650 | ||
| 2651 | sbus_dp = to_of_device(op->dev.parent)->node; | 2651 | sbus_dp = to_of_device(op->dev.parent)->node; |
| 2652 | if (is_qfe) | ||
| 2653 | sbus_dp = to_of_device(op->dev.parent->parent)->node; | ||
| 2654 | 2652 | ||
| 2655 | /* We can match PCI devices too, do not accept those here. */ | 2653 | /* We can match PCI devices too, do not accept those here. */ |
| 2656 | if (strcmp(sbus_dp->name, "sbus")) | 2654 | if (strcmp(sbus_dp->name, "sbus")) |
diff --git a/drivers/pci/hotplug/Kconfig b/drivers/pci/hotplug/Kconfig index eacfb13998bb..9aa4fe100a0d 100644 --- a/drivers/pci/hotplug/Kconfig +++ b/drivers/pci/hotplug/Kconfig | |||
| @@ -143,7 +143,7 @@ config HOTPLUG_PCI_SHPC | |||
| 143 | 143 | ||
| 144 | config HOTPLUG_PCI_RPA | 144 | config HOTPLUG_PCI_RPA |
| 145 | tristate "RPA PCI Hotplug driver" | 145 | tristate "RPA PCI Hotplug driver" |
| 146 | depends on PPC_PSERIES && PPC64 && !HOTPLUG_PCI_FAKE | 146 | depends on PPC_PSERIES && EEH && !HOTPLUG_PCI_FAKE |
| 147 | help | 147 | help |
| 148 | Say Y here if you have a RPA system that supports PCI Hotplug. | 148 | Say Y here if you have a RPA system that supports PCI Hotplug. |
| 149 | 149 | ||
diff --git a/drivers/pci/pcie/aer/aerdrv_core.c b/drivers/pci/pcie/aer/aerdrv_core.c index d0c973685868..382575007382 100644 --- a/drivers/pci/pcie/aer/aerdrv_core.c +++ b/drivers/pci/pcie/aer/aerdrv_core.c | |||
| @@ -133,6 +133,9 @@ static void set_downstream_devices_error_reporting(struct pci_dev *dev, | |||
| 133 | bool enable) | 133 | bool enable) |
| 134 | { | 134 | { |
| 135 | set_device_error_reporting(dev, &enable); | 135 | set_device_error_reporting(dev, &enable); |
| 136 | |||
| 137 | if (!dev->subordinate) | ||
| 138 | return; | ||
| 136 | pci_walk_bus(dev->subordinate, set_device_error_reporting, &enable); | 139 | pci_walk_bus(dev->subordinate, set_device_error_reporting, &enable); |
| 137 | } | 140 | } |
| 138 | 141 | ||
diff --git a/drivers/pci/pcie/portdrv_pci.c b/drivers/pci/pcie/portdrv_pci.c index 248b4db91552..5ea566e20b37 100644 --- a/drivers/pci/pcie/portdrv_pci.c +++ b/drivers/pci/pcie/portdrv_pci.c | |||
| @@ -103,6 +103,7 @@ static int __devinit pcie_portdrv_probe (struct pci_dev *dev, | |||
| 103 | static void pcie_portdrv_remove (struct pci_dev *dev) | 103 | static void pcie_portdrv_remove (struct pci_dev *dev) |
| 104 | { | 104 | { |
| 105 | pcie_port_device_remove(dev); | 105 | pcie_port_device_remove(dev); |
| 106 | pci_disable_device(dev); | ||
| 106 | kfree(pci_get_drvdata(dev)); | 107 | kfree(pci_get_drvdata(dev)); |
| 107 | } | 108 | } |
| 108 | 109 | ||
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index f20d55368edb..92b9efe9bcaf 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c | |||
| @@ -23,6 +23,7 @@ | |||
| 23 | #include <linux/acpi.h> | 23 | #include <linux/acpi.h> |
| 24 | #include <linux/kallsyms.h> | 24 | #include <linux/kallsyms.h> |
| 25 | #include <linux/dmi.h> | 25 | #include <linux/dmi.h> |
| 26 | #include <linux/pci-aspm.h> | ||
| 26 | #include "pci.h" | 27 | #include "pci.h" |
| 27 | 28 | ||
| 28 | int isa_dma_bridge_buggy; | 29 | int isa_dma_bridge_buggy; |
| @@ -1749,6 +1750,30 @@ static void __devinit quirk_e100_interrupt(struct pci_dev *dev) | |||
| 1749 | } | 1750 | } |
| 1750 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_ANY_ID, quirk_e100_interrupt); | 1751 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_ANY_ID, quirk_e100_interrupt); |
| 1751 | 1752 | ||
| 1753 | /* | ||
| 1754 | * The 82575 and 82598 may experience data corruption issues when transitioning | ||
| 1755 | * out of L0S. To prevent this we need to disable L0S on the pci-e link | ||
| 1756 | */ | ||
| 1757 | static void __devinit quirk_disable_aspm_l0s(struct pci_dev *dev) | ||
| 1758 | { | ||
| 1759 | dev_info(&dev->dev, "Disabling L0s\n"); | ||
| 1760 | pci_disable_link_state(dev, PCIE_LINK_STATE_L0S); | ||
| 1761 | } | ||
| 1762 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10a7, quirk_disable_aspm_l0s); | ||
| 1763 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10a9, quirk_disable_aspm_l0s); | ||
| 1764 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10b6, quirk_disable_aspm_l0s); | ||
| 1765 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10c6, quirk_disable_aspm_l0s); | ||
| 1766 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10c7, quirk_disable_aspm_l0s); | ||
| 1767 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10c8, quirk_disable_aspm_l0s); | ||
| 1768 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10d6, quirk_disable_aspm_l0s); | ||
| 1769 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10db, quirk_disable_aspm_l0s); | ||
| 1770 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10dd, quirk_disable_aspm_l0s); | ||
| 1771 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10e1, quirk_disable_aspm_l0s); | ||
| 1772 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10ec, quirk_disable_aspm_l0s); | ||
| 1773 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10f1, quirk_disable_aspm_l0s); | ||
| 1774 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10f4, quirk_disable_aspm_l0s); | ||
| 1775 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x1508, quirk_disable_aspm_l0s); | ||
| 1776 | |||
| 1752 | static void __devinit fixup_rev1_53c810(struct pci_dev* dev) | 1777 | static void __devinit fixup_rev1_53c810(struct pci_dev* dev) |
| 1753 | { | 1778 | { |
| 1754 | /* rev 1 ncr53c810 chips don't set the class at all which means | 1779 | /* rev 1 ncr53c810 chips don't set the class at all which means |
| @@ -2097,7 +2122,7 @@ static void __devinit ht_disable_msi_mapping(struct pci_dev *dev) | |||
| 2097 | 2122 | ||
| 2098 | if (pci_read_config_byte(dev, pos + HT_MSI_FLAGS, | 2123 | if (pci_read_config_byte(dev, pos + HT_MSI_FLAGS, |
| 2099 | &flags) == 0) { | 2124 | &flags) == 0) { |
| 2100 | dev_info(&dev->dev, "Enabling HT MSI Mapping\n"); | 2125 | dev_info(&dev->dev, "Disabling HT MSI Mapping\n"); |
| 2101 | 2126 | ||
| 2102 | pci_write_config_byte(dev, pos + HT_MSI_FLAGS, | 2127 | pci_write_config_byte(dev, pos + HT_MSI_FLAGS, |
| 2103 | flags & ~HT_MSI_FLAGS_ENABLE); | 2128 | flags & ~HT_MSI_FLAGS_ENABLE); |
| @@ -2141,6 +2166,10 @@ static void __devinit nv_msi_ht_cap_quirk(struct pci_dev *dev) | |||
| 2141 | int pos; | 2166 | int pos; |
| 2142 | int found; | 2167 | int found; |
| 2143 | 2168 | ||
| 2169 | /* Enabling HT MSI mapping on this device breaks MCP51 */ | ||
| 2170 | if (dev->device == 0x270) | ||
| 2171 | return; | ||
| 2172 | |||
| 2144 | /* check if there is HT MSI cap or enabled on this device */ | 2173 | /* check if there is HT MSI cap or enabled on this device */ |
| 2145 | found = ht_check_msi_mapping(dev); | 2174 | found = ht_check_msi_mapping(dev); |
| 2146 | 2175 | ||
diff --git a/drivers/platform/x86/acer-wmi.c b/drivers/platform/x86/acer-wmi.c index 94c9f911824e..6bcca616a704 100644 --- a/drivers/platform/x86/acer-wmi.c +++ b/drivers/platform/x86/acer-wmi.c | |||
| @@ -1297,7 +1297,7 @@ static int __init acer_wmi_init(void) | |||
| 1297 | 1297 | ||
| 1298 | set_quirks(); | 1298 | set_quirks(); |
| 1299 | 1299 | ||
| 1300 | if (!acpi_video_backlight_support() && has_cap(ACER_CAP_BRIGHTNESS)) { | 1300 | if (acpi_video_backlight_support() && has_cap(ACER_CAP_BRIGHTNESS)) { |
| 1301 | interface->capability &= ~ACER_CAP_BRIGHTNESS; | 1301 | interface->capability &= ~ACER_CAP_BRIGHTNESS; |
| 1302 | printk(ACER_INFO "Brightness must be controlled by " | 1302 | printk(ACER_INFO "Brightness must be controlled by " |
| 1303 | "generic video driver\n"); | 1303 | "generic video driver\n"); |
diff --git a/drivers/power/ds2760_battery.c b/drivers/power/ds2760_battery.c index 1d768928e0bb..a52d4a11652d 100644 --- a/drivers/power/ds2760_battery.c +++ b/drivers/power/ds2760_battery.c | |||
| @@ -180,10 +180,13 @@ static int ds2760_battery_read_status(struct ds2760_device_info *di) | |||
| 180 | di->empty_uAh = battery_interpolate(scale, di->temp_C / 10); | 180 | di->empty_uAh = battery_interpolate(scale, di->temp_C / 10); |
| 181 | di->empty_uAh *= 1000; /* convert to µAh */ | 181 | di->empty_uAh *= 1000; /* convert to µAh */ |
| 182 | 182 | ||
| 183 | /* From Maxim Application Note 131: remaining capacity = | 183 | if (di->full_active_uAh == di->empty_uAh) |
| 184 | * ((ICA - Empty Value) / (Full Value - Empty Value)) x 100% */ | 184 | di->rem_capacity = 0; |
| 185 | di->rem_capacity = ((di->accum_current_uAh - di->empty_uAh) * 100L) / | 185 | else |
| 186 | (di->full_active_uAh - di->empty_uAh); | 186 | /* From Maxim Application Note 131: remaining capacity = |
| 187 | * ((ICA - Empty Value) / (Full Value - Empty Value)) x 100% */ | ||
| 188 | di->rem_capacity = ((di->accum_current_uAh - di->empty_uAh) * 100L) / | ||
| 189 | (di->full_active_uAh - di->empty_uAh); | ||
| 187 | 190 | ||
| 188 | if (di->rem_capacity < 0) | 191 | if (di->rem_capacity < 0) |
| 189 | di->rem_capacity = 0; | 192 | di->rem_capacity = 0; |
diff --git a/drivers/sbus/char/bbc_i2c.c b/drivers/sbus/char/bbc_i2c.c index f08e169ba1b5..7e30e5f6e032 100644 --- a/drivers/sbus/char/bbc_i2c.c +++ b/drivers/sbus/char/bbc_i2c.c | |||
| @@ -129,7 +129,7 @@ static int wait_for_pin(struct bbc_i2c_bus *bp, u8 *status) | |||
| 129 | bp->waiting = 1; | 129 | bp->waiting = 1; |
| 130 | add_wait_queue(&bp->wq, &wait); | 130 | add_wait_queue(&bp->wq, &wait); |
| 131 | while (limit-- > 0) { | 131 | while (limit-- > 0) { |
| 132 | unsigned long val; | 132 | long val; |
| 133 | 133 | ||
| 134 | val = wait_event_interruptible_timeout( | 134 | val = wait_event_interruptible_timeout( |
| 135 | bp->wq, | 135 | bp->wq, |
diff --git a/drivers/sbus/char/jsflash.c b/drivers/sbus/char/jsflash.c index a9a9893a5f95..e6d1fc8c54f1 100644 --- a/drivers/sbus/char/jsflash.c +++ b/drivers/sbus/char/jsflash.c | |||
| @@ -38,9 +38,6 @@ | |||
| 38 | #include <linux/string.h> | 38 | #include <linux/string.h> |
| 39 | #include <linux/genhd.h> | 39 | #include <linux/genhd.h> |
| 40 | #include <linux/blkdev.h> | 40 | #include <linux/blkdev.h> |
| 41 | |||
| 42 | #define MAJOR_NR JSFD_MAJOR | ||
| 43 | |||
| 44 | #include <asm/uaccess.h> | 41 | #include <asm/uaccess.h> |
| 45 | #include <asm/pgtable.h> | 42 | #include <asm/pgtable.h> |
| 46 | #include <asm/io.h> | 43 | #include <asm/io.h> |
diff --git a/drivers/w1/masters/w1-gpio.c b/drivers/w1/masters/w1-gpio.c index 9e1138a75e8b..a411702413d6 100644 --- a/drivers/w1/masters/w1-gpio.c +++ b/drivers/w1/masters/w1-gpio.c | |||
| @@ -39,7 +39,7 @@ static u8 w1_gpio_read_bit(void *data) | |||
| 39 | { | 39 | { |
| 40 | struct w1_gpio_platform_data *pdata = data; | 40 | struct w1_gpio_platform_data *pdata = data; |
| 41 | 41 | ||
| 42 | return gpio_get_value(pdata->pin); | 42 | return gpio_get_value(pdata->pin) ? 1 : 0; |
| 43 | } | 43 | } |
| 44 | 44 | ||
| 45 | static int __init w1_gpio_probe(struct platform_device *pdev) | 45 | static int __init w1_gpio_probe(struct platform_device *pdev) |
