Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
a5b0cda
regulator: qcom_spmi: Fix docs for PM8004
pevik Jan 27, 2020
e4e8276
spi: spi-omap2-mcspi: Handle DMA size restriction on AM65x
r-vignesh Feb 4, 2020
32f2fc5
spi: spi-omap2-mcspi: Support probe deferral for DMA channels
r-vignesh Feb 4, 2020
136b5cd
spi: qup: call spi_qup_pm_resume_runtime before suspending
Feb 14, 2020
138c9c3
spi: spidev: Fix CS polarity if GPIO descriptors are used
l1k Feb 18, 2020
c77ec02
docs: adm1177: fix a broken reference
mchehab Feb 22, 2020
deddc9e
hwmon: (pmbus/xdpe12284) Add callback for vout limits conversion
mellanoxbmc Feb 24, 2020
683f65d
spi: pxa2xx: Add CS control clock quirk
Feb 11, 2020
5dd8304
spi/zynqmp: remove entry that causes a cs glitch
thommyj Feb 24, 2020
8e093ea
spi: atmel-quadspi: fix possible MMIO window size overrun
ambarus Feb 28, 2020
049d919
drivers/perf: fsl_imx8_ddr: Correct the CLEAR bit definition
Feb 25, 2020
3ba52ad
drivers/perf: arm_pmu_acpi: Fix incorrect checking of gicc pointer
luanshi0212 Feb 26, 2020
9abd515
arm64: context: Fix ASID limit in boot messages
Feb 27, 2020
51bddd4
spi: bcm63xx-hsspi: Really keep pll clk enabled
tititiou36 Feb 28, 2020
e7a0489
btrfs: fix RAID direct I/O reads with alternate csums
osandov Mar 2, 2020
0a68ff5
fcntl: Distribute switch variables for initialization
kees Feb 20, 2020
44f2f88
hwmon: (adt7462) Fix an error return in ADT7462_REG_VOLT()
Mar 3, 2020
02fbabd
regulator: stm32-vrefbuf: fix a possible overshoot when re-enabling
Mar 4, 2020
f9981d4
spi: spi_register_controller(): free bus id on error paths
aakoskin Mar 4, 2020
6d390e4
locks: fix a potential use-after-free problem when wakeup a waiter
Mar 4, 2020
c20c4a0
Merge tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/…
torvalds Mar 6, 2020
08e39fc
Merge tag 'hwmon-for-v5.6-rc5' of git://git.kernel.org/pub/scm/linux/…
torvalds Mar 6, 2020
43c6372
Merge tag 'regulator-fix-v5.6-rc4' of git://git.kernel.org/pub/scm/li…
torvalds Mar 6, 2020
ae24a21
Merge tag 'spi-fix-v5.6-rc4' of git://git.kernel.org/pub/scm/linux/ke…
torvalds Mar 6, 2020
0b25d45
Merge tag 'filelock-v5.6-1' of git://git.kernel.org/pub/scm/linux/ker…
torvalds Mar 6, 2020
30fe0d0
Merge tag 'for-5.6-rc4-tag' of git://git.kernel.org/pub/scm/linux/ker…
torvalds Mar 6, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ The regulator node houses sub-nodes for each regulator within the device. Each
sub-node is identified using the node's name, with valid values listed for each
of the PMICs below.

pm8005:
pm8004:
s2, s5

pm8005:
Expand Down
3 changes: 1 addition & 2 deletions Documentation/hwmon/adm1177.rst
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,7 @@ Usage Notes
-----------

This driver does not auto-detect devices. You will have to instantiate the
devices explicitly. Please see Documentation/i2c/instantiating-devices for
details.
devices explicitly. Please see :doc:`/i2c/instantiating-devices` for details.


Sysfs entries
Expand Down
20 changes: 15 additions & 5 deletions arch/arm64/mm/context.c
Original file line number Diff line number Diff line change
Expand Up @@ -260,14 +260,26 @@ asmlinkage void post_ttbr_update_workaround(void)
CONFIG_CAVIUM_ERRATUM_27456));
}

static int asids_init(void)
static int asids_update_limit(void)
{
asid_bits = get_cpu_asid_bits();
unsigned long num_available_asids = NUM_USER_ASIDS;

if (arm64_kernel_unmapped_at_el0())
num_available_asids /= 2;
/*
* Expect allocation after rollover to fail if we don't have at least
* one more ASID than CPUs. ASID #0 is reserved for init_mm.
*/
WARN_ON(NUM_USER_ASIDS - 1 <= num_possible_cpus());
WARN_ON(num_available_asids - 1 <= num_possible_cpus());
pr_info("ASID allocator initialised with %lu entries\n",
num_available_asids);
return 0;
}
arch_initcall(asids_update_limit);

static int asids_init(void)
{
asid_bits = get_cpu_asid_bits();
atomic64_set(&asid_generation, ASID_FIRST_VERSION);
asid_map = kcalloc(BITS_TO_LONGS(NUM_USER_ASIDS), sizeof(*asid_map),
GFP_KERNEL);
Expand All @@ -282,8 +294,6 @@ static int asids_init(void)
*/
if (IS_ENABLED(CONFIG_UNMAP_KERNEL_AT_EL0))
set_kpti_asid_bits();

pr_info("ASID allocator initialised with %lu entries\n", NUM_USER_ASIDS);
return 0;
}
early_initcall(asids_init);
2 changes: 1 addition & 1 deletion drivers/hwmon/adt7462.c
Original file line number Diff line number Diff line change
Expand Up @@ -413,7 +413,7 @@ static int ADT7462_REG_VOLT(struct adt7462_data *data, int which)
return 0x95;
break;
}
return -ENODEV;
return 0;
}

/* Provide labels for sysfs */
Expand Down
54 changes: 54 additions & 0 deletions drivers/hwmon/pmbus/xdpe12284.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,59 @@
#define XDPE122_AMD_625MV 0x10 /* AMD mode 6.25mV */
#define XDPE122_PAGE_NUM 2

static int xdpe122_read_word_data(struct i2c_client *client, int page, int reg)
{
const struct pmbus_driver_info *info = pmbus_get_driver_info(client);
long val;
s16 exponent;
s32 mantissa;
int ret;

switch (reg) {
case PMBUS_VOUT_OV_FAULT_LIMIT:
case PMBUS_VOUT_UV_FAULT_LIMIT:
ret = pmbus_read_word_data(client, page, reg);
if (ret < 0)
return ret;

/* Convert register value to LINEAR11 data. */
exponent = ((s16)ret) >> 11;
mantissa = ((s16)((ret & GENMASK(10, 0)) << 5)) >> 5;
val = mantissa * 1000L;
if (exponent >= 0)
val <<= exponent;
else
val >>= -exponent;

/* Convert data to VID register. */
switch (info->vrm_version[page]) {
case vr13:
if (val >= 500)
return 1 + DIV_ROUND_CLOSEST(val - 500, 10);
return 0;
case vr12:
if (val >= 250)
return 1 + DIV_ROUND_CLOSEST(val - 250, 5);
return 0;
case imvp9:
if (val >= 200)
return 1 + DIV_ROUND_CLOSEST(val - 200, 10);
return 0;
case amd625mv:
if (val >= 200 && val <= 1550)
return DIV_ROUND_CLOSEST((1550 - val) * 100,
625);
return 0;
default:
return -EINVAL;
}
default:
return -ENODATA;
}

return 0;
}

static int xdpe122_identify(struct i2c_client *client,
struct pmbus_driver_info *info)
{
Expand Down Expand Up @@ -70,6 +123,7 @@ static struct pmbus_driver_info xdpe122_info = {
PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP |
PMBUS_HAVE_POUT | PMBUS_HAVE_PIN | PMBUS_HAVE_STATUS_INPUT,
.identify = xdpe122_identify,
.read_word_data = xdpe122_read_word_data,
};

static int xdpe122_probe(struct i2c_client *client,
Expand Down
7 changes: 2 additions & 5 deletions drivers/perf/arm_pmu_acpi.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,6 @@ static int arm_pmu_acpi_register_irq(int cpu)
int gsi, trigger;

gicc = acpi_cpu_get_madt_gicc(cpu);
if (WARN_ON(!gicc))
return -EINVAL;

gsi = gicc->performance_interrupt;

Expand Down Expand Up @@ -64,11 +62,10 @@ static void arm_pmu_acpi_unregister_irq(int cpu)
int gsi;

gicc = acpi_cpu_get_madt_gicc(cpu);
if (!gicc)
return;

gsi = gicc->performance_interrupt;
acpi_unregister_gsi(gsi);
if (gsi)
acpi_unregister_gsi(gsi);
}

#if IS_ENABLED(CONFIG_ARM_SPE_PMU)
Expand Down
10 changes: 6 additions & 4 deletions drivers/perf/fsl_imx8_ddr_perf.c
Original file line number Diff line number Diff line change
Expand Up @@ -388,17 +388,19 @@ static void ddr_perf_counter_enable(struct ddr_pmu *pmu, int config,

if (enable) {
/*
* must disable first, then enable again
* otherwise, cycle counter will not work
* if previous state is enabled.
* cycle counter is special which should firstly write 0 then
* write 1 into CLEAR bit to clear it. Other counters only
* need write 0 into CLEAR bit and it turns out to be 1 by
* hardware. Below enable flow is harmless for all counters.
*/
writel(0, pmu->base + reg);
val = CNTL_EN | CNTL_CLEAR;
val |= FIELD_PREP(CNTL_CSV_MASK, config);
writel(val, pmu->base + reg);
} else {
/* Disable counter */
writel(0, pmu->base + reg);
val = readl_relaxed(pmu->base + reg) & CNTL_EN_MASK;
writel(val, pmu->base + reg);
}
}

Expand Down
3 changes: 2 additions & 1 deletion drivers/regulator/stm32-vrefbuf.c
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ static int stm32_vrefbuf_disable(struct regulator_dev *rdev)
}

val = readl_relaxed(priv->base + STM32_VREFBUF_CSR);
val = (val & ~STM32_ENVR) | STM32_HIZ;
val &= ~STM32_ENVR;
writel_relaxed(val, priv->base + STM32_VREFBUF_CSR);

pm_runtime_mark_last_busy(priv->dev);
Expand Down Expand Up @@ -175,6 +175,7 @@ static const struct regulator_desc stm32_vrefbuf_regu = {
.volt_table = stm32_vrefbuf_voltages,
.n_voltages = ARRAY_SIZE(stm32_vrefbuf_voltages),
.ops = &stm32_vrefbuf_volt_ops,
.off_on_delay = 1000,
.type = REGULATOR_VOLTAGE,
.owner = THIS_MODULE,
};
Expand Down
11 changes: 11 additions & 0 deletions drivers/spi/atmel-quadspi.c
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,7 @@ struct atmel_qspi {
struct clk *qspick;
struct platform_device *pdev;
const struct atmel_qspi_caps *caps;
resource_size_t mmap_size;
u32 pending;
u32 mr;
u32 scr;
Expand Down Expand Up @@ -329,6 +330,14 @@ static int atmel_qspi_exec_op(struct spi_mem *mem, const struct spi_mem_op *op)
u32 sr, offset;
int err;

/*
* Check if the address exceeds the MMIO window size. An improvement
* would be to add support for regular SPI mode and fall back to it
* when the flash memories overrun the controller's memory space.
*/
if (op->addr.val + op->data.nbytes > aq->mmap_size)
return -ENOTSUPP;

err = atmel_qspi_set_cfg(aq, op, &offset);
if (err)
return err;
Expand Down Expand Up @@ -480,6 +489,8 @@ static int atmel_qspi_probe(struct platform_device *pdev)
goto exit;
}

aq->mmap_size = resource_size(res);

/* Get the peripheral clock */
aq->pclk = devm_clk_get(&pdev->dev, "pclk");
if (IS_ERR(aq->pclk))
Expand Down
1 change: 0 additions & 1 deletion drivers/spi/spi-bcm63xx-hsspi.c
Original file line number Diff line number Diff line change
Expand Up @@ -366,7 +366,6 @@ static int bcm63xx_hsspi_probe(struct platform_device *pdev)
goto out_disable_clk;

rate = clk_get_rate(pll_clk);
clk_disable_unprepare(pll_clk);
if (!rate) {
ret = -EINVAL;
goto out_disable_pll_clk;
Expand Down
Loading