diff options
author | Linux Build Service Account <lnxbuild@localhost> | 2014-11-25 22:31:39 -0700 |
---|---|---|
committer | Linux Build Service Account <lnxbuild@localhost> | 2014-11-25 22:31:39 -0700 |
commit | 432f00a897f09f05a29a63df79539fc0b38bdab6 (patch) | |
tree | dc29bd23bf059b0b1fba71429e27bb073185bb8d | |
parent | e928c716d77112186a20c7c8f94a1ef250bbef4b (diff) | |
parent | 1632f03cb26a46d3c0f9dcac09ac73bba5248a77 (diff) |
Merge 1632f03cb26a46d3c0f9dcac09ac73bba5248a77 on remote branch
Change-Id: If06242d1b013e39db0e9e5bddee98305e6a8ca4d
-rw-r--r-- | drivers/clk/qcom/clock-generic.c | 2 | ||||
-rw-r--r-- | drivers/cpufreq/cpufreq.c | 7 | ||||
-rw-r--r-- | drivers/hwmon/qpnp-adc-common.c | 5 | ||||
-rw-r--r-- | drivers/hwmon/qpnp-adc-voltage.c | 3 | ||||
-rw-r--r-- | drivers/mmc/host/sdhci.c | 31 | ||||
-rw-r--r-- | drivers/video/msm/mdp.c | 5 | ||||
-rw-r--r-- | drivers/video/msm/mdss/mdss_mdp_pp.c | 4 | ||||
-rw-r--r-- | include/linux/qpnp/qpnp-adc.h | 3 |
8 files changed, 42 insertions, 18 deletions
diff --git a/drivers/clk/qcom/clock-generic.c b/drivers/clk/qcom/clock-generic.c index 3da2ee90d64e..8292dc9db920 100644 --- a/drivers/clk/qcom/clock-generic.c +++ b/drivers/clk/qcom/clock-generic.c @@ -423,7 +423,7 @@ static long __slave_div_round_rate(struct clk *c, unsigned long rate, max_div = d->data.max_div; p_rate = clk_get_rate(c->parent); - div = p_rate / rate; + div = DIV_ROUND_CLOSEST(p_rate, rate); div = max(div, min_div); div = min(div, max_div); if (best_div) diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c index c7c1ecfaaaaa..81ededa4d72d 100644 --- a/drivers/cpufreq/cpufreq.c +++ b/drivers/cpufreq/cpufreq.c @@ -433,6 +433,9 @@ static ssize_t store_##file_name \ if (ret) \ return -EINVAL; \ \ + new_policy.min = new_policy.user_policy.min; \ + new_policy.max = new_policy.user_policy.max; \ + \ ret = sscanf(buf, "%u", &new_policy.object); \ if (ret != 1) \ return -EINVAL; \ @@ -441,7 +444,9 @@ static ssize_t store_##file_name \ if (ret) \ pr_err("cpufreq: Frequency verification failed\n"); \ \ - policy->user_policy.object = new_policy.object; \ + policy->user_policy.min = new_policy.min; \ + policy->user_policy.max = new_policy.max; \ + \ ret = cpufreq_set_policy(policy, &new_policy); \ \ return ret ? ret : count; \ diff --git a/drivers/hwmon/qpnp-adc-common.c b/drivers/hwmon/qpnp-adc-common.c index 23a0524b3e64..37a429f8d779 100644 --- a/drivers/hwmon/qpnp-adc-common.c +++ b/drivers/hwmon/qpnp-adc-common.c @@ -1310,8 +1310,11 @@ int32_t qpnp_adc_smb_btm_rscaler(struct qpnp_vadc_chip *chip, } EXPORT_SYMBOL(qpnp_adc_smb_btm_rscaler); -int32_t qpnp_vadc_check_result(int32_t *data) +int32_t qpnp_vadc_check_result(int32_t *data, bool recalib_check) { + if (recalib_check) + return 0; + if (*data < QPNP_VADC_MIN_ADC_CODE) *data = QPNP_VADC_MIN_ADC_CODE; else if (*data > QPNP_VADC_MAX_ADC_CODE) diff --git a/drivers/hwmon/qpnp-adc-voltage.c b/drivers/hwmon/qpnp-adc-voltage.c index 203942af3361..037f78953edf 100644 --- a/drivers/hwmon/qpnp-adc-voltage.c +++ b/drivers/hwmon/qpnp-adc-voltage.c @@ -397,7 +397,8 @@ static int32_t qpnp_vadc_read_conversion_result(struct qpnp_vadc_chip *vadc, *data = (rslt_msb << 8) | rslt_lsb; - status = qpnp_vadc_check_result(data); + status = qpnp_vadc_check_result(data, + (vadc->vadc_recalib_check ? true : false)); if (status < 0) { pr_err("VADC data check failed\n"); goto fail; diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index 3a12acab7840..00a50d432df0 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c @@ -687,9 +687,11 @@ static int sdhci_adma_table_pre(struct sdhci_host *host, BUG_ON(len > 65536); - /* tran, valid */ - sdhci_set_adma_desc(host, desc, addr, len, 0x21); - desc += host->adma_desc_line_sz; + if (len) { + /* tran, valid */ + sdhci_set_adma_desc(host, desc, addr, len, 0x21); + desc += host->adma_desc_line_sz; + } /* * If this triggers then we have a calculation bug @@ -877,6 +879,17 @@ static void sdhci_set_transfer_irqs(struct sdhci_host *host) sdhci_clear_set_irqs(host, dma_irqs, pio_irqs); } +static void sdhci_set_blk_size_reg(struct sdhci_host *host, unsigned int blksz, + unsigned int sdma_boundary) +{ + if (host->flags & SDHCI_USE_ADMA) + sdhci_writew(host, SDHCI_MAKE_BLKSZ(0, blksz), + SDHCI_BLOCK_SIZE); + else + sdhci_writew(host, SDHCI_MAKE_BLKSZ(sdma_boundary, blksz), + SDHCI_BLOCK_SIZE); +} + static void sdhci_prepare_data(struct sdhci_host *host, struct mmc_command *cmd) { u8 count; @@ -1048,8 +1061,7 @@ static void sdhci_prepare_data(struct sdhci_host *host, struct mmc_command *cmd) sdhci_set_transfer_irqs(host); /* Set the DMA boundary value and block size */ - sdhci_writew(host, SDHCI_MAKE_BLKSZ(SDHCI_DEFAULT_BOUNDARY_ARG, - data->blksz), SDHCI_BLOCK_SIZE); + sdhci_set_blk_size_reg(host, data->blksz, SDHCI_DEFAULT_BOUNDARY_ARG); sdhci_writew(host, data->blocks, SDHCI_BLOCK_COUNT); } @@ -2397,14 +2409,11 @@ static int sdhci_execute_tuning(struct mmc_host *mmc, u32 opcode) if ((cmd.opcode == MMC_SEND_TUNING_BLOCK_HS400) || (cmd.opcode == MMC_SEND_TUNING_BLOCK_HS200)) { if (mmc->ios.bus_width == MMC_BUS_WIDTH_8) - sdhci_writew(host, SDHCI_MAKE_BLKSZ(7, 128), - SDHCI_BLOCK_SIZE); + sdhci_set_blk_size_reg(host, 128, 7); else if (mmc->ios.bus_width == MMC_BUS_WIDTH_4) - sdhci_writew(host, SDHCI_MAKE_BLKSZ(7, 64), - SDHCI_BLOCK_SIZE); + sdhci_set_blk_size_reg(host, 64, 7); } else { - sdhci_writew(host, SDHCI_MAKE_BLKSZ(7, 64), - SDHCI_BLOCK_SIZE); + sdhci_set_blk_size_reg(host, 64, 7); } /* diff --git a/drivers/video/msm/mdp.c b/drivers/video/msm/mdp.c index 4ede0b524403..c00bd78884d4 100644 --- a/drivers/video/msm/mdp.c +++ b/drivers/video/msm/mdp.c @@ -485,6 +485,11 @@ static int mdp_lut_hw_update(struct fb_cmap *cmap) c[1] = cmap->blue; c[2] = cmap->red; + if (cmap->start > MDP_HIST_LUT_SIZE || cmap->len > MDP_HIST_LUT_SIZE || + (cmap->start + cmap->len > MDP_HIST_LUT_SIZE)) { + pr_err("mdp_lut_hw_update invalid arguments\n"); + return -EINVAL; + } for (i = 0; i < cmap->len; i++) { if (copy_from_user(&r, cmap->red++, sizeof(r)) || copy_from_user(&g, cmap->green++, sizeof(g)) || diff --git a/drivers/video/msm/mdss/mdss_mdp_pp.c b/drivers/video/msm/mdss/mdss_mdp_pp.c index 164bf7e4ba62..239ccccfcece 100644 --- a/drivers/video/msm/mdss/mdss_mdp_pp.c +++ b/drivers/video/msm/mdss/mdss_mdp_pp.c @@ -1071,7 +1071,7 @@ static int mdss_mdp_scale_setup(struct mdss_mdp_pipe *pipe) (pipe->pp_res.pp_sts.sharp_sts & PP_STS_ENABLE) || (chroma_sample == MDSS_MDP_CHROMA_420) || (chroma_sample == MDSS_MDP_CHROMA_H1V2) || - pipe->scale.enable_pxl_ext) { + (pipe->scale.enable_pxl_ext && (src_h != pipe->dst.h))) { pr_debug("scale y - src_h=%d dst_h=%d\n", src_h, pipe->dst.h); if ((src_h / MAX_DOWNSCALE_RATIO) > pipe->dst.h) { @@ -1127,7 +1127,7 @@ static int mdss_mdp_scale_setup(struct mdss_mdp_pipe *pipe) (pipe->pp_res.pp_sts.sharp_sts & PP_STS_ENABLE) || (chroma_sample == MDSS_MDP_CHROMA_420) || (chroma_sample == MDSS_MDP_CHROMA_H2V1) || - pipe->scale.enable_pxl_ext) { + (pipe->scale.enable_pxl_ext && (src_w != pipe->dst.w))) { pr_debug("scale x - src_w=%d dst_w=%d\n", src_w, pipe->dst.w); if ((src_w / MAX_DOWNSCALE_RATIO) > pipe->dst.w) { diff --git a/include/linux/qpnp/qpnp-adc.h b/include/linux/qpnp/qpnp-adc.h index 86587504a4c6..727e30d896e5 100644 --- a/include/linux/qpnp/qpnp-adc.h +++ b/include/linux/qpnp/qpnp-adc.h @@ -1093,8 +1093,9 @@ int32_t qpnp_vadc_conv_seq_request(struct qpnp_vadc_chip *dev, /** * qpnp_vadc_check_result() - Performs check on the ADC raw code. * @data: Data used for verifying the range of the ADC code. + * @recalib_check: Recalibration check to ignore result check. */ -int32_t qpnp_vadc_check_result(int32_t *data); +int32_t qpnp_vadc_check_result(int32_t *data, bool recalib_check); /** * qpnp_adc_get_devicetree_data() - Abstracts the ADC devicetree data. |