Merge tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm
Pull ARM updates from Russell King: - An improvement from Ard Biesheuvel, who noted that the identity map setup was taking a long time due to flush_cache_louis(). - Update a comment about dma_ops from Wolfram Sang. - Remove use of "-p" with ld, where this flag has been a no-op since 2004. - Remove the printing of the virtual memory layout, which is no longer useful since we hide pointers. - Correct SCU help text. - Remove legacy TWD registration method. - Add pgprot_device() implementation for mapping PCI sysfs resource files. - Initialise PFN limits earlier for kmemleak. - Fix argument count to match macro definition (affects clang builds) - Use unified assembler language almost everywhere for clang, and other clang improvements (from Stefan Agner, Nathan Chancellor). - Support security extension for noMMU and other noMMU cleanups (from Vladimir Murzin). - Remove unnecessary SMP bringup code (which was incorrectly copy'n' pasted from the ARM platform implementations) and remove it from the arch code to discourge further copys of it appearing. - Add Cortex A9 erratum preventing kexec working on some SoCs. - AMBA bus identification updates from Mike Leach. - More use of raw spinlocks to avoid -RT kernel issues (from Yang Shi and Sebastian Andrzej Siewior). - MCPM hyp/svc mode mismatch fixes from Marek Szyprowski. * tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm: (32 commits) ARM: 8849/1: NOMMU: Fix encodings for PMSAv8's PRBAR4/PRLAR4 ARM: 8848/1: virt: Align GIC version check with arm64 counterpart ARM: 8847/1: pm: fix HYP/SVC mode mismatch when MCPM is used ARM: 8845/1: use unified assembler in c files ARM: 8844/1: use unified assembler in assembly files ARM: 8843/1: use unified assembler in headers ARM: 8841/1: use unified assembler in macros ARM: 8840/1: use a raw_spinlock_t in unwind ARM: 8839/1: kprobe: make patch_lock a raw_spinlock_t ARM: 8837/1: coresight: etmv4: Update ID register table to add UCI support ARM: 8836/1: drivers: amba: Update component matching to use the CoreSight UCI values. ARM: 8838/1: drivers: amba: Updates to component identification for driver matching. ARM: 8833/1: Ensure that NEON code always compiles with Clang ARM: avoid Cortex-A9 livelock on tight dmb loops ARM: smp: remove arch-provided "pen_release" ARM: actions: remove boot_lock and pen_release ARM: oxnas: remove CPU hotplug implementation ARM: qcom: remove unnecessary boot_lock ARM: 8832/1: NOMMU: Limit visibility for CONFIG_FLASH_{MEM_BASE,SIZE} ARM: 8831/1: NOMMU: pmsa-v8: remove unneeded semicolon ...
This commit is contained in:
@@ -871,7 +871,7 @@ static int etm_probe(struct amba_device *adev, const struct amba_id *id)
|
||||
}
|
||||
|
||||
pm_runtime_put(&adev->dev);
|
||||
dev_info(dev, "%s initialized\n", (char *)id->data);
|
||||
dev_info(dev, "%s initialized\n", (char *)coresight_get_uci_data(id));
|
||||
if (boot_enable) {
|
||||
coresight_enable(drvdata->csdev);
|
||||
drvdata->boot_enable = true;
|
||||
@@ -915,36 +915,18 @@ static const struct dev_pm_ops etm_dev_pm_ops = {
|
||||
};
|
||||
|
||||
static const struct amba_id etm_ids[] = {
|
||||
{ /* ETM 3.3 */
|
||||
.id = 0x000bb921,
|
||||
.mask = 0x000fffff,
|
||||
.data = "ETM 3.3",
|
||||
},
|
||||
{ /* ETM 3.5 - Cortex-A5 */
|
||||
.id = 0x000bb955,
|
||||
.mask = 0x000fffff,
|
||||
.data = "ETM 3.5",
|
||||
},
|
||||
{ /* ETM 3.5 */
|
||||
.id = 0x000bb956,
|
||||
.mask = 0x000fffff,
|
||||
.data = "ETM 3.5",
|
||||
},
|
||||
{ /* PTM 1.0 */
|
||||
.id = 0x000bb950,
|
||||
.mask = 0x000fffff,
|
||||
.data = "PTM 1.0",
|
||||
},
|
||||
{ /* PTM 1.1 */
|
||||
.id = 0x000bb95f,
|
||||
.mask = 0x000fffff,
|
||||
.data = "PTM 1.1",
|
||||
},
|
||||
{ /* PTM 1.1 Qualcomm */
|
||||
.id = 0x000b006f,
|
||||
.mask = 0x000fffff,
|
||||
.data = "PTM 1.1",
|
||||
},
|
||||
/* ETM 3.3 */
|
||||
CS_AMBA_ID_DATA(0x000bb921, "ETM 3.3"),
|
||||
/* ETM 3.5 - Cortex-A5 */
|
||||
CS_AMBA_ID_DATA(0x000bb955, "ETM 3.5"),
|
||||
/* ETM 3.5 */
|
||||
CS_AMBA_ID_DATA(0x000bb956, "ETM 3.5"),
|
||||
/* PTM 1.0 */
|
||||
CS_AMBA_ID_DATA(0x000bb950, "PTM 1.0"),
|
||||
/* PTM 1.1 */
|
||||
CS_AMBA_ID_DATA(0x000bb95f, "PTM 1.1"),
|
||||
/* PTM 1.1 Qualcomm */
|
||||
CS_AMBA_ID_DATA(0x000b006f, "PTM 1.1"),
|
||||
{ 0, 0},
|
||||
};
|
||||
|
||||
|
@@ -1068,18 +1068,21 @@ err_arch_supported:
|
||||
return ret;
|
||||
}
|
||||
|
||||
#define ETM4x_AMBA_ID(pid) \
|
||||
{ \
|
||||
.id = pid, \
|
||||
.mask = 0x000fffff, \
|
||||
static struct amba_cs_uci_id uci_id_etm4[] = {
|
||||
{
|
||||
/* ETMv4 UCI data */
|
||||
.devarch = 0x47704a13,
|
||||
.devarch_mask = 0xfff0ffff,
|
||||
.devtype = 0x00000013,
|
||||
}
|
||||
};
|
||||
|
||||
static const struct amba_id etm4_ids[] = {
|
||||
ETM4x_AMBA_ID(0x000bb95d), /* Cortex-A53 */
|
||||
ETM4x_AMBA_ID(0x000bb95e), /* Cortex-A57 */
|
||||
ETM4x_AMBA_ID(0x000bb95a), /* Cortex-A72 */
|
||||
ETM4x_AMBA_ID(0x000bb959), /* Cortex-A73 */
|
||||
ETM4x_AMBA_ID(0x000bb9da), /* Cortex-A35 */
|
||||
CS_AMBA_ID(0x000bb95d), /* Cortex-A53 */
|
||||
CS_AMBA_ID(0x000bb95e), /* Cortex-A57 */
|
||||
CS_AMBA_ID(0x000bb95a), /* Cortex-A72 */
|
||||
CS_AMBA_ID(0x000bb959), /* Cortex-A73 */
|
||||
CS_AMBA_UCI_ID(0x000bb9da, uci_id_etm4), /* Cortex-A35 */
|
||||
{},
|
||||
};
|
||||
|
||||
|
@@ -6,6 +6,7 @@
|
||||
#ifndef _CORESIGHT_PRIV_H
|
||||
#define _CORESIGHT_PRIV_H
|
||||
|
||||
#include <linux/amba/bus.h>
|
||||
#include <linux/bitops.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/coresight.h>
|
||||
@@ -160,4 +161,43 @@ static inline int etm_readl_cp14(u32 off, unsigned int *val) { return 0; }
|
||||
static inline int etm_writel_cp14(u32 off, u32 val) { return 0; }
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Macros and inline functions to handle CoreSight UCI data and driver
|
||||
* private data in AMBA ID table entries, and extract data values.
|
||||
*/
|
||||
|
||||
/* coresight AMBA ID, no UCI, no driver data: id table entry */
|
||||
#define CS_AMBA_ID(pid) \
|
||||
{ \
|
||||
.id = pid, \
|
||||
.mask = 0x000fffff, \
|
||||
}
|
||||
|
||||
/* coresight AMBA ID, UCI with driver data only: id table entry. */
|
||||
#define CS_AMBA_ID_DATA(pid, dval) \
|
||||
{ \
|
||||
.id = pid, \
|
||||
.mask = 0x000fffff, \
|
||||
.data = (void *)&(struct amba_cs_uci_id) \
|
||||
{ \
|
||||
.data = (void *)dval, \
|
||||
} \
|
||||
}
|
||||
|
||||
/* coresight AMBA ID, full UCI structure: id table entry. */
|
||||
#define CS_AMBA_UCI_ID(pid, uci_ptr) \
|
||||
{ \
|
||||
.id = pid, \
|
||||
.mask = 0x000fffff, \
|
||||
.data = uci_ptr \
|
||||
}
|
||||
|
||||
/* extract the data value from a UCI structure given amba_id pointer. */
|
||||
static inline void *coresight_get_uci_data(const struct amba_id *id)
|
||||
{
|
||||
if (id->data)
|
||||
return ((struct amba_cs_uci_id *)(id->data))->data;
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@@ -870,7 +870,7 @@ static int stm_probe(struct amba_device *adev, const struct amba_id *id)
|
||||
|
||||
pm_runtime_put(&adev->dev);
|
||||
|
||||
dev_info(dev, "%s initialized\n", (char *)id->data);
|
||||
dev_info(dev, "%s initialized\n", (char *)coresight_get_uci_data(id));
|
||||
return 0;
|
||||
|
||||
stm_unregister:
|
||||
@@ -905,16 +905,8 @@ static const struct dev_pm_ops stm_dev_pm_ops = {
|
||||
};
|
||||
|
||||
static const struct amba_id stm_ids[] = {
|
||||
{
|
||||
.id = 0x000bb962,
|
||||
.mask = 0x000fffff,
|
||||
.data = "STM32",
|
||||
},
|
||||
{
|
||||
.id = 0x000bb963,
|
||||
.mask = 0x000fffff,
|
||||
.data = "STM500",
|
||||
},
|
||||
CS_AMBA_ID_DATA(0x000bb962, "STM32"),
|
||||
CS_AMBA_ID_DATA(0x000bb963, "STM500"),
|
||||
{ 0, 0},
|
||||
};
|
||||
|
||||
|
@@ -443,7 +443,8 @@ static int tmc_probe(struct amba_device *adev, const struct amba_id *id)
|
||||
desc.type = CORESIGHT_DEV_TYPE_SINK;
|
||||
desc.subtype.sink_subtype = CORESIGHT_DEV_SUBTYPE_SINK_BUFFER;
|
||||
desc.ops = &tmc_etr_cs_ops;
|
||||
ret = tmc_etr_setup_caps(drvdata, devid, id->data);
|
||||
ret = tmc_etr_setup_caps(drvdata, devid,
|
||||
coresight_get_uci_data(id));
|
||||
if (ret)
|
||||
goto out;
|
||||
break;
|
||||
@@ -475,26 +476,13 @@ out:
|
||||
}
|
||||
|
||||
static const struct amba_id tmc_ids[] = {
|
||||
{
|
||||
.id = 0x000bb961,
|
||||
.mask = 0x000fffff,
|
||||
},
|
||||
{
|
||||
/* Coresight SoC 600 TMC-ETR/ETS */
|
||||
.id = 0x000bb9e8,
|
||||
.mask = 0x000fffff,
|
||||
.data = (void *)(unsigned long)CORESIGHT_SOC_600_ETR_CAPS,
|
||||
},
|
||||
{
|
||||
/* Coresight SoC 600 TMC-ETB */
|
||||
.id = 0x000bb9e9,
|
||||
.mask = 0x000fffff,
|
||||
},
|
||||
{
|
||||
/* Coresight SoC 600 TMC-ETF */
|
||||
.id = 0x000bb9ea,
|
||||
.mask = 0x000fffff,
|
||||
},
|
||||
CS_AMBA_ID(0x000bb961),
|
||||
/* Coresight SoC 600 TMC-ETR/ETS */
|
||||
CS_AMBA_ID_DATA(0x000bb9e8, (unsigned long)CORESIGHT_SOC_600_ETR_CAPS),
|
||||
/* Coresight SoC 600 TMC-ETB */
|
||||
CS_AMBA_ID(0x000bb9e9),
|
||||
/* Coresight SoC 600 TMC-ETF */
|
||||
CS_AMBA_ID(0x000bb9ea),
|
||||
{ 0, 0},
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user