Loading drivers/coresight/coresight-nidnt.c +21 −4 Original line number Diff line number Diff line Loading @@ -35,8 +35,8 @@ #define nidnt_readl(drvdata, off) __raw_readl(drvdata->base + off) #define NIDNT_MAX_PINS 6 #define NIDNT_BOOT_FROM_SD 0 #define NIDNT_SDCARD_ONLY 1 #define NIDNT_BOOT_FROM_SD BIT(0) #define NIDNT_SDCARD_ONLY BIT(1) #define NIDNT_CARD_DETECT_GPIO_POLARITY BIT(8) #define NIDNT_CARD_DETECT_GPIO_SHIFT 0 #define NIDNT_DEBOUNCE_MASK 0xfffff000UL Loading Loading @@ -315,9 +315,9 @@ static bool coresight_nidnt_is_boot_from_sd(struct nidnt_drvdata *nidnt_drvdata) pr_info("nidnt boot config: %x\n", (unsigned int)nidnt_boot_config); if (BVAL(nidnt_boot_config, NIDNT_BOOT_FROM_SD)) if (nidnt_boot_config & NIDNT_BOOT_FROM_SD) ret = true; else if (BVAL(nidnt_boot_config, NIDNT_SDCARD_ONLY)) else if (nidnt_boot_config & NIDNT_SDCARD_ONLY) ret = true; else ret = false; Loading @@ -328,6 +328,23 @@ static bool coresight_nidnt_is_boot_from_sd(struct nidnt_drvdata *nidnt_drvdata) return ret; } int coresight_nidnt_config_qdsd_enable(bool enable) { unsigned long val; if (!nidnt_drvdata) return -EINVAL; val = nidnt_readl(nidnt_drvdata, TLMM_QDSD_BOOT_CTL); if (enable) val &= ~NIDNT_SDCARD_ONLY; else val |= NIDNT_SDCARD_ONLY; nidnt_writel(nidnt_drvdata, val, TLMM_QDSD_BOOT_CTL); return 0; } static int coresight_nidnt_parse_pinctrl_info(struct device *dev, struct nidnt_drvdata * nidnt_drvdata) Loading drivers/coresight/coresight-nidnt.h +6 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ extern void coresight_nidnt_writel(unsigned int val, unsigned int off); extern int coresight_nidnt_config_swoverride(enum nidnt_debug_mode mode); extern int coresight_nidnt_config_qdsd_enable(bool enable); extern void coresight_nidnt_set_hwdetect_param(bool val); extern ssize_t coresight_nidnt_show_timeout_value(struct device *dev, Loading Loading @@ -57,6 +58,11 @@ static inline int coresight_nidnt_config_swoverride(enum nidnt_debug_mode mode) return -ENOSYS; } static inline int coresight_nidnt_config_qdsd_enable(bool enable) { return -ENOSYS; } static inline void coresight_nidnt_set_hwdetect_param(bool val) {} static inline ssize_t coresight_nidnt_show_timeout_value(struct device *dev, Loading drivers/coresight/coresight-tpiu.c +48 −10 Original line number Diff line number Diff line Loading @@ -314,6 +314,9 @@ static int __tpiu_enable_to_sdc_trace(struct tpiu_drvdata *drvdata) __tpiu_enable(drvdata, 0x8, 0x103); if (drvdata->nidnthw) { ret = coresight_nidnt_config_qdsd_enable(true); if (ret) goto err; ret = coresight_nidnt_config_swoverride(NIDNT_MODE_SDC_TRACE); if (ret) goto err; Loading Loading @@ -352,6 +355,10 @@ static int __tpiu_enable_to_sdc_swduart(struct tpiu_drvdata *drvdata) __tpiu_enable(drvdata, 0x8, 0x103); if (drvdata->nidnthw) { ret = coresight_nidnt_config_qdsd_enable(true); if (ret) goto err1; ret = coresight_nidnt_config_swoverride(NIDNT_MODE_SDC_SWDUART); if (ret) goto err1; Loading Loading @@ -394,6 +401,10 @@ static int __tpiu_enable_to_sdc_swdtrc(struct tpiu_drvdata *drvdata) __tpiu_enable(drvdata, 0x2, 0x103); if (drvdata->nidnthw) { ret = coresight_nidnt_config_qdsd_enable(true); if (ret) goto err1; ret = coresight_nidnt_config_swoverride(NIDNT_MODE_SDC_SWDTRC); if (ret) goto err1; Loading @@ -420,8 +431,16 @@ static int __tpiu_enable_to_sdc_jtag(struct tpiu_drvdata *drvdata) if (ret) return ret; ret = coresight_nidnt_config_qdsd_enable(true); if (ret) goto err; ret = coresight_nidnt_config_swoverride(NIDNT_MODE_SDC_JTAG); if (ret) goto err; return 0; err: __tpiu_disable_to_sdc(drvdata); return ret; } Loading @@ -434,8 +453,16 @@ static int __tpiu_enable_to_sdc_spmi(struct tpiu_drvdata *drvdata) if (ret) return ret; ret = coresight_nidnt_config_qdsd_enable(true); if (ret) goto err; ret = coresight_nidnt_config_swoverride(NIDNT_MODE_SDC_SPMI); if (ret) goto err; return 0; err: __tpiu_disable_to_sdc(drvdata); return ret; } Loading Loading @@ -989,7 +1016,8 @@ static int tpiu_parse_of_data(struct platform_device *pdev, if (ret) return ret; if (drvdata->nidnthw && nidnt_boot_hw_detect) { if (drvdata->nidnthw) { if (nidnt_boot_hw_detect) { ret = __tpiu_enable_to_sdc(drvdata); if (ret) return ret; Loading @@ -997,6 +1025,16 @@ static int tpiu_parse_of_data(struct platform_device *pdev, /* enable and configure nidnt hardware detect */ coresight_nidnt_set_hwdetect_param(true); coresight_nidnt_enable_hwdetect(); dev_info(dev, "NIDnT run-time PS enabled\n"); } else { /* if hardware detect is disabled, disable QDSD */ ret = coresight_nidnt_config_qdsd_enable(false); if (ret) { dev_err(drvdata->dev, "failed to disable QDSD\n"); return ret; } dev_info(dev, "NIDnT on SDCARD only mode\n"); } } return 0; } Loading Loading
drivers/coresight/coresight-nidnt.c +21 −4 Original line number Diff line number Diff line Loading @@ -35,8 +35,8 @@ #define nidnt_readl(drvdata, off) __raw_readl(drvdata->base + off) #define NIDNT_MAX_PINS 6 #define NIDNT_BOOT_FROM_SD 0 #define NIDNT_SDCARD_ONLY 1 #define NIDNT_BOOT_FROM_SD BIT(0) #define NIDNT_SDCARD_ONLY BIT(1) #define NIDNT_CARD_DETECT_GPIO_POLARITY BIT(8) #define NIDNT_CARD_DETECT_GPIO_SHIFT 0 #define NIDNT_DEBOUNCE_MASK 0xfffff000UL Loading Loading @@ -315,9 +315,9 @@ static bool coresight_nidnt_is_boot_from_sd(struct nidnt_drvdata *nidnt_drvdata) pr_info("nidnt boot config: %x\n", (unsigned int)nidnt_boot_config); if (BVAL(nidnt_boot_config, NIDNT_BOOT_FROM_SD)) if (nidnt_boot_config & NIDNT_BOOT_FROM_SD) ret = true; else if (BVAL(nidnt_boot_config, NIDNT_SDCARD_ONLY)) else if (nidnt_boot_config & NIDNT_SDCARD_ONLY) ret = true; else ret = false; Loading @@ -328,6 +328,23 @@ static bool coresight_nidnt_is_boot_from_sd(struct nidnt_drvdata *nidnt_drvdata) return ret; } int coresight_nidnt_config_qdsd_enable(bool enable) { unsigned long val; if (!nidnt_drvdata) return -EINVAL; val = nidnt_readl(nidnt_drvdata, TLMM_QDSD_BOOT_CTL); if (enable) val &= ~NIDNT_SDCARD_ONLY; else val |= NIDNT_SDCARD_ONLY; nidnt_writel(nidnt_drvdata, val, TLMM_QDSD_BOOT_CTL); return 0; } static int coresight_nidnt_parse_pinctrl_info(struct device *dev, struct nidnt_drvdata * nidnt_drvdata) Loading
drivers/coresight/coresight-nidnt.h +6 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ extern void coresight_nidnt_writel(unsigned int val, unsigned int off); extern int coresight_nidnt_config_swoverride(enum nidnt_debug_mode mode); extern int coresight_nidnt_config_qdsd_enable(bool enable); extern void coresight_nidnt_set_hwdetect_param(bool val); extern ssize_t coresight_nidnt_show_timeout_value(struct device *dev, Loading Loading @@ -57,6 +58,11 @@ static inline int coresight_nidnt_config_swoverride(enum nidnt_debug_mode mode) return -ENOSYS; } static inline int coresight_nidnt_config_qdsd_enable(bool enable) { return -ENOSYS; } static inline void coresight_nidnt_set_hwdetect_param(bool val) {} static inline ssize_t coresight_nidnt_show_timeout_value(struct device *dev, Loading
drivers/coresight/coresight-tpiu.c +48 −10 Original line number Diff line number Diff line Loading @@ -314,6 +314,9 @@ static int __tpiu_enable_to_sdc_trace(struct tpiu_drvdata *drvdata) __tpiu_enable(drvdata, 0x8, 0x103); if (drvdata->nidnthw) { ret = coresight_nidnt_config_qdsd_enable(true); if (ret) goto err; ret = coresight_nidnt_config_swoverride(NIDNT_MODE_SDC_TRACE); if (ret) goto err; Loading Loading @@ -352,6 +355,10 @@ static int __tpiu_enable_to_sdc_swduart(struct tpiu_drvdata *drvdata) __tpiu_enable(drvdata, 0x8, 0x103); if (drvdata->nidnthw) { ret = coresight_nidnt_config_qdsd_enable(true); if (ret) goto err1; ret = coresight_nidnt_config_swoverride(NIDNT_MODE_SDC_SWDUART); if (ret) goto err1; Loading Loading @@ -394,6 +401,10 @@ static int __tpiu_enable_to_sdc_swdtrc(struct tpiu_drvdata *drvdata) __tpiu_enable(drvdata, 0x2, 0x103); if (drvdata->nidnthw) { ret = coresight_nidnt_config_qdsd_enable(true); if (ret) goto err1; ret = coresight_nidnt_config_swoverride(NIDNT_MODE_SDC_SWDTRC); if (ret) goto err1; Loading @@ -420,8 +431,16 @@ static int __tpiu_enable_to_sdc_jtag(struct tpiu_drvdata *drvdata) if (ret) return ret; ret = coresight_nidnt_config_qdsd_enable(true); if (ret) goto err; ret = coresight_nidnt_config_swoverride(NIDNT_MODE_SDC_JTAG); if (ret) goto err; return 0; err: __tpiu_disable_to_sdc(drvdata); return ret; } Loading @@ -434,8 +453,16 @@ static int __tpiu_enable_to_sdc_spmi(struct tpiu_drvdata *drvdata) if (ret) return ret; ret = coresight_nidnt_config_qdsd_enable(true); if (ret) goto err; ret = coresight_nidnt_config_swoverride(NIDNT_MODE_SDC_SPMI); if (ret) goto err; return 0; err: __tpiu_disable_to_sdc(drvdata); return ret; } Loading Loading @@ -989,7 +1016,8 @@ static int tpiu_parse_of_data(struct platform_device *pdev, if (ret) return ret; if (drvdata->nidnthw && nidnt_boot_hw_detect) { if (drvdata->nidnthw) { if (nidnt_boot_hw_detect) { ret = __tpiu_enable_to_sdc(drvdata); if (ret) return ret; Loading @@ -997,6 +1025,16 @@ static int tpiu_parse_of_data(struct platform_device *pdev, /* enable and configure nidnt hardware detect */ coresight_nidnt_set_hwdetect_param(true); coresight_nidnt_enable_hwdetect(); dev_info(dev, "NIDnT run-time PS enabled\n"); } else { /* if hardware detect is disabled, disable QDSD */ ret = coresight_nidnt_config_qdsd_enable(false); if (ret) { dev_err(drvdata->dev, "failed to disable QDSD\n"); return ret; } dev_info(dev, "NIDnT on SDCARD only mode\n"); } } return 0; } Loading