mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-01 17:46:48 +07:00
Merge branch 'fixes' of git://git.linaro.org/people/rmk/linux-arm
Pull ARM fixes from Russell King: "This includes three MMCI changes - one to fix up the wrong version of the DT support patch which was merged, and two to make deferred probing work. It also includes a fix to the OMAP SPI driver which is causing a boot time warning. The remainder are very minor ARM fixes." * 'fixes' of git://git.linaro.org/people/rmk/linux-arm: SPI: fix over-eager devm_xxx() conversion ARM: 7427/1: mmc: mmci: Defer probe() in case of yet uninitialized GPIOs ARM: 7426/1: mmc: mmci: Remove wrong error handling of gpio 0 ARM: 7425/1: extable: ensure fixup entries are 4-byte aligned ARM: 7421/1: bpf_jit: BPF_S_ANC_ALU_XOR_X support ARM: 7423/1: kprobes: run t32_simulate_ldr_literal() without insn slot ARM: 7422/1: mmc: mmci: Allocate platform memory during Device Tree boot
This commit is contained in:
commit
a4d7a12238
@ -19,6 +19,7 @@
|
||||
" .long 1b, 4f, 2b, 4f\n" \
|
||||
" .popsection\n" \
|
||||
" .pushsection .fixup,\"ax\"\n" \
|
||||
" .align 2\n" \
|
||||
"4: mov %0, " err_reg "\n" \
|
||||
" b 3b\n" \
|
||||
" .popsection"
|
||||
|
@ -495,6 +495,7 @@ ENDPROC(__und_usr)
|
||||
* The out of line fixup for the ldrt above.
|
||||
*/
|
||||
.pushsection .fixup, "ax"
|
||||
.align 2
|
||||
4: mov pc, r9
|
||||
.popsection
|
||||
.pushsection __ex_table,"a"
|
||||
|
@ -660,7 +660,7 @@ static const union decode_item t32_table_1111_100x[] = {
|
||||
/* LDRSB (literal) 1111 1001 x001 1111 xxxx xxxx xxxx xxxx */
|
||||
/* LDRH (literal) 1111 1000 x011 1111 xxxx xxxx xxxx xxxx */
|
||||
/* LDRSH (literal) 1111 1001 x011 1111 xxxx xxxx xxxx xxxx */
|
||||
DECODE_EMULATEX (0xfe5f0000, 0xf81f0000, t32_simulate_ldr_literal,
|
||||
DECODE_SIMULATEX(0xfe5f0000, 0xf81f0000, t32_simulate_ldr_literal,
|
||||
REGS(PC, NOSPPCX, 0, 0, 0)),
|
||||
|
||||
/* STRB (immediate) 1111 1000 0000 xxxx xxxx 1xxx xxxx xxxx */
|
||||
|
@ -762,6 +762,11 @@ static int build_body(struct jit_ctx *ctx)
|
||||
update_on_xread(ctx);
|
||||
emit(ARM_MOV_R(r_A, r_X), ctx);
|
||||
break;
|
||||
case BPF_S_ANC_ALU_XOR_X:
|
||||
/* A ^= X */
|
||||
update_on_xread(ctx);
|
||||
emit(ARM_EOR_R(r_A, r_A, r_X), ctx);
|
||||
break;
|
||||
case BPF_S_ANC_PROTOCOL:
|
||||
/* A = ntohs(skb->protocol) */
|
||||
ctx->seen |= SEEN_SKB;
|
||||
|
@ -68,6 +68,8 @@
|
||||
#define ARM_INST_CMP_R 0x01500000
|
||||
#define ARM_INST_CMP_I 0x03500000
|
||||
|
||||
#define ARM_INST_EOR_R 0x00200000
|
||||
|
||||
#define ARM_INST_LDRB_I 0x05d00000
|
||||
#define ARM_INST_LDRB_R 0x07d00000
|
||||
#define ARM_INST_LDRH_I 0x01d000b0
|
||||
@ -132,6 +134,8 @@
|
||||
#define ARM_CMP_R(rn, rm) _AL3_R(ARM_INST_CMP, 0, rn, rm)
|
||||
#define ARM_CMP_I(rn, imm) _AL3_I(ARM_INST_CMP, 0, rn, imm)
|
||||
|
||||
#define ARM_EOR_R(rd, rn, rm) _AL3_R(ARM_INST_EOR, rd, rn, rm)
|
||||
|
||||
#define ARM_LDR_I(rt, rn, off) (ARM_INST_LDR_I | (rt) << 12 | (rn) << 16 \
|
||||
| (off))
|
||||
#define ARM_LDRB_I(rt, rn, off) (ARM_INST_LDRB_I | (rt) << 12 | (rn) << 16 \
|
||||
|
@ -1216,12 +1216,7 @@ static void mmci_dt_populate_generic_pdata(struct device_node *np,
|
||||
int bus_width = 0;
|
||||
|
||||
pdata->gpio_wp = of_get_named_gpio(np, "wp-gpios", 0);
|
||||
if (!pdata->gpio_wp)
|
||||
pdata->gpio_wp = -1;
|
||||
|
||||
pdata->gpio_cd = of_get_named_gpio(np, "cd-gpios", 0);
|
||||
if (!pdata->gpio_cd)
|
||||
pdata->gpio_cd = -1;
|
||||
|
||||
if (of_get_property(np, "cd-inverted", NULL))
|
||||
pdata->cd_invert = true;
|
||||
@ -1276,6 +1271,12 @@ static int __devinit mmci_probe(struct amba_device *dev,
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (!plat) {
|
||||
plat = devm_kzalloc(&dev->dev, sizeof(*plat), GFP_KERNEL);
|
||||
if (!plat)
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
if (np)
|
||||
mmci_dt_populate_generic_pdata(np, plat);
|
||||
|
||||
@ -1424,6 +1425,10 @@ static int __devinit mmci_probe(struct amba_device *dev,
|
||||
writel(0, host->base + MMCIMASK1);
|
||||
writel(0xfff, host->base + MMCICLEAR);
|
||||
|
||||
if (plat->gpio_cd == -EPROBE_DEFER) {
|
||||
ret = -EPROBE_DEFER;
|
||||
goto err_gpio_cd;
|
||||
}
|
||||
if (gpio_is_valid(plat->gpio_cd)) {
|
||||
ret = gpio_request(plat->gpio_cd, DRIVER_NAME " (cd)");
|
||||
if (ret == 0)
|
||||
@ -1447,6 +1452,10 @@ static int __devinit mmci_probe(struct amba_device *dev,
|
||||
if (ret >= 0)
|
||||
host->gpio_cd_irq = gpio_to_irq(plat->gpio_cd);
|
||||
}
|
||||
if (plat->gpio_wp == -EPROBE_DEFER) {
|
||||
ret = -EPROBE_DEFER;
|
||||
goto err_gpio_wp;
|
||||
}
|
||||
if (gpio_is_valid(plat->gpio_wp)) {
|
||||
ret = gpio_request(plat->gpio_wp, DRIVER_NAME " (wp)");
|
||||
if (ret == 0)
|
||||
|
@ -801,7 +801,7 @@ static int omap2_mcspi_setup(struct spi_device *spi)
|
||||
mcspi_dma = &mcspi->dma_channels[spi->chip_select];
|
||||
|
||||
if (!cs) {
|
||||
cs = devm_kzalloc(&spi->dev , sizeof *cs, GFP_KERNEL);
|
||||
cs = kzalloc(sizeof *cs, GFP_KERNEL);
|
||||
if (!cs)
|
||||
return -ENOMEM;
|
||||
cs->base = mcspi->base + spi->chip_select * 0x14;
|
||||
@ -842,6 +842,7 @@ static void omap2_mcspi_cleanup(struct spi_device *spi)
|
||||
cs = spi->controller_state;
|
||||
list_del(&cs->node);
|
||||
|
||||
kfree(cs);
|
||||
}
|
||||
|
||||
if (spi->chip_select < spi->master->num_chipselect) {
|
||||
|
Loading…
Reference in New Issue
Block a user