Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- iff --git a/arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts b/arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts
- index 83e10591e..bab43f606 100644
- --- a/arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts
- +++ b/arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts
- @@ -172,6 +172,8 @@
- assigned-clocks = <&topckgen CLK_TOP_MSDC30_0_SEL>;
- assigned-clock-parents = <&topckgen CLK_TOP_UNIV48M>;
- non-removable;
- + no-sdio;
- + no-sd;
- };
- &mmc1 {
- @@ -188,6 +190,8 @@
- vqmmc-supply = <®_3p3v>;
- assigned-clocks = <&topckgen CLK_TOP_MSDC30_1_SEL>;
- assigned-clock-parents = <&topckgen CLK_TOP_UNIV48M>;
- + no-sdio;
- + no-mmc;
- };
- &nandc {
- diff --git a/drivers/mmc/host/mtk-sd.c b/drivers/mmc/host/mtk-sd.c
- index 189e42674..e41285632 100644
- --- a/drivers/mmc/host/mtk-sd.c
- +++ b/drivers/mmc/host/mtk-sd.c
- @@ -588,6 +588,35 @@ static void msdc_reset_hw(struct msdc_host *host)
- writel(val, host->base + MSDC_INT);
- }
- +static void dump_register(struct msdc_host *host)
- +{
- + int xx = 0;
- +
- + while (xx <= 0x100) {
- + dev_err(host->dev, "reg[ %x]: %08x.\n",
- + xx, readl(host->base + xx));
- + xx += 0x4;
- + }
- + dev_err(host->dev, "reg[188]: %08x.\n",
- + readl(host->base + 0x188));
- + dev_err(host->dev, "reg[18c]: %08x.\n",
- + readl(host->base + 0x18c));
- + dev_err(host->dev, "reg[208]: %08x.\n",
- + readl(host->base + 0x208));
- + dev_err(host->dev, "reg[220]: %08x.\n",
- + readl(host->base + 0x220));
- + dev_err(host->dev, "reg[228]: %08x.\n",
- + readl(host->base + 0x228));
- +
- + for (xx = 0; xx <= 0x27; xx++) {
- + writel(xx, host->base + 0xa0);
- + dev_err(host->dev, "SEL[ %x] = 0x%x \tOUT[ %x] = 0x%x.\n",
- + 0xa0, xx, 0xa4, readl(host->base + 0xa4));
- + }
- +
- + writel(0, host->base + 0xa0);
- +}
- +
- static void msdc_cmd_next(struct msdc_host *host,
- struct mmc_request *mrq, struct mmc_command *cmd);
- @@ -1009,9 +1038,11 @@ static int msdc_auto_cmd_done(struct msdc_host *host, int events,
- static void msdc_track_cmd_data(struct msdc_host *host,
- struct mmc_command *cmd, struct mmc_data *data)
- {
- - if (host->error)
- - dev_dbg(host->dev, "%s: cmd=%d arg=%08X; host->error=0x%08X\n",
- + if (host->error) {
- + dev_err(host->dev, "%s: cmd=%d arg=%08X; host->error=0x%08X\n",
- __func__, cmd->opcode, cmd->arg, host->error);
- + dump_register(host);
- + }
- }
- static void msdc_request_done(struct msdc_host *host, struct mmc_request *mrq)
- @@ -1097,7 +1128,7 @@ static bool msdc_cmd_done(struct msdc_host *host, int events,
- }
- }
- if (cmd->error)
- - dev_dbg(host->dev,
- + dev_err(host->dev,
- "%s: cmd=%d arg=%08X; rsp %08X; cmd_error=%d\n",
- __func__, cmd->opcode, cmd->arg, rsp[0],
- cmd->error);
- @@ -1170,6 +1201,8 @@ static void msdc_start_command(struct msdc_host *host,
- writel(cmd->arg, host->base + SDC_ARG);
- writel(rawcmd, host->base + SDC_CMD);
- + dev_err(host->dev, "%s: cmd = %d, arg = %08X; rawcmd = 0x%08X\n",
- + __func__, cmd->opcode, cmd->arg, rawcmd);
- }
- static void msdc_cmd_next(struct msdc_host *host,
- @@ -1291,9 +1324,9 @@ static bool msdc_data_xfer_done(struct msdc_host *host, u32 events,
- else if (events & MSDC_INT_DATCRCERR)
- data->error = -EILSEQ;
- - dev_dbg(host->dev, "%s: cmd=%d; blocks=%d",
- + dev_err(host->dev, "%s: cmd=%d; blocks=%d",
- __func__, mrq->cmd->opcode, data->blocks);
- - dev_dbg(host->dev, "data_error=%d xfer_size=%d\n",
- + dev_err(host->dev, "data_error=%d xfer_size=%d\n",
- (int)data->error, data->bytes_xfered);
- }
- @@ -1599,6 +1632,7 @@ static void msdc_init_hw(struct msdc_host *host)
- host->saved_tune_para.pad_tune = readl(host->base + tune_reg);
- }
- dev_dbg(host->dev, "init hardware done!");
- + dump_register(host);
- }
- static void msdc_deinit_hw(struct msdc_host *host)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement