mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-11-28 01:52:08 +00:00
Char / Misc driver fixes for 5.9-rc5
Here are a number of small driver fixes for 5.9-rc5 Included in here are: - habanalabs driver fixes - interconnect driver fixes - soundwire driver fixes - dyndbg fixes for reported issues, and then reverts to fix it all up to a sane state. - phy driver fixes Full details of these are in the shortlog. All of these have been in linux-next for a while with no reported issues. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -----BEGIN PGP SIGNATURE----- iG0EABECAC0WIQT0tgzFv3jCIUoxPcsxR9QN2y37KQUCX13aLA8cZ3JlZ0Brcm9h aC5jb20ACgkQMUfUDdst+ymjJgCfZq1pnSupUtvLTimvaPwSaep/lJQAoIoGR0t/ co5MQO8ZGMBEavVtzE79 =vnmm -----END PGP SIGNATURE----- Merge tag 'char-misc-5.9-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc Pull char / misc driver fixes from Greg KH: "Here are a number of small driver fixes for 5.9-rc5 Included in here are: - habanalabs driver fixes - interconnect driver fixes - soundwire driver fixes - dyndbg fixes for reported issues, and then reverts to fix it all up to a sane state. - phy driver fixes All of these have been in linux-next for a while with no reported issues" * tag 'char-misc-5.9-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc: Revert "dyndbg: accept query terms like file=bar and module=foo" Revert "dyndbg: fix problem parsing format="foo bar"" scripts/tags.sh: exclude tools directory from tags generation video: fbdev: fix OOB read in vga_8planes_imageblit() dyndbg: fix problem parsing format="foo bar" dyndbg: refine export, rename to dynamic_debug_exec_queries() dyndbg: give %3u width in pr-format, cosmetic only interconnect: qcom: Fix small BW votes being truncated to zero soundwire: fix double free of dangling pointer interconnect: Show bandwidth for disabled paths as zero in debugfs habanalabs: fix report of RAZWI initiator coordinates habanalabs: prevent user buff overflow phy: omap-usb2-phy: disable PHY charger detect phy: qcom-qmp: Use correct values for ipq8074 PCIe Gen2 PHY init soundwire: bus: fix typo in comment on INTSTAT registers phy: qualcomm: fix return value check in qcom_ipq806x_usb_phy_probe() phy: qualcomm: fix platform_no_drv_owner.cocci warnings
This commit is contained in:
commit
2a1a4bee5e
@ -156,7 +156,6 @@ against. Possible keywords are:::
|
|||||||
``line-range`` cannot contain space, e.g.
|
``line-range`` cannot contain space, e.g.
|
||||||
"1-30" is valid range but "1 - 30" is not.
|
"1-30" is valid range but "1 - 30" is not.
|
||||||
|
|
||||||
``module=foo`` combined keyword=value form is interchangably accepted
|
|
||||||
|
|
||||||
The meanings of each keyword are:
|
The meanings of each keyword are:
|
||||||
|
|
||||||
|
@ -55,12 +55,18 @@ static int icc_summary_show(struct seq_file *s, void *data)
|
|||||||
|
|
||||||
icc_summary_show_one(s, n);
|
icc_summary_show_one(s, n);
|
||||||
hlist_for_each_entry(r, &n->req_list, req_node) {
|
hlist_for_each_entry(r, &n->req_list, req_node) {
|
||||||
|
u32 avg_bw = 0, peak_bw = 0;
|
||||||
|
|
||||||
if (!r->dev)
|
if (!r->dev)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
if (r->enabled) {
|
||||||
|
avg_bw = r->avg_bw;
|
||||||
|
peak_bw = r->peak_bw;
|
||||||
|
}
|
||||||
|
|
||||||
seq_printf(s, " %-27s %12u %12u %12u\n",
|
seq_printf(s, " %-27s %12u %12u %12u\n",
|
||||||
dev_name(r->dev), r->tag, r->avg_bw,
|
dev_name(r->dev), r->tag, avg_bw, peak_bw);
|
||||||
r->peak_bw);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,8 +52,20 @@ static int cmp_vcd(void *priv, struct list_head *a, struct list_head *b)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static u64 bcm_div(u64 num, u32 base)
|
||||||
|
{
|
||||||
|
/* Ensure that small votes aren't lost. */
|
||||||
|
if (num && num < base)
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
do_div(num, base);
|
||||||
|
|
||||||
|
return num;
|
||||||
|
}
|
||||||
|
|
||||||
static void bcm_aggregate(struct qcom_icc_bcm *bcm)
|
static void bcm_aggregate(struct qcom_icc_bcm *bcm)
|
||||||
{
|
{
|
||||||
|
struct qcom_icc_node *node;
|
||||||
size_t i, bucket;
|
size_t i, bucket;
|
||||||
u64 agg_avg[QCOM_ICC_NUM_BUCKETS] = {0};
|
u64 agg_avg[QCOM_ICC_NUM_BUCKETS] = {0};
|
||||||
u64 agg_peak[QCOM_ICC_NUM_BUCKETS] = {0};
|
u64 agg_peak[QCOM_ICC_NUM_BUCKETS] = {0};
|
||||||
@ -61,22 +73,21 @@ static void bcm_aggregate(struct qcom_icc_bcm *bcm)
|
|||||||
|
|
||||||
for (bucket = 0; bucket < QCOM_ICC_NUM_BUCKETS; bucket++) {
|
for (bucket = 0; bucket < QCOM_ICC_NUM_BUCKETS; bucket++) {
|
||||||
for (i = 0; i < bcm->num_nodes; i++) {
|
for (i = 0; i < bcm->num_nodes; i++) {
|
||||||
temp = bcm->nodes[i]->sum_avg[bucket] * bcm->aux_data.width;
|
node = bcm->nodes[i];
|
||||||
do_div(temp, bcm->nodes[i]->buswidth * bcm->nodes[i]->channels);
|
temp = bcm_div(node->sum_avg[bucket] * bcm->aux_data.width,
|
||||||
|
node->buswidth * node->channels);
|
||||||
agg_avg[bucket] = max(agg_avg[bucket], temp);
|
agg_avg[bucket] = max(agg_avg[bucket], temp);
|
||||||
|
|
||||||
temp = bcm->nodes[i]->max_peak[bucket] * bcm->aux_data.width;
|
temp = bcm_div(node->max_peak[bucket] * bcm->aux_data.width,
|
||||||
do_div(temp, bcm->nodes[i]->buswidth);
|
node->buswidth);
|
||||||
agg_peak[bucket] = max(agg_peak[bucket], temp);
|
agg_peak[bucket] = max(agg_peak[bucket], temp);
|
||||||
}
|
}
|
||||||
|
|
||||||
temp = agg_avg[bucket] * 1000ULL;
|
temp = agg_avg[bucket] * 1000ULL;
|
||||||
do_div(temp, bcm->aux_data.unit);
|
bcm->vote_x[bucket] = bcm_div(temp, bcm->aux_data.unit);
|
||||||
bcm->vote_x[bucket] = temp;
|
|
||||||
|
|
||||||
temp = agg_peak[bucket] * 1000ULL;
|
temp = agg_peak[bucket] * 1000ULL;
|
||||||
do_div(temp, bcm->aux_data.unit);
|
bcm->vote_y[bucket] = bcm_div(temp, bcm->aux_data.unit);
|
||||||
bcm->vote_y[bucket] = temp;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bcm->keepalive && bcm->vote_x[QCOM_ICC_BUCKET_AMC] == 0 &&
|
if (bcm->keepalive && bcm->vote_x[QCOM_ICC_BUCKET_AMC] == 0 &&
|
||||||
|
@ -982,7 +982,7 @@ static ssize_t hl_clk_gate_read(struct file *f, char __user *buf,
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
sprintf(tmp_buf, "0x%llx\n", hdev->clock_gating_mask);
|
sprintf(tmp_buf, "0x%llx\n", hdev->clock_gating_mask);
|
||||||
rc = simple_read_from_buffer(buf, strlen(tmp_buf) + 1, ppos, tmp_buf,
|
rc = simple_read_from_buffer(buf, count, ppos, tmp_buf,
|
||||||
strlen(tmp_buf) + 1);
|
strlen(tmp_buf) + 1);
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
|
@ -378,15 +378,15 @@ enum axi_id {
|
|||||||
((((y) & RAZWI_INITIATOR_Y_MASK) << RAZWI_INITIATOR_Y_SHIFT) | \
|
((((y) & RAZWI_INITIATOR_Y_MASK) << RAZWI_INITIATOR_Y_SHIFT) | \
|
||||||
(((x) & RAZWI_INITIATOR_X_MASK) << RAZWI_INITIATOR_X_SHIFT))
|
(((x) & RAZWI_INITIATOR_X_MASK) << RAZWI_INITIATOR_X_SHIFT))
|
||||||
|
|
||||||
#define RAZWI_INITIATOR_ID_X_Y_TPC0_NIC0 RAZWI_INITIATOR_ID_X_Y(1, 0)
|
#define RAZWI_INITIATOR_ID_X_Y_TPC0_NIC0 RAZWI_INITIATOR_ID_X_Y(1, 1)
|
||||||
#define RAZWI_INITIATOR_ID_X_Y_TPC1 RAZWI_INITIATOR_ID_X_Y(2, 0)
|
#define RAZWI_INITIATOR_ID_X_Y_TPC1 RAZWI_INITIATOR_ID_X_Y(2, 1)
|
||||||
#define RAZWI_INITIATOR_ID_X_Y_MME0_0 RAZWI_INITIATOR_ID_X_Y(3, 0)
|
#define RAZWI_INITIATOR_ID_X_Y_MME0_0 RAZWI_INITIATOR_ID_X_Y(3, 1)
|
||||||
#define RAZWI_INITIATOR_ID_X_Y_MME0_1 RAZWI_INITIATOR_ID_X_Y(4, 0)
|
#define RAZWI_INITIATOR_ID_X_Y_MME0_1 RAZWI_INITIATOR_ID_X_Y(4, 1)
|
||||||
#define RAZWI_INITIATOR_ID_X_Y_MME1_0 RAZWI_INITIATOR_ID_X_Y(5, 0)
|
#define RAZWI_INITIATOR_ID_X_Y_MME1_0 RAZWI_INITIATOR_ID_X_Y(5, 1)
|
||||||
#define RAZWI_INITIATOR_ID_X_Y_MME1_1 RAZWI_INITIATOR_ID_X_Y(6, 0)
|
#define RAZWI_INITIATOR_ID_X_Y_MME1_1 RAZWI_INITIATOR_ID_X_Y(6, 1)
|
||||||
#define RAZWI_INITIATOR_ID_X_Y_TPC2 RAZWI_INITIATOR_ID_X_Y(7, 0)
|
#define RAZWI_INITIATOR_ID_X_Y_TPC2 RAZWI_INITIATOR_ID_X_Y(7, 1)
|
||||||
#define RAZWI_INITIATOR_ID_X_Y_TPC3_PCI_CPU_PSOC \
|
#define RAZWI_INITIATOR_ID_X_Y_TPC3_PCI_CPU_PSOC \
|
||||||
RAZWI_INITIATOR_ID_X_Y(8, 0)
|
RAZWI_INITIATOR_ID_X_Y(8, 1)
|
||||||
#define RAZWI_INITIATOR_ID_X_Y_DMA_IF_W_S_0 RAZWI_INITIATOR_ID_X_Y(0, 1)
|
#define RAZWI_INITIATOR_ID_X_Y_DMA_IF_W_S_0 RAZWI_INITIATOR_ID_X_Y(0, 1)
|
||||||
#define RAZWI_INITIATOR_ID_X_Y_DMA_IF_E_S_0 RAZWI_INITIATOR_ID_X_Y(9, 1)
|
#define RAZWI_INITIATOR_ID_X_Y_DMA_IF_E_S_0 RAZWI_INITIATOR_ID_X_Y(9, 1)
|
||||||
#define RAZWI_INITIATOR_ID_X_Y_DMA_IF_W_S_1 RAZWI_INITIATOR_ID_X_Y(0, 2)
|
#define RAZWI_INITIATOR_ID_X_Y_DMA_IF_W_S_1 RAZWI_INITIATOR_ID_X_Y(0, 2)
|
||||||
@ -395,14 +395,14 @@ enum axi_id {
|
|||||||
#define RAZWI_INITIATOR_ID_X_Y_DMA_IF_E_N_0 RAZWI_INITIATOR_ID_X_Y(9, 3)
|
#define RAZWI_INITIATOR_ID_X_Y_DMA_IF_E_N_0 RAZWI_INITIATOR_ID_X_Y(9, 3)
|
||||||
#define RAZWI_INITIATOR_ID_X_Y_DMA_IF_W_N_1 RAZWI_INITIATOR_ID_X_Y(0, 4)
|
#define RAZWI_INITIATOR_ID_X_Y_DMA_IF_W_N_1 RAZWI_INITIATOR_ID_X_Y(0, 4)
|
||||||
#define RAZWI_INITIATOR_ID_X_Y_DMA_IF_E_N_1 RAZWI_INITIATOR_ID_X_Y(9, 4)
|
#define RAZWI_INITIATOR_ID_X_Y_DMA_IF_E_N_1 RAZWI_INITIATOR_ID_X_Y(9, 4)
|
||||||
#define RAZWI_INITIATOR_ID_X_Y_TPC4_NIC1_NIC2 RAZWI_INITIATOR_ID_X_Y(1, 5)
|
#define RAZWI_INITIATOR_ID_X_Y_TPC4_NIC1_NIC2 RAZWI_INITIATOR_ID_X_Y(1, 6)
|
||||||
#define RAZWI_INITIATOR_ID_X_Y_TPC5 RAZWI_INITIATOR_ID_X_Y(2, 5)
|
#define RAZWI_INITIATOR_ID_X_Y_TPC5 RAZWI_INITIATOR_ID_X_Y(2, 6)
|
||||||
#define RAZWI_INITIATOR_ID_X_Y_MME2_0 RAZWI_INITIATOR_ID_X_Y(3, 5)
|
#define RAZWI_INITIATOR_ID_X_Y_MME2_0 RAZWI_INITIATOR_ID_X_Y(3, 6)
|
||||||
#define RAZWI_INITIATOR_ID_X_Y_MME2_1 RAZWI_INITIATOR_ID_X_Y(4, 5)
|
#define RAZWI_INITIATOR_ID_X_Y_MME2_1 RAZWI_INITIATOR_ID_X_Y(4, 6)
|
||||||
#define RAZWI_INITIATOR_ID_X_Y_MME3_0 RAZWI_INITIATOR_ID_X_Y(5, 5)
|
#define RAZWI_INITIATOR_ID_X_Y_MME3_0 RAZWI_INITIATOR_ID_X_Y(5, 6)
|
||||||
#define RAZWI_INITIATOR_ID_X_Y_MME3_1 RAZWI_INITIATOR_ID_X_Y(6, 5)
|
#define RAZWI_INITIATOR_ID_X_Y_MME3_1 RAZWI_INITIATOR_ID_X_Y(6, 6)
|
||||||
#define RAZWI_INITIATOR_ID_X_Y_TPC6 RAZWI_INITIATOR_ID_X_Y(7, 5)
|
#define RAZWI_INITIATOR_ID_X_Y_TPC6 RAZWI_INITIATOR_ID_X_Y(7, 6)
|
||||||
#define RAZWI_INITIATOR_ID_X_Y_TPC7_NIC4_NIC5 RAZWI_INITIATOR_ID_X_Y(8, 5)
|
#define RAZWI_INITIATOR_ID_X_Y_TPC7_NIC4_NIC5 RAZWI_INITIATOR_ID_X_Y(8, 6)
|
||||||
|
|
||||||
#define PSOC_ETR_AXICTL_PROTCTRLBIT1_SHIFT 1
|
#define PSOC_ETR_AXICTL_PROTCTRLBIT1_SHIFT 1
|
||||||
|
|
||||||
|
@ -505,9 +505,9 @@ static int qcom_ipq806x_usb_phy_probe(struct platform_device *pdev)
|
|||||||
size = resource_size(res);
|
size = resource_size(res);
|
||||||
phy_dwc3->base = devm_ioremap(phy_dwc3->dev, res->start, size);
|
phy_dwc3->base = devm_ioremap(phy_dwc3->dev, res->start, size);
|
||||||
|
|
||||||
if (IS_ERR(phy_dwc3->base)) {
|
if (!phy_dwc3->base) {
|
||||||
dev_err(phy_dwc3->dev, "failed to map reg\n");
|
dev_err(phy_dwc3->dev, "failed to map reg\n");
|
||||||
return PTR_ERR(phy_dwc3->base);
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
phy_dwc3->ref_clk = devm_clk_get(phy_dwc3->dev, "ref");
|
phy_dwc3->ref_clk = devm_clk_get(phy_dwc3->dev, "ref");
|
||||||
@ -557,7 +557,6 @@ static struct platform_driver qcom_ipq806x_usb_phy_driver = {
|
|||||||
.probe = qcom_ipq806x_usb_phy_probe,
|
.probe = qcom_ipq806x_usb_phy_probe,
|
||||||
.driver = {
|
.driver = {
|
||||||
.name = "qcom-ipq806x-usb-phy",
|
.name = "qcom-ipq806x-usb-phy",
|
||||||
.owner = THIS_MODULE,
|
|
||||||
.of_match_table = qcom_ipq806x_usb_phy_table,
|
.of_match_table = qcom_ipq806x_usb_phy_table,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
@ -604,8 +604,8 @@ static const struct qmp_phy_init_tbl ipq8074_pcie_serdes_tbl[] = {
|
|||||||
QMP_PHY_INIT_CFG(QSERDES_COM_BG_TRIM, 0xf),
|
QMP_PHY_INIT_CFG(QSERDES_COM_BG_TRIM, 0xf),
|
||||||
QMP_PHY_INIT_CFG(QSERDES_COM_LOCK_CMP_EN, 0x1),
|
QMP_PHY_INIT_CFG(QSERDES_COM_LOCK_CMP_EN, 0x1),
|
||||||
QMP_PHY_INIT_CFG(QSERDES_COM_VCO_TUNE_MAP, 0x0),
|
QMP_PHY_INIT_CFG(QSERDES_COM_VCO_TUNE_MAP, 0x0),
|
||||||
QMP_PHY_INIT_CFG(QSERDES_COM_VCO_TUNE_TIMER1, 0x1f),
|
QMP_PHY_INIT_CFG(QSERDES_COM_VCO_TUNE_TIMER1, 0xff),
|
||||||
QMP_PHY_INIT_CFG(QSERDES_COM_VCO_TUNE_TIMER2, 0x3f),
|
QMP_PHY_INIT_CFG(QSERDES_COM_VCO_TUNE_TIMER2, 0x1f),
|
||||||
QMP_PHY_INIT_CFG(QSERDES_COM_CMN_CONFIG, 0x6),
|
QMP_PHY_INIT_CFG(QSERDES_COM_CMN_CONFIG, 0x6),
|
||||||
QMP_PHY_INIT_CFG(QSERDES_COM_PLL_IVCO, 0xf),
|
QMP_PHY_INIT_CFG(QSERDES_COM_PLL_IVCO, 0xf),
|
||||||
QMP_PHY_INIT_CFG(QSERDES_COM_HSCLK_SEL, 0x0),
|
QMP_PHY_INIT_CFG(QSERDES_COM_HSCLK_SEL, 0x0),
|
||||||
@ -631,7 +631,6 @@ static const struct qmp_phy_init_tbl ipq8074_pcie_serdes_tbl[] = {
|
|||||||
QMP_PHY_INIT_CFG(QSERDES_COM_INTEGLOOP_GAIN1_MODE0, 0x0),
|
QMP_PHY_INIT_CFG(QSERDES_COM_INTEGLOOP_GAIN1_MODE0, 0x0),
|
||||||
QMP_PHY_INIT_CFG(QSERDES_COM_INTEGLOOP_GAIN0_MODE0, 0x80),
|
QMP_PHY_INIT_CFG(QSERDES_COM_INTEGLOOP_GAIN0_MODE0, 0x80),
|
||||||
QMP_PHY_INIT_CFG(QSERDES_COM_BIAS_EN_CTRL_BY_PSM, 0x1),
|
QMP_PHY_INIT_CFG(QSERDES_COM_BIAS_EN_CTRL_BY_PSM, 0x1),
|
||||||
QMP_PHY_INIT_CFG(QSERDES_COM_VCO_TUNE_CTRL, 0xa),
|
|
||||||
QMP_PHY_INIT_CFG(QSERDES_COM_SSC_EN_CENTER, 0x1),
|
QMP_PHY_INIT_CFG(QSERDES_COM_SSC_EN_CENTER, 0x1),
|
||||||
QMP_PHY_INIT_CFG(QSERDES_COM_SSC_PER1, 0x31),
|
QMP_PHY_INIT_CFG(QSERDES_COM_SSC_PER1, 0x31),
|
||||||
QMP_PHY_INIT_CFG(QSERDES_COM_SSC_PER2, 0x1),
|
QMP_PHY_INIT_CFG(QSERDES_COM_SSC_PER2, 0x1),
|
||||||
@ -640,7 +639,6 @@ static const struct qmp_phy_init_tbl ipq8074_pcie_serdes_tbl[] = {
|
|||||||
QMP_PHY_INIT_CFG(QSERDES_COM_SSC_STEP_SIZE1, 0x2f),
|
QMP_PHY_INIT_CFG(QSERDES_COM_SSC_STEP_SIZE1, 0x2f),
|
||||||
QMP_PHY_INIT_CFG(QSERDES_COM_SSC_STEP_SIZE2, 0x19),
|
QMP_PHY_INIT_CFG(QSERDES_COM_SSC_STEP_SIZE2, 0x19),
|
||||||
QMP_PHY_INIT_CFG(QSERDES_COM_CLK_EP_DIV, 0x19),
|
QMP_PHY_INIT_CFG(QSERDES_COM_CLK_EP_DIV, 0x19),
|
||||||
QMP_PHY_INIT_CFG(QSERDES_RX_SIGDET_CNTRL, 0x7),
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct qmp_phy_init_tbl ipq8074_pcie_tx_tbl[] = {
|
static const struct qmp_phy_init_tbl ipq8074_pcie_tx_tbl[] = {
|
||||||
@ -648,6 +646,8 @@ static const struct qmp_phy_init_tbl ipq8074_pcie_tx_tbl[] = {
|
|||||||
QMP_PHY_INIT_CFG(QSERDES_TX_LANE_MODE, 0x6),
|
QMP_PHY_INIT_CFG(QSERDES_TX_LANE_MODE, 0x6),
|
||||||
QMP_PHY_INIT_CFG(QSERDES_TX_RES_CODE_LANE_OFFSET, 0x2),
|
QMP_PHY_INIT_CFG(QSERDES_TX_RES_CODE_LANE_OFFSET, 0x2),
|
||||||
QMP_PHY_INIT_CFG(QSERDES_TX_RCV_DETECT_LVL_2, 0x12),
|
QMP_PHY_INIT_CFG(QSERDES_TX_RCV_DETECT_LVL_2, 0x12),
|
||||||
|
QMP_PHY_INIT_CFG(QSERDES_TX_EMP_POST1_LVL, 0x36),
|
||||||
|
QMP_PHY_INIT_CFG(QSERDES_TX_SLEW_CNTL, 0x0a),
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct qmp_phy_init_tbl ipq8074_pcie_rx_tbl[] = {
|
static const struct qmp_phy_init_tbl ipq8074_pcie_rx_tbl[] = {
|
||||||
@ -658,7 +658,6 @@ static const struct qmp_phy_init_tbl ipq8074_pcie_rx_tbl[] = {
|
|||||||
QMP_PHY_INIT_CFG(QSERDES_RX_RX_EQU_ADAPTOR_CNTRL4, 0xdb),
|
QMP_PHY_INIT_CFG(QSERDES_RX_RX_EQU_ADAPTOR_CNTRL4, 0xdb),
|
||||||
QMP_PHY_INIT_CFG(QSERDES_RX_UCDR_SO_SATURATION_AND_ENABLE, 0x4b),
|
QMP_PHY_INIT_CFG(QSERDES_RX_UCDR_SO_SATURATION_AND_ENABLE, 0x4b),
|
||||||
QMP_PHY_INIT_CFG(QSERDES_RX_UCDR_SO_GAIN, 0x4),
|
QMP_PHY_INIT_CFG(QSERDES_RX_UCDR_SO_GAIN, 0x4),
|
||||||
QMP_PHY_INIT_CFG(QSERDES_RX_UCDR_SO_GAIN_HALF, 0x4),
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct qmp_phy_init_tbl ipq8074_pcie_pcs_tbl[] = {
|
static const struct qmp_phy_init_tbl ipq8074_pcie_pcs_tbl[] = {
|
||||||
@ -2046,6 +2045,9 @@ static const struct qmp_phy_cfg msm8996_usb3phy_cfg = {
|
|||||||
.pwrdn_ctrl = SW_PWRDN,
|
.pwrdn_ctrl = SW_PWRDN,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const char * const ipq8074_pciephy_clk_l[] = {
|
||||||
|
"aux", "cfg_ahb",
|
||||||
|
};
|
||||||
/* list of resets */
|
/* list of resets */
|
||||||
static const char * const ipq8074_pciephy_reset_l[] = {
|
static const char * const ipq8074_pciephy_reset_l[] = {
|
||||||
"phy", "common",
|
"phy", "common",
|
||||||
@ -2063,8 +2065,8 @@ static const struct qmp_phy_cfg ipq8074_pciephy_cfg = {
|
|||||||
.rx_tbl_num = ARRAY_SIZE(ipq8074_pcie_rx_tbl),
|
.rx_tbl_num = ARRAY_SIZE(ipq8074_pcie_rx_tbl),
|
||||||
.pcs_tbl = ipq8074_pcie_pcs_tbl,
|
.pcs_tbl = ipq8074_pcie_pcs_tbl,
|
||||||
.pcs_tbl_num = ARRAY_SIZE(ipq8074_pcie_pcs_tbl),
|
.pcs_tbl_num = ARRAY_SIZE(ipq8074_pcie_pcs_tbl),
|
||||||
.clk_list = NULL,
|
.clk_list = ipq8074_pciephy_clk_l,
|
||||||
.num_clks = 0,
|
.num_clks = ARRAY_SIZE(ipq8074_pciephy_clk_l),
|
||||||
.reset_list = ipq8074_pciephy_reset_l,
|
.reset_list = ipq8074_pciephy_reset_l,
|
||||||
.num_resets = ARRAY_SIZE(ipq8074_pciephy_reset_l),
|
.num_resets = ARRAY_SIZE(ipq8074_pciephy_reset_l),
|
||||||
.vreg_list = NULL,
|
.vreg_list = NULL,
|
||||||
|
@ -77,6 +77,8 @@
|
|||||||
#define QSERDES_COM_CORECLK_DIV_MODE1 0x1bc
|
#define QSERDES_COM_CORECLK_DIV_MODE1 0x1bc
|
||||||
|
|
||||||
/* Only for QMP V2 PHY - TX registers */
|
/* Only for QMP V2 PHY - TX registers */
|
||||||
|
#define QSERDES_TX_EMP_POST1_LVL 0x018
|
||||||
|
#define QSERDES_TX_SLEW_CNTL 0x040
|
||||||
#define QSERDES_TX_RES_CODE_LANE_OFFSET 0x054
|
#define QSERDES_TX_RES_CODE_LANE_OFFSET 0x054
|
||||||
#define QSERDES_TX_DEBUG_BUS_SEL 0x064
|
#define QSERDES_TX_DEBUG_BUS_SEL 0x064
|
||||||
#define QSERDES_TX_HIGHZ_TRANSCEIVEREN_BIAS_DRVR_EN 0x068
|
#define QSERDES_TX_HIGHZ_TRANSCEIVEREN_BIAS_DRVR_EN 0x068
|
||||||
|
@ -22,10 +22,15 @@
|
|||||||
#include <linux/mfd/syscon.h>
|
#include <linux/mfd/syscon.h>
|
||||||
#include <linux/regmap.h>
|
#include <linux/regmap.h>
|
||||||
#include <linux/of_platform.h>
|
#include <linux/of_platform.h>
|
||||||
|
#include <linux/sys_soc.h>
|
||||||
|
|
||||||
#define USB2PHY_ANA_CONFIG1 0x4c
|
#define USB2PHY_ANA_CONFIG1 0x4c
|
||||||
#define USB2PHY_DISCON_BYP_LATCH BIT(31)
|
#define USB2PHY_DISCON_BYP_LATCH BIT(31)
|
||||||
|
|
||||||
|
#define USB2PHY_CHRG_DET 0x14
|
||||||
|
#define USB2PHY_CHRG_DET_USE_CHG_DET_REG BIT(29)
|
||||||
|
#define USB2PHY_CHRG_DET_DIS_CHG_DET BIT(28)
|
||||||
|
|
||||||
/* SoC Specific USB2_OTG register definitions */
|
/* SoC Specific USB2_OTG register definitions */
|
||||||
#define AM654_USB2_OTG_PD BIT(8)
|
#define AM654_USB2_OTG_PD BIT(8)
|
||||||
#define AM654_USB2_VBUS_DET_EN BIT(5)
|
#define AM654_USB2_VBUS_DET_EN BIT(5)
|
||||||
@ -43,6 +48,7 @@
|
|||||||
#define OMAP_USB2_HAS_START_SRP BIT(0)
|
#define OMAP_USB2_HAS_START_SRP BIT(0)
|
||||||
#define OMAP_USB2_HAS_SET_VBUS BIT(1)
|
#define OMAP_USB2_HAS_SET_VBUS BIT(1)
|
||||||
#define OMAP_USB2_CALIBRATE_FALSE_DISCONNECT BIT(2)
|
#define OMAP_USB2_CALIBRATE_FALSE_DISCONNECT BIT(2)
|
||||||
|
#define OMAP_USB2_DISABLE_CHRG_DET BIT(3)
|
||||||
|
|
||||||
struct omap_usb {
|
struct omap_usb {
|
||||||
struct usb_phy phy;
|
struct usb_phy phy;
|
||||||
@ -236,6 +242,13 @@ static int omap_usb_init(struct phy *x)
|
|||||||
omap_usb_writel(phy->phy_base, USB2PHY_ANA_CONFIG1, val);
|
omap_usb_writel(phy->phy_base, USB2PHY_ANA_CONFIG1, val);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (phy->flags & OMAP_USB2_DISABLE_CHRG_DET) {
|
||||||
|
val = omap_usb_readl(phy->phy_base, USB2PHY_CHRG_DET);
|
||||||
|
val |= USB2PHY_CHRG_DET_USE_CHG_DET_REG |
|
||||||
|
USB2PHY_CHRG_DET_DIS_CHG_DET;
|
||||||
|
omap_usb_writel(phy->phy_base, USB2PHY_CHRG_DET, val);
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -329,6 +342,26 @@ static const struct of_device_id omap_usb2_id_table[] = {
|
|||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(of, omap_usb2_id_table);
|
MODULE_DEVICE_TABLE(of, omap_usb2_id_table);
|
||||||
|
|
||||||
|
static void omap_usb2_init_errata(struct omap_usb *phy)
|
||||||
|
{
|
||||||
|
static const struct soc_device_attribute am65x_sr10_soc_devices[] = {
|
||||||
|
{ .family = "AM65X", .revision = "SR1.0" },
|
||||||
|
{ /* sentinel */ }
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Errata i2075: USB2PHY: USB2PHY Charger Detect is Enabled by
|
||||||
|
* Default Without VBUS Presence.
|
||||||
|
*
|
||||||
|
* AM654x SR1.0 has a silicon bug due to which D+ is pulled high after
|
||||||
|
* POR, which could cause enumeration failure with some USB hubs.
|
||||||
|
* Disabling the USB2_PHY Charger Detect function will put D+
|
||||||
|
* into the normal state.
|
||||||
|
*/
|
||||||
|
if (soc_device_match(am65x_sr10_soc_devices))
|
||||||
|
phy->flags |= OMAP_USB2_DISABLE_CHRG_DET;
|
||||||
|
}
|
||||||
|
|
||||||
static int omap_usb2_probe(struct platform_device *pdev)
|
static int omap_usb2_probe(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
struct omap_usb *phy;
|
struct omap_usb *phy;
|
||||||
@ -366,14 +399,14 @@ static int omap_usb2_probe(struct platform_device *pdev)
|
|||||||
phy->mask = phy_data->mask;
|
phy->mask = phy_data->mask;
|
||||||
phy->power_on = phy_data->power_on;
|
phy->power_on = phy_data->power_on;
|
||||||
phy->power_off = phy_data->power_off;
|
phy->power_off = phy_data->power_off;
|
||||||
|
phy->flags = phy_data->flags;
|
||||||
|
|
||||||
if (phy_data->flags & OMAP_USB2_CALIBRATE_FALSE_DISCONNECT) {
|
omap_usb2_init_errata(phy);
|
||||||
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
|
||||||
phy->phy_base = devm_ioremap_resource(&pdev->dev, res);
|
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||||
if (IS_ERR(phy->phy_base))
|
phy->phy_base = devm_ioremap_resource(&pdev->dev, res);
|
||||||
return PTR_ERR(phy->phy_base);
|
if (IS_ERR(phy->phy_base))
|
||||||
phy->flags |= OMAP_USB2_CALIBRATE_FALSE_DISCONNECT;
|
return PTR_ERR(phy->phy_base);
|
||||||
}
|
|
||||||
|
|
||||||
phy->syscon_phy_power = syscon_regmap_lookup_by_phandle(node,
|
phy->syscon_phy_power = syscon_regmap_lookup_by_phandle(node,
|
||||||
"syscon-phy-power");
|
"syscon-phy-power");
|
||||||
|
@ -1372,7 +1372,7 @@ static int sdw_handle_slave_alerts(struct sdw_slave *slave)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Read Instat 1, Instat 2 and Instat 3 registers */
|
/* Read Intstat 1, Intstat 2 and Intstat 3 registers */
|
||||||
ret = sdw_read(slave, SDW_SCP_INT1);
|
ret = sdw_read(slave, SDW_SCP_INT1);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
dev_err(slave->bus->dev,
|
dev_err(slave->bus->dev,
|
||||||
|
@ -717,6 +717,7 @@ error:
|
|||||||
kfree(wbuf);
|
kfree(wbuf);
|
||||||
error_1:
|
error_1:
|
||||||
kfree(wr_msg);
|
kfree(wr_msg);
|
||||||
|
bus->defer_msg.msg = NULL;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -840,9 +841,10 @@ static int do_bank_switch(struct sdw_stream_runtime *stream)
|
|||||||
error:
|
error:
|
||||||
list_for_each_entry(m_rt, &stream->master_list, stream_node) {
|
list_for_each_entry(m_rt, &stream->master_list, stream_node) {
|
||||||
bus = m_rt->bus;
|
bus = m_rt->bus;
|
||||||
|
if (bus->defer_msg.msg) {
|
||||||
kfree(bus->defer_msg.msg->buf);
|
kfree(bus->defer_msg.msg->buf);
|
||||||
kfree(bus->defer_msg.msg);
|
kfree(bus->defer_msg.msg);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
msg_unlock:
|
msg_unlock:
|
||||||
|
@ -1121,7 +1121,7 @@ static void vga_8planes_imageblit(struct fb_info *info, const struct fb_image *i
|
|||||||
char oldop = setop(0);
|
char oldop = setop(0);
|
||||||
char oldsr = setsr(0);
|
char oldsr = setsr(0);
|
||||||
char oldmask = selectmask();
|
char oldmask = selectmask();
|
||||||
const char *cdat = image->data;
|
const unsigned char *cdat = image->data;
|
||||||
u32 dx = image->dx;
|
u32 dx = image->dx;
|
||||||
char __iomem *where;
|
char __iomem *where;
|
||||||
int y;
|
int y;
|
||||||
|
@ -49,6 +49,10 @@ struct _ddebug {
|
|||||||
|
|
||||||
|
|
||||||
#if defined(CONFIG_DYNAMIC_DEBUG_CORE)
|
#if defined(CONFIG_DYNAMIC_DEBUG_CORE)
|
||||||
|
|
||||||
|
/* exported for module authors to exercise >control */
|
||||||
|
int dynamic_debug_exec_queries(const char *query, const char *modname);
|
||||||
|
|
||||||
int ddebug_add_module(struct _ddebug *tab, unsigned int n,
|
int ddebug_add_module(struct _ddebug *tab, unsigned int n,
|
||||||
const char *modname);
|
const char *modname);
|
||||||
extern int ddebug_remove_module(const char *mod_name);
|
extern int ddebug_remove_module(const char *mod_name);
|
||||||
@ -105,7 +109,7 @@ void __dynamic_ibdev_dbg(struct _ddebug *descriptor,
|
|||||||
static_branch_unlikely(&descriptor.key.dd_key_false)
|
static_branch_unlikely(&descriptor.key.dd_key_false)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#else /* !HAVE_JUMP_LABEL */
|
#else /* !CONFIG_JUMP_LABEL */
|
||||||
|
|
||||||
#define _DPRINTK_KEY_INIT
|
#define _DPRINTK_KEY_INIT
|
||||||
|
|
||||||
@ -117,7 +121,7 @@ void __dynamic_ibdev_dbg(struct _ddebug *descriptor,
|
|||||||
unlikely(descriptor.flags & _DPRINTK_FLAGS_PRINT)
|
unlikely(descriptor.flags & _DPRINTK_FLAGS_PRINT)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif /* CONFIG_JUMP_LABEL */
|
||||||
|
|
||||||
#define __dynamic_func_call(id, fmt, func, ...) do { \
|
#define __dynamic_func_call(id, fmt, func, ...) do { \
|
||||||
DEFINE_DYNAMIC_DEBUG_METADATA(id, fmt); \
|
DEFINE_DYNAMIC_DEBUG_METADATA(id, fmt); \
|
||||||
@ -172,10 +176,11 @@ void __dynamic_ibdev_dbg(struct _ddebug *descriptor,
|
|||||||
KERN_DEBUG, prefix_str, prefix_type, \
|
KERN_DEBUG, prefix_str, prefix_type, \
|
||||||
rowsize, groupsize, buf, len, ascii)
|
rowsize, groupsize, buf, len, ascii)
|
||||||
|
|
||||||
#else
|
#else /* !CONFIG_DYNAMIC_DEBUG_CORE */
|
||||||
|
|
||||||
#include <linux/string.h>
|
#include <linux/string.h>
|
||||||
#include <linux/errno.h>
|
#include <linux/errno.h>
|
||||||
|
#include <linux/printk.h>
|
||||||
|
|
||||||
static inline int ddebug_add_module(struct _ddebug *tab, unsigned int n,
|
static inline int ddebug_add_module(struct _ddebug *tab, unsigned int n,
|
||||||
const char *modname)
|
const char *modname)
|
||||||
@ -210,6 +215,13 @@ static inline int ddebug_dyndbg_module_param_cb(char *param, char *val,
|
|||||||
print_hex_dump(KERN_DEBUG, prefix_str, prefix_type, \
|
print_hex_dump(KERN_DEBUG, prefix_str, prefix_type, \
|
||||||
rowsize, groupsize, buf, len, ascii); \
|
rowsize, groupsize, buf, len, ascii); \
|
||||||
} while (0)
|
} while (0)
|
||||||
#endif
|
|
||||||
|
static inline int dynamic_debug_exec_queries(const char *query, const char *modname)
|
||||||
|
{
|
||||||
|
pr_warn("kernel not built with CONFIG_DYNAMIC_DEBUG_CORE\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* !CONFIG_DYNAMIC_DEBUG_CORE */
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -353,8 +353,7 @@ static int check_set(const char **dest, char *src, char *name)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Parse words[] as a ddebug query specification, which is a series
|
* Parse words[] as a ddebug query specification, which is a series
|
||||||
* of (keyword, value) pairs or combined keyword=value terms,
|
* of (keyword, value) pairs chosen from these possibilities:
|
||||||
* chosen from these possibilities:
|
|
||||||
*
|
*
|
||||||
* func <function-name>
|
* func <function-name>
|
||||||
* file <full-pathname>
|
* file <full-pathname>
|
||||||
@ -373,34 +372,22 @@ static int ddebug_parse_query(char *words[], int nwords,
|
|||||||
unsigned int i;
|
unsigned int i;
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
char *fline;
|
char *fline;
|
||||||
char *keyword, *arg;
|
|
||||||
|
/* check we have an even number of words */
|
||||||
|
if (nwords % 2 != 0) {
|
||||||
|
pr_err("expecting pairs of match-spec <value>\n");
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
if (modname)
|
if (modname)
|
||||||
/* support $modname.dyndbg=<multiple queries> */
|
/* support $modname.dyndbg=<multiple queries> */
|
||||||
query->module = modname;
|
query->module = modname;
|
||||||
|
|
||||||
for (i = 0; i < nwords; i++) {
|
for (i = 0; i < nwords; i += 2) {
|
||||||
/* accept keyword=arg */
|
if (!strcmp(words[i], "func")) {
|
||||||
vpr_info("%d w:%s\n", i, words[i]);
|
rc = check_set(&query->function, words[i+1], "func");
|
||||||
|
} else if (!strcmp(words[i], "file")) {
|
||||||
keyword = words[i];
|
if (check_set(&query->filename, words[i+1], "file"))
|
||||||
arg = strchr(keyword, '=');
|
|
||||||
if (arg) {
|
|
||||||
*arg++ = '\0';
|
|
||||||
} else {
|
|
||||||
i++; /* next word is arg */
|
|
||||||
if (!(i < nwords)) {
|
|
||||||
pr_err("missing arg to keyword: %s\n", keyword);
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
arg = words[i];
|
|
||||||
}
|
|
||||||
vpr_info("%d key:%s arg:%s\n", i, keyword, arg);
|
|
||||||
|
|
||||||
if (!strcmp(keyword, "func")) {
|
|
||||||
rc = check_set(&query->function, arg, "func");
|
|
||||||
} else if (!strcmp(keyword, "file")) {
|
|
||||||
if (check_set(&query->filename, arg, "file"))
|
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
/* tail :$info is function or line-range */
|
/* tail :$info is function or line-range */
|
||||||
@ -416,18 +403,18 @@ static int ddebug_parse_query(char *words[], int nwords,
|
|||||||
if (parse_linerange(query, fline))
|
if (parse_linerange(query, fline))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
} else if (!strcmp(keyword, "module")) {
|
} else if (!strcmp(words[i], "module")) {
|
||||||
rc = check_set(&query->module, arg, "module");
|
rc = check_set(&query->module, words[i+1], "module");
|
||||||
} else if (!strcmp(keyword, "format")) {
|
} else if (!strcmp(words[i], "format")) {
|
||||||
string_unescape_inplace(arg, UNESCAPE_SPACE |
|
string_unescape_inplace(words[i+1], UNESCAPE_SPACE |
|
||||||
UNESCAPE_OCTAL |
|
UNESCAPE_OCTAL |
|
||||||
UNESCAPE_SPECIAL);
|
UNESCAPE_SPECIAL);
|
||||||
rc = check_set(&query->format, arg, "format");
|
rc = check_set(&query->format, words[i+1], "format");
|
||||||
} else if (!strcmp(keyword, "line")) {
|
} else if (!strcmp(words[i], "line")) {
|
||||||
if (parse_linerange(query, arg))
|
if (parse_linerange(query, words[i+1]))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
} else {
|
} else {
|
||||||
pr_err("unknown keyword \"%s\"\n", keyword);
|
pr_err("unknown keyword \"%s\"\n", words[i]);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
if (rc)
|
if (rc)
|
||||||
@ -525,7 +512,7 @@ static int ddebug_exec_query(char *query_string, const char *modname)
|
|||||||
last error or number of matching callsites. Module name is either
|
last error or number of matching callsites. Module name is either
|
||||||
in param (for boot arg) or perhaps in query string.
|
in param (for boot arg) or perhaps in query string.
|
||||||
*/
|
*/
|
||||||
int ddebug_exec_queries(char *query, const char *modname)
|
static int ddebug_exec_queries(char *query, const char *modname)
|
||||||
{
|
{
|
||||||
char *split;
|
char *split;
|
||||||
int i, errs = 0, exitcode = 0, rc, nfound = 0;
|
int i, errs = 0, exitcode = 0, rc, nfound = 0;
|
||||||
@ -557,7 +544,30 @@ int ddebug_exec_queries(char *query, const char *modname)
|
|||||||
return exitcode;
|
return exitcode;
|
||||||
return nfound;
|
return nfound;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(ddebug_exec_queries);
|
|
||||||
|
/**
|
||||||
|
* dynamic_debug_exec_queries - select and change dynamic-debug prints
|
||||||
|
* @query: query-string described in admin-guide/dynamic-debug-howto
|
||||||
|
* @modname: string containing module name, usually &module.mod_name
|
||||||
|
*
|
||||||
|
* This uses the >/proc/dynamic_debug/control reader, allowing module
|
||||||
|
* authors to modify their dynamic-debug callsites. The modname is
|
||||||
|
* canonically struct module.mod_name, but can also be null or a
|
||||||
|
* module-wildcard, for example: "drm*".
|
||||||
|
*/
|
||||||
|
int dynamic_debug_exec_queries(const char *query, const char *modname)
|
||||||
|
{
|
||||||
|
int rc;
|
||||||
|
char *qry = kstrndup(query, PAGE_SIZE, GFP_KERNEL);
|
||||||
|
|
||||||
|
if (!query)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
|
rc = ddebug_exec_queries(qry, modname);
|
||||||
|
kfree(qry);
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(dynamic_debug_exec_queries);
|
||||||
|
|
||||||
#define PREFIX_SIZE 64
|
#define PREFIX_SIZE 64
|
||||||
|
|
||||||
@ -947,7 +957,7 @@ int ddebug_add_module(struct _ddebug *tab, unsigned int n,
|
|||||||
list_add(&dt->link, &ddebug_tables);
|
list_add(&dt->link, &ddebug_tables);
|
||||||
mutex_unlock(&ddebug_lock);
|
mutex_unlock(&ddebug_lock);
|
||||||
|
|
||||||
v2pr_info("%u debug prints in module %s\n", n, dt->mod_name);
|
v2pr_info("%3u debug prints in module %s\n", n, dt->mod_name);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26,7 +26,11 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# ignore userspace tools
|
# ignore userspace tools
|
||||||
ignore="$ignore ( -path ${tree}tools ) -prune -o"
|
if [ -n "$COMPILED_SOURCE" ]; then
|
||||||
|
ignore="$ignore ( -path ./tools ) -prune -o"
|
||||||
|
else
|
||||||
|
ignore="$ignore ( -path ${tree}tools ) -prune -o"
|
||||||
|
fi
|
||||||
|
|
||||||
# Detect if ALLSOURCE_ARCHS is set. If not, we assume SRCARCH
|
# Detect if ALLSOURCE_ARCHS is set. If not, we assume SRCARCH
|
||||||
if [ "${ALLSOURCE_ARCHS}" = "" ]; then
|
if [ "${ALLSOURCE_ARCHS}" = "" ]; then
|
||||||
@ -92,7 +96,7 @@ all_sources()
|
|||||||
all_compiled_sources()
|
all_compiled_sources()
|
||||||
{
|
{
|
||||||
realpath -es $([ -z "$KBUILD_ABS_SRCTREE" ] && echo --relative-to=.) \
|
realpath -es $([ -z "$KBUILD_ABS_SRCTREE" ] && echo --relative-to=.) \
|
||||||
include/generated/autoconf.h $(find -name "*.cmd" -exec \
|
include/generated/autoconf.h $(find $ignore -name "*.cmd" -exec \
|
||||||
grep -Poh '(?(?=^source_.* \K).*|(?=^ \K\S).*(?= \\))' {} \+ |
|
grep -Poh '(?(?=^source_.* \K).*|(?=^ \K\S).*(?= \\))' {} \+ |
|
||||||
awk '!a[$0]++') | sort -u
|
awk '!a[$0]++') | sort -u
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user