aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/boot/dts/stm32mp157c.dtsi2
-rw-r--r--arch/arm/configs/multi_v7_defconfig1
-rw-r--r--arch/arm/mach-omap1/board-ams-delta.c8
-rw-r--r--arch/arm/plat-orion/mpp.c7
-rw-r--r--arch/arm64/configs/defconfig3
-rw-r--r--drivers/soc/ti/knav_qmss.h4
-rw-r--r--drivers/soc/ti/knav_qmss_acc.c10
-rw-r--r--drivers/soc/ti/knav_qmss_queue.c22
8 files changed, 35 insertions, 22 deletions
diff --git a/arch/arm/boot/dts/stm32mp157c.dtsi b/arch/arm/boot/dts/stm32mp157c.dtsi
index c50c36baba75..8bf1c17f8cef 100644
--- a/arch/arm/boot/dts/stm32mp157c.dtsi
+++ b/arch/arm/boot/dts/stm32mp157c.dtsi
@@ -923,7 +923,7 @@
923 interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>; 923 interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
924 clocks = <&rcc HASH1>; 924 clocks = <&rcc HASH1>;
925 resets = <&rcc HASH1_R>; 925 resets = <&rcc HASH1_R>;
926 dmas = <&mdma1 31 0x10 0x1000A02 0x0 0x0 0x0>; 926 dmas = <&mdma1 31 0x10 0x1000A02 0x0 0x0>;
927 dma-names = "in"; 927 dma-names = "in";
928 dma-maxburst = <2>; 928 dma-maxburst = <2>;
929 status = "disabled"; 929 status = "disabled";
diff --git a/arch/arm/configs/multi_v7_defconfig b/arch/arm/configs/multi_v7_defconfig
index 63af6234c1b6..1c7616815a86 100644
--- a/arch/arm/configs/multi_v7_defconfig
+++ b/arch/arm/configs/multi_v7_defconfig
@@ -1,6 +1,7 @@
1CONFIG_SYSVIPC=y 1CONFIG_SYSVIPC=y
2CONFIG_NO_HZ=y 2CONFIG_NO_HZ=y
3CONFIG_HIGH_RES_TIMERS=y 3CONFIG_HIGH_RES_TIMERS=y
4CONFIG_PREEMPT=y
4CONFIG_CGROUPS=y 5CONFIG_CGROUPS=y
5CONFIG_BLK_DEV_INITRD=y 6CONFIG_BLK_DEV_INITRD=y
6CONFIG_EMBEDDED=y 7CONFIG_EMBEDDED=y
diff --git a/arch/arm/mach-omap1/board-ams-delta.c b/arch/arm/mach-omap1/board-ams-delta.c
index af318d958fd2..3d191fd52910 100644
--- a/arch/arm/mach-omap1/board-ams-delta.c
+++ b/arch/arm/mach-omap1/board-ams-delta.c
@@ -773,7 +773,7 @@ static struct plat_serial8250_port ams_delta_modem_ports[] = {
773 { 773 {
774 .membase = IOMEM(MODEM_VIRT), 774 .membase = IOMEM(MODEM_VIRT),
775 .mapbase = MODEM_PHYS, 775 .mapbase = MODEM_PHYS,
776 .irq = -EINVAL, /* changed later */ 776 .irq = IRQ_NOTCONNECTED, /* changed later */
777 .flags = UPF_BOOT_AUTOCONF, 777 .flags = UPF_BOOT_AUTOCONF,
778 .irqflags = IRQF_TRIGGER_RISING, 778 .irqflags = IRQF_TRIGGER_RISING,
779 .iotype = UPIO_MEM, 779 .iotype = UPIO_MEM,
@@ -864,8 +864,7 @@ static int __init modem_nreset_init(void)
864 864
865 865
866/* 866/*
867 * This function expects MODEM IRQ number already assigned to the port 867 * This function expects MODEM IRQ number already assigned to the port.
868 * and fails if it's not.
869 * The MODEM device requires its RESET# pin kept high during probe. 868 * The MODEM device requires its RESET# pin kept high during probe.
870 * That requirement can be fulfilled in several ways: 869 * That requirement can be fulfilled in several ways:
871 * - with a descriptor of already functional modem_nreset regulator 870 * - with a descriptor of already functional modem_nreset regulator
@@ -888,9 +887,6 @@ static int __init ams_delta_modem_init(void)
888 if (!machine_is_ams_delta()) 887 if (!machine_is_ams_delta())
889 return -ENODEV; 888 return -ENODEV;
890 889
891 if (ams_delta_modem_ports[0].irq < 0)
892 return ams_delta_modem_ports[0].irq;
893
894 omap_cfg_reg(M14_1510_GPIO2); 890 omap_cfg_reg(M14_1510_GPIO2);
895 891
896 /* Initialize the modem_nreset regulator consumer before use */ 892 /* Initialize the modem_nreset regulator consumer before use */
diff --git a/arch/arm/plat-orion/mpp.c b/arch/arm/plat-orion/mpp.c
index 5b4ff9373c89..8a6880d528b6 100644
--- a/arch/arm/plat-orion/mpp.c
+++ b/arch/arm/plat-orion/mpp.c
@@ -28,10 +28,15 @@ void __init orion_mpp_conf(unsigned int *mpp_list, unsigned int variant_mask,
28 unsigned int mpp_max, void __iomem *dev_bus) 28 unsigned int mpp_max, void __iomem *dev_bus)
29{ 29{
30 unsigned int mpp_nr_regs = (1 + mpp_max/8); 30 unsigned int mpp_nr_regs = (1 + mpp_max/8);
31 u32 mpp_ctrl[mpp_nr_regs]; 31 u32 mpp_ctrl[8];
32 int i; 32 int i;
33 33
34 printk(KERN_DEBUG "initial MPP regs:"); 34 printk(KERN_DEBUG "initial MPP regs:");
35 if (mpp_nr_regs > ARRAY_SIZE(mpp_ctrl)) {
36 printk(KERN_ERR "orion_mpp_conf: invalid mpp_max\n");
37 return;
38 }
39
35 for (i = 0; i < mpp_nr_regs; i++) { 40 for (i = 0; i < mpp_nr_regs; i++) {
36 mpp_ctrl[i] = readl(mpp_ctrl_addr(i, dev_bus)); 41 mpp_ctrl[i] = readl(mpp_ctrl_addr(i, dev_bus));
37 printk(" %08x", mpp_ctrl[i]); 42 printk(" %08x", mpp_ctrl[i]);
diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig
index 3cb995606e60..c9a57d11330b 100644
--- a/arch/arm64/configs/defconfig
+++ b/arch/arm64/configs/defconfig
@@ -308,6 +308,9 @@ CONFIG_SERIAL_XILINX_PS_UART_CONSOLE=y
308CONFIG_SERIAL_MVEBU_UART=y 308CONFIG_SERIAL_MVEBU_UART=y
309CONFIG_SERIAL_DEV_BUS=y 309CONFIG_SERIAL_DEV_BUS=y
310CONFIG_VIRTIO_CONSOLE=y 310CONFIG_VIRTIO_CONSOLE=y
311CONFIG_IPMI_HANDLER=m
312CONFIG_IPMI_DEVICE_INTERFACE=m
313CONFIG_IPMI_SI=m
311CONFIG_TCG_TPM=y 314CONFIG_TCG_TPM=y
312CONFIG_TCG_TIS_I2C_INFINEON=y 315CONFIG_TCG_TIS_I2C_INFINEON=y
313CONFIG_I2C_CHARDEV=y 316CONFIG_I2C_CHARDEV=y
diff --git a/drivers/soc/ti/knav_qmss.h b/drivers/soc/ti/knav_qmss.h
index 7c128132799e..4c28fa938ac7 100644
--- a/drivers/soc/ti/knav_qmss.h
+++ b/drivers/soc/ti/knav_qmss.h
@@ -329,8 +329,8 @@ struct knav_range_ops {
329}; 329};
330 330
331struct knav_irq_info { 331struct knav_irq_info {
332 int irq; 332 int irq;
333 u32 cpu_map; 333 struct cpumask *cpu_mask;
334}; 334};
335 335
336struct knav_range_info { 336struct knav_range_info {
diff --git a/drivers/soc/ti/knav_qmss_acc.c b/drivers/soc/ti/knav_qmss_acc.c
index 316e82e46f6c..2f7fb2dcc1d6 100644
--- a/drivers/soc/ti/knav_qmss_acc.c
+++ b/drivers/soc/ti/knav_qmss_acc.c
@@ -205,18 +205,18 @@ static int knav_range_setup_acc_irq(struct knav_range_info *range,
205{ 205{
206 struct knav_device *kdev = range->kdev; 206 struct knav_device *kdev = range->kdev;
207 struct knav_acc_channel *acc; 207 struct knav_acc_channel *acc;
208 unsigned long cpu_map; 208 struct cpumask *cpu_mask;
209 int ret = 0, irq; 209 int ret = 0, irq;
210 u32 old, new; 210 u32 old, new;
211 211
212 if (range->flags & RANGE_MULTI_QUEUE) { 212 if (range->flags & RANGE_MULTI_QUEUE) {
213 acc = range->acc; 213 acc = range->acc;
214 irq = range->irqs[0].irq; 214 irq = range->irqs[0].irq;
215 cpu_map = range->irqs[0].cpu_map; 215 cpu_mask = range->irqs[0].cpu_mask;
216 } else { 216 } else {
217 acc = range->acc + queue; 217 acc = range->acc + queue;
218 irq = range->irqs[queue].irq; 218 irq = range->irqs[queue].irq;
219 cpu_map = range->irqs[queue].cpu_map; 219 cpu_mask = range->irqs[queue].cpu_mask;
220 } 220 }
221 221
222 old = acc->open_mask; 222 old = acc->open_mask;
@@ -239,8 +239,8 @@ static int knav_range_setup_acc_irq(struct knav_range_info *range,
239 acc->name, acc->name); 239 acc->name, acc->name);
240 ret = request_irq(irq, knav_acc_int_handler, 0, acc->name, 240 ret = request_irq(irq, knav_acc_int_handler, 0, acc->name,
241 range); 241 range);
242 if (!ret && cpu_map) { 242 if (!ret && cpu_mask) {
243 ret = irq_set_affinity_hint(irq, to_cpumask(&cpu_map)); 243 ret = irq_set_affinity_hint(irq, cpu_mask);
244 if (ret) { 244 if (ret) {
245 dev_warn(range->kdev->dev, 245 dev_warn(range->kdev->dev,
246 "Failed to set IRQ affinity\n"); 246 "Failed to set IRQ affinity\n");
diff --git a/drivers/soc/ti/knav_qmss_queue.c b/drivers/soc/ti/knav_qmss_queue.c
index b5d5673c255c..8b418379272d 100644
--- a/drivers/soc/ti/knav_qmss_queue.c
+++ b/drivers/soc/ti/knav_qmss_queue.c
@@ -118,19 +118,17 @@ static int knav_queue_setup_irq(struct knav_range_info *range,
118 struct knav_queue_inst *inst) 118 struct knav_queue_inst *inst)
119{ 119{
120 unsigned queue = inst->id - range->queue_base; 120 unsigned queue = inst->id - range->queue_base;
121 unsigned long cpu_map;
122 int ret = 0, irq; 121 int ret = 0, irq;
123 122
124 if (range->flags & RANGE_HAS_IRQ) { 123 if (range->flags & RANGE_HAS_IRQ) {
125 irq = range->irqs[queue].irq; 124 irq = range->irqs[queue].irq;
126 cpu_map = range->irqs[queue].cpu_map;
127 ret = request_irq(irq, knav_queue_int_handler, 0, 125 ret = request_irq(irq, knav_queue_int_handler, 0,
128 inst->irq_name, inst); 126 inst->irq_name, inst);
129 if (ret) 127 if (ret)
130 return ret; 128 return ret;
131 disable_irq(irq); 129 disable_irq(irq);
132 if (cpu_map) { 130 if (range->irqs[queue].cpu_mask) {
133 ret = irq_set_affinity_hint(irq, to_cpumask(&cpu_map)); 131 ret = irq_set_affinity_hint(irq, range->irqs[queue].cpu_mask);
134 if (ret) { 132 if (ret) {
135 dev_warn(range->kdev->dev, 133 dev_warn(range->kdev->dev,
136 "Failed to set IRQ affinity\n"); 134 "Failed to set IRQ affinity\n");
@@ -1262,9 +1260,19 @@ static int knav_setup_queue_range(struct knav_device *kdev,
1262 1260
1263 range->num_irqs++; 1261 range->num_irqs++;
1264 1262
1265 if (IS_ENABLED(CONFIG_SMP) && oirq.args_count == 3) 1263 if (IS_ENABLED(CONFIG_SMP) && oirq.args_count == 3) {
1266 range->irqs[i].cpu_map = 1264 unsigned long mask;
1267 (oirq.args[2] & 0x0000ff00) >> 8; 1265 int bit;
1266
1267 range->irqs[i].cpu_mask = devm_kzalloc(dev,
1268 cpumask_size(), GFP_KERNEL);
1269 if (!range->irqs[i].cpu_mask)
1270 return -ENOMEM;
1271
1272 mask = (oirq.args[2] & 0x0000ff00) >> 8;
1273 for_each_set_bit(bit, &mask, BITS_PER_LONG)
1274 cpumask_set_cpu(bit, range->irqs[i].cpu_mask);
1275 }
1268 } 1276 }
1269 1277
1270 range->num_irqs = min(range->num_irqs, range->num_queues); 1278 range->num_irqs = min(range->num_irqs, range->num_queues);