Merge branch 'master' of git://git.denx.de/u-boot-tegra
This commit is contained in:
@@ -198,9 +198,9 @@ int dfu_write(struct dfu_entity *dfu, void *buf, int size, int blk_seq_num)
|
||||
{
|
||||
int ret;
|
||||
|
||||
debug("%s: name: %s buf: 0x%p size: 0x%x p_num: 0x%x offset: 0x%llx bufoffset: 0x%x\n",
|
||||
debug("%s: name: %s buf: 0x%p size: 0x%x p_num: 0x%x offset: 0x%llx bufoffset: 0x%lx\n",
|
||||
__func__, dfu->name, buf, size, blk_seq_num, dfu->offset,
|
||||
dfu->i_buf - dfu->i_buf_start);
|
||||
(unsigned long)(dfu->i_buf - dfu->i_buf_start));
|
||||
|
||||
if (!dfu->inited) {
|
||||
/* initial state */
|
||||
|
||||
@@ -156,7 +156,7 @@ static int mmc_file_op(enum dfu_op op, struct dfu_entity *dfu,
|
||||
dfu->data.mmc.dev, dfu->data.mmc.part);
|
||||
|
||||
if (op != DFU_OP_SIZE)
|
||||
sprintf(cmd_buf + strlen(cmd_buf), " 0x%x", (unsigned int)buf);
|
||||
sprintf(cmd_buf + strlen(cmd_buf), " %p", buf);
|
||||
|
||||
sprintf(cmd_buf + strlen(cmd_buf), " %s", dfu->name);
|
||||
|
||||
|
||||
@@ -235,7 +235,7 @@ static int send_recv_packets(struct i2c_bus *i2c_bus,
|
||||
if ((words == 1) && last_bytes) {
|
||||
local = 0;
|
||||
memcpy(&local, dptr, last_bytes);
|
||||
} else if ((unsigned)dptr & 3) {
|
||||
} else if ((unsigned long)dptr & 3) {
|
||||
memcpy(&local, dptr, sizeof(u32));
|
||||
} else {
|
||||
local = *wptr;
|
||||
@@ -258,7 +258,7 @@ static int send_recv_packets(struct i2c_bus *i2c_bus,
|
||||
local = readl(&control->rx_fifo);
|
||||
if ((words == 1) && last_bytes)
|
||||
memcpy(dptr, (char *)&local, last_bytes);
|
||||
else if ((unsigned)dptr & 3)
|
||||
else if ((unsigned long)dptr & 3)
|
||||
memcpy(dptr, &local, sizeof(u32));
|
||||
else
|
||||
*wptr = local;
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* (C) Copyright 2009 SAMSUNG Electronics
|
||||
* Minkyu Kang <mk7.kang@samsung.com>
|
||||
* Jaehoon Chung <jh80.chung@samsung.com>
|
||||
* Portions Copyright 2011-2013 NVIDIA Corporation
|
||||
* Portions Copyright 2011-2015 NVIDIA Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
@@ -67,7 +67,7 @@ static void mmc_prepare_data(struct mmc_host *host, struct mmc_data *data,
|
||||
bbstate->bounce_buffer, bbstate->user_buffer, data->blocks,
|
||||
data->blocksize);
|
||||
|
||||
writel((u32)bbstate->bounce_buffer, &host->reg->sysad);
|
||||
writel((u32)(unsigned long)bbstate->bounce_buffer, &host->reg->sysad);
|
||||
/*
|
||||
* DMASEL[4:3]
|
||||
* 00 = Selects SDMA
|
||||
@@ -233,8 +233,8 @@ static int mmc_send_cmd_bounced(struct mmc *mmc, struct mmc_cmd *cmd,
|
||||
if (cmd->resp_type & MMC_RSP_136) {
|
||||
/* CRC is stripped so we need to do some shifting. */
|
||||
for (i = 0; i < 4; i++) {
|
||||
unsigned int offset =
|
||||
(unsigned int)(&host->reg->rspreg3 - i);
|
||||
unsigned long offset =
|
||||
(unsigned long)(&host->reg->rspreg3 - i);
|
||||
cmd->response[i] = readl(offset) << 8;
|
||||
|
||||
if (i != 3) {
|
||||
@@ -668,6 +668,16 @@ void tegra_mmc_init(void)
|
||||
const void *blob = gd->fdt_blob;
|
||||
debug("%s entry\n", __func__);
|
||||
|
||||
/* See if any Tegra210 MMC controllers are present */
|
||||
count = fdtdec_find_aliases_for_id(blob, "sdhci",
|
||||
COMPAT_NVIDIA_TEGRA210_SDMMC, node_list,
|
||||
CONFIG_SYS_MMC_MAX_DEVICE);
|
||||
debug("%s: count of Tegra210 sdhci nodes is %d\n", __func__, count);
|
||||
if (process_nodes(blob, node_list, count)) {
|
||||
printf("%s: Error processing T30 mmc node(s)!\n", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
/* See if any Tegra124 MMC controllers are present */
|
||||
count = fdtdec_find_aliases_for_id(blob, "sdhci",
|
||||
COMPAT_NVIDIA_TEGRA124_SDMMC, node_list,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2011 The Chromium OS Authors.
|
||||
* Copyright (c) 2009-2013 NVIDIA Corporation
|
||||
* Copyright (c) 2009-2015 NVIDIA Corporation
|
||||
* Copyright (c) 2013 Lucas Stach
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
@@ -64,6 +64,7 @@ enum usb_ctlr_type {
|
||||
USB_CTLR_T20,
|
||||
USB_CTLR_T30,
|
||||
USB_CTLR_T114,
|
||||
USB_CTLR_T210,
|
||||
|
||||
USB_CTRL_COUNT,
|
||||
};
|
||||
@@ -149,6 +150,15 @@ static const unsigned T114_usb_pll[CLOCK_OSC_FREQ_COUNT][PARAM_COUNT] = {
|
||||
{ 0x3C0, 0x1A, 0x00, 0xC, 2, 0x04, 0x66, 0x09, 0xFE, 0xFDE8, 0xB }
|
||||
};
|
||||
|
||||
/* NOTE: 13/26MHz settings are N/A for T210, so dupe 12MHz settings for now */
|
||||
static const unsigned T210_usb_pll[CLOCK_OSC_FREQ_COUNT][PARAM_COUNT] = {
|
||||
/* DivN, DivM, DivP, KCP, KVCO, Delays Debounce, Bias */
|
||||
{ 0x028, 0x01, 0x01, 0x0, 0, 0x02, 0x2F, 0x08, 0x76, 30000, 5 },
|
||||
{ 0x019, 0x01, 0x01, 0x0, 0, 0x03, 0x4B, 0x0C, 0xBB, 48000, 8 },
|
||||
{ 0x028, 0x01, 0x01, 0x0, 0, 0x02, 0x2F, 0x08, 0x76, 30000, 5 },
|
||||
{ 0x028, 0x01, 0x01, 0x0, 0, 0x02, 0x2F, 0x08, 0x76, 30000, 5 },
|
||||
};
|
||||
|
||||
/* UTMIP Idle Wait Delay */
|
||||
static const u8 utmip_idle_wait_delay = 17;
|
||||
|
||||
@@ -177,6 +187,10 @@ static struct fdt_usb_controller fdt_usb_controllers[USB_CTRL_COUNT] = {
|
||||
.has_hostpc = 1,
|
||||
.pll_parameter = (const unsigned *)T114_usb_pll,
|
||||
},
|
||||
{
|
||||
.has_hostpc = 1,
|
||||
.pll_parameter = (const unsigned *)T210_usb_pll,
|
||||
},
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -458,6 +472,16 @@ static int init_utmi_usb_controller(struct fdt_usb *config,
|
||||
UTMIP_DEBOUNCE_CFG0_MASK,
|
||||
timing[PARAM_DEBOUNCE_A_TIME] << UTMIP_DEBOUNCE_CFG0_SHIFT);
|
||||
|
||||
if (timing[PARAM_DEBOUNCE_A_TIME] > 0xFFFF) {
|
||||
clrsetbits_le32(&usbctlr->utmip_debounce_cfg0,
|
||||
UTMIP_DEBOUNCE_CFG0_MASK,
|
||||
(timing[PARAM_DEBOUNCE_A_TIME] >> 1)
|
||||
<< UTMIP_DEBOUNCE_CFG0_SHIFT);
|
||||
clrsetbits_le32(&usbctlr->utmip_bias_cfg1,
|
||||
UTMIP_BIAS_DEBOUNCE_TIMESCALE_MASK,
|
||||
1 << UTMIP_BIAS_DEBOUNCE_TIMESCALE_SHIFT);
|
||||
}
|
||||
|
||||
setbits_le32(&usbctlr->utmip_tx_cfg0, UTMIP_FS_PREAMBLE_J);
|
||||
|
||||
/* Disable battery charge enabling bit */
|
||||
@@ -643,6 +667,10 @@ static int init_ulpi_usb_controller(struct fdt_usb *config,
|
||||
|
||||
static void config_clock(const u32 timing[])
|
||||
{
|
||||
debug("%s: DIVM = %d, DIVN = %d, DIVP = %d, cpcon/lfcon = %d/%d\n",
|
||||
__func__, timing[PARAM_DIVM], timing[PARAM_DIVN],
|
||||
timing[PARAM_DIVP], timing[PARAM_CPCON], timing[PARAM_LFCON]);
|
||||
|
||||
clock_start_pll(CLOCK_ID_USB,
|
||||
timing[PARAM_DIVM], timing[PARAM_DIVN], timing[PARAM_DIVP],
|
||||
timing[PARAM_CPCON], timing[PARAM_LFCON]);
|
||||
@@ -823,6 +851,7 @@ static const struct udevice_id ehci_usb_ids[] = {
|
||||
{ .compatible = "nvidia,tegra20-ehci", .data = USB_CTLR_T20 },
|
||||
{ .compatible = "nvidia,tegra30-ehci", .data = USB_CTLR_T30 },
|
||||
{ .compatible = "nvidia,tegra114-ehci", .data = USB_CTLR_T114 },
|
||||
{ .compatible = "nvidia,tegra210-ehci", .data = USB_CTLR_T210 },
|
||||
{ }
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user