From patchwork Wed Feb 21 16:10:26 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?= X-Patchwork-Id: 876175 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="jKUCzTJG"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zmjDJ1VCzz9sWV for ; Thu, 22 Feb 2018 03:11:57 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id CCAACC21F41; Wed, 21 Feb 2018 16:11:07 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED, RCVD_IN_MSPIKE_H2, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 301E1C21F03; Wed, 21 Feb 2018 16:10:58 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id E9EC7C21C50; Wed, 21 Feb 2018 16:10:50 +0000 (UTC) Received: from mail-wr0-f194.google.com (mail-wr0-f194.google.com [209.85.128.194]) by lists.denx.de (Postfix) with ESMTPS id 719E7C21DAF for ; Wed, 21 Feb 2018 16:10:46 +0000 (UTC) Received: by mail-wr0-f194.google.com with SMTP id n7so6009767wrn.5 for ; Wed, 21 Feb 2018 08:10:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=xx+HE1isebBR3RiA46RTSHO3oxGbCNqQB345gcDIkbE=; b=jKUCzTJGWUF3zqyOfMw9rFMyJZks8iyyqDaOjZh85kqzyPgbra8Kg4WAZwYuzK/u7f fgiAL2a9/TEdAjuv1dv/XvTUOl91zZ2S2xYgb8pE9t2LCMINMrh5haY0VTmOGMqlW17D BZ8aJeRDJYWbfqGSj9PBN8j6/m41qujXHSfTNB/cth6slrDF3jDT+ijqbgJKOxebMisS gOzjIhp8SZgZjBn2UgaL6vQ3wwAudVxjYtOlcxW4i+MzN5hYox3Ntcb4LNQZ8B41Fdva jugAs2cyh1f4/XnNHl7Gi6IWh9H4756zbbseyaCVWo1kDzNvRERYWvESULiwty8mGra9 53bg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=xx+HE1isebBR3RiA46RTSHO3oxGbCNqQB345gcDIkbE=; b=r9eufsiGdWVjB7TKpQW+PW9QjzQ7Uu0Fft3WQ7HEnSjEL3gcDcn2PTTGtf0njDiZKd K53BtYU4Bqh3j/0i2RdPrOXwoWAACXDvJ0dMvNGH7MPrsPY4JAwgrGIq/krdPsrXGLr/ 2yXk1q3EVg1XMN7ltA5JMwalS1+XnYQUFztW7rX1+riwwayGQuR112IGmeDbpToTTJbv XmHtJAxukmp0EUDGqizWmKWpXdhOfOInZLHZe/JOTSaqffDQ2vwflwM1B7vSHeMkmFQV b61Y/g48kAOk6/p8NAGayMPLA7ksso+9TtQARX1WVUS2xIuGmgFdRf2ZVwXysuvBkGgG AhBQ== X-Gm-Message-State: APf1xPAdzUE9XuwA0c9JIh/aukbXLEIDUG8W6Aq2v2K1sDs8Hb7TtkAl 0+8fCXuuuNQv+gYCVc+o1nsFghF9 X-Google-Smtp-Source: AH8x225Ac2tRArfjZVmgbKN8YczdbSZh3rEmvPxHJLAO4uD+ruyYwvmBs061QAvuyojFwkr18fc74Q== X-Received: by 10.28.1.208 with SMTP id 199mr2650432wmb.26.1519229445883; Wed, 21 Feb 2018 08:10:45 -0800 (PST) Received: from skynet.lan (175.red-2-137-31.dynamicip.rima-tde.net. [2.137.31.175]) by smtp.gmail.com with ESMTPSA id l22sm1051357wre.52.2018.02.21.08.10.44 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 21 Feb 2018 08:10:44 -0800 (PST) From: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?= To: u-boot@lists.denx.de, daniel.schwierzeck@gmail.com, sjg@chromium.org, jagan@openedev.com, vigneshr@ti.com Date: Wed, 21 Feb 2018 17:10:26 +0100 Message-Id: <20180221161040.22246-2-noltari@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180221161040.22246-1-noltari@gmail.com> References: <20180212163858.25601-1-noltari@gmail.com> <20180221161040.22246-1-noltari@gmail.com> MIME-Version: 1.0 Subject: [U-Boot] [RFC v3 01/15] dma: move dma_ops to dma-uclass.h X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Move dma_ops to a separate header file, following other uclass implementations. While doing so, this patch also improves dma_ops documentation. Signed-off-by: Álvaro Fernández Rojas Reviewed-by: Simon Glass --- v3: Introduce changes reported by Simon Glass: - Improve dma-uclass.h documentation. - Switch to live tree API. drivers/dma/dma-uclass.c | 3 ++- include/dma-uclass.h | 39 +++++++++++++++++++++++++++++++++++++++ include/dma.h | 22 ---------------------- 3 files changed, 41 insertions(+), 23 deletions(-) create mode 100644 include/dma-uclass.h diff --git a/drivers/dma/dma-uclass.c b/drivers/dma/dma-uclass.c index 3d0ce22fbc..6fd4e1b35d 100644 --- a/drivers/dma/dma-uclass.c +++ b/drivers/dma/dma-uclass.c @@ -10,10 +10,11 @@ */ #include -#include #include #include #include +#include +#include #include DECLARE_GLOBAL_DATA_PTR; diff --git a/include/dma-uclass.h b/include/dma-uclass.h new file mode 100644 index 0000000000..abf750a5ce --- /dev/null +++ b/include/dma-uclass.h @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2018 Álvaro Fernández Rojas + * Copyright (C) 2015 Texas Instruments Incorporated + * Written by Mugunthan V N + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#ifndef _DMA_UCLASS_H +#define _DMA_UCLASS_H + +/* See dma.h for background documentation. */ + +#include + +/* + * struct dma_ops - Driver model DMA operations + * + * The uclass interface is implemented by all DMA devices which use + * driver model. + */ +struct dma_ops { + /** + * transfer() - Issue a DMA transfer. The implementation must + * wait until the transfer is done. + * + * @dev: The DMA device + * @direction: direction of data transfer (should be one from + * enum dma_direction) + * @dst: The destination pointer. + * @src: The source pointer. + * @len: Length of the data to be copied (number of bytes). + * @return zero on success, or -ve error code. + */ + int (*transfer)(struct udevice *dev, int direction, void *dst, + void *src, size_t len); +}; + +#endif /* _DMA_UCLASS_H */ diff --git a/include/dma.h b/include/dma.h index 71fa77f2ea..89320f10d9 100644 --- a/include/dma.h +++ b/include/dma.h @@ -28,28 +28,6 @@ enum dma_direction { #define DMA_SUPPORTS_DEV_TO_DEV BIT(3) /* - * struct dma_ops - Driver model DMA operations - * - * The uclass interface is implemented by all DMA devices which use - * driver model. - */ -struct dma_ops { - /* - * Get the current timer count - * - * @dev: The DMA device - * @direction: direction of data transfer should be one from - enum dma_direction - * @dst: Destination pointer - * @src: Source pointer - * @len: Length of the data to be copied. - * @return: 0 if OK, -ve on error - */ - int (*transfer)(struct udevice *dev, int direction, void *dst, - void *src, size_t len); -}; - -/* * struct dma_dev_priv - information about a device used by the uclass * * @supported: mode of transfers that DMA can support, should be From patchwork Wed Feb 21 16:10:27 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?= X-Patchwork-Id: 876179 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="VrkPOp9N"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zmjHf04MLz9sWN for ; Thu, 22 Feb 2018 03:14:46 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 71AC9C21F19; Wed, 21 Feb 2018 16:12:31 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED, RCVD_IN_MSPIKE_H2, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id EE136C21F35; Wed, 21 Feb 2018 16:11:06 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 1408EC21F35; Wed, 21 Feb 2018 16:10:51 +0000 (UTC) Received: from mail-wr0-f194.google.com (mail-wr0-f194.google.com [209.85.128.194]) by lists.denx.de (Postfix) with ESMTPS id DD1F7C21E73 for ; Wed, 21 Feb 2018 16:10:47 +0000 (UTC) Received: by mail-wr0-f194.google.com with SMTP id n7so6010018wrn.5 for ; Wed, 21 Feb 2018 08:10:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ap8WAJqgMLO8wIKRupt029VvEwF4aipNiinwjJjbIlA=; b=VrkPOp9NSI1gcelbfVzGehN1SRSEbxtm3+KpzsgtXxg7UOElFF+fdwFhWvOcxdfz92 L/Wxg+OGrKOyGOvueC5RMMsTuy+o7Gr3loOFfUaew5TcG/UDiVl8hdYzBtW6V/gchT+u oe35enOBh8+Qv5qSqJZpKVWRJWIwWvIxgT3EevOUX4HDouq8G5tuA8P0NW7pDgbE6285 +15fyBtfMvS4PVoSJIocNlD9SEitEl1E1j0yIuWLCyw934izWiNn3l/WS1ZE6w4r0k41 VYA6ts9bFoFReHod8n1jbnJsg6LNxW99g0tNXL1jzvsYrqy4VF/LLNBQ79RSQnDmyVm2 kKTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ap8WAJqgMLO8wIKRupt029VvEwF4aipNiinwjJjbIlA=; b=lQGn+I/O1R2wGyo8Ddr9iVrY8CWHe/vQbjBq6QoPKctqNqEiJnQ6KtiufrOEKoEXvc XEQX10zZe+GBunKSjbqjUUBoPJnQh6Pjd1+8Xt1JXI2+KwOghsVp3AHmfXJznLnvBgx4 QSszDEDJuLzOf2UW/TxlERXkFygvImmHypYw4ZH6qbcLPICT99Y4j1ItgECfmKK5r4kT druuF1I6c7yLC1KuOOczqh4JqcFFzstAY3qWtkbCPla2SfU/ZvDQDervs1lYkcTZE7B6 M1svvcWhK2pVYQFi3uo0tACri/xMJmk0U0cLcU3Ummq4JAlY4Lkx8OzCxIaa4mJSVth/ i0Aw== X-Gm-Message-State: APf1xPCheJio2qEAE6olQl3+3QQO8+48DgW3VEnuDfe8aJdO8nqVHU5o eY5WoHLEgqG8ChUnr9/g1oAAypy+ X-Google-Smtp-Source: AH8x224nclE2TNLYGXOW9geSCbhB89X8Hpofx9/znHcTs0IizAUCRdXiQm1mFjUkK//losk8wcll5A== X-Received: by 10.28.88.70 with SMTP id m67mr2587261wmb.134.1519229447028; Wed, 21 Feb 2018 08:10:47 -0800 (PST) Received: from skynet.lan (175.red-2-137-31.dynamicip.rima-tde.net. [2.137.31.175]) by smtp.gmail.com with ESMTPSA id l22sm1051357wre.52.2018.02.21.08.10.45 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 21 Feb 2018 08:10:46 -0800 (PST) From: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?= To: u-boot@lists.denx.de, daniel.schwierzeck@gmail.com, sjg@chromium.org, jagan@openedev.com, vigneshr@ti.com Date: Wed, 21 Feb 2018 17:10:27 +0100 Message-Id: <20180221161040.22246-3-noltari@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180221161040.22246-1-noltari@gmail.com> References: <20180212163858.25601-1-noltari@gmail.com> <20180221161040.22246-1-noltari@gmail.com> MIME-Version: 1.0 Subject: [U-Boot] [RFC v3 02/15] dma: add channels support X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" This adds channels support for dma controllers that have multiple channels which can transfer data to/from different devices (enet, usb...). Signed-off-by: Álvaro Fernández Rojas Reviewed-by: Simon Glass --- v3: Introduce changes reported by Simon Glass: - Improve dma-uclass.h documentation. - Switch to live tree API. drivers/dma/Kconfig | 7 ++ drivers/dma/dma-uclass.c | 188 +++++++++++++++++++++++++++++++++++++++++++++-- include/dma-uclass.h | 78 ++++++++++++++++++++ include/dma.h | 174 ++++++++++++++++++++++++++++++++++++++++++- 4 files changed, 439 insertions(+), 8 deletions(-) diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig index 1b92c7789d..21b2c0dcaa 100644 --- a/drivers/dma/Kconfig +++ b/drivers/dma/Kconfig @@ -12,6 +12,13 @@ config DMA buses that is used to transfer data to and from memory. The uclass interface is defined in include/dma.h. +config DMA_CHANNELS + bool "Enable DMA channels support" + depends on DMA + help + Enable channels support for DMA. Some DMA controllers have multiple + channels which can either transfer data to/from different devices. + config TI_EDMA3 bool "TI EDMA3 driver" help diff --git a/drivers/dma/dma-uclass.c b/drivers/dma/dma-uclass.c index 6fd4e1b35d..f4ba883b12 100644 --- a/drivers/dma/dma-uclass.c +++ b/drivers/dma/dma-uclass.c @@ -1,24 +1,200 @@ /* * Direct Memory Access U-Class driver * - * (C) Copyright 2015 - * Texas Instruments Incorporated, - * - * Author: Mugunthan V N + * Copyright (C) 2018 Álvaro Fernández Rojas + * Copyright (C) 2015 Texas Instruments Incorporated + * Written by Mugunthan V N * * SPDX-License-Identifier: GPL-2.0+ */ #include #include -#include -#include +#include #include #include +#include #include DECLARE_GLOBAL_DATA_PTR; +#ifdef CONFIG_DMA_CHANNELS +static inline struct dma_ops *dma_dev_ops(struct udevice *dev) +{ + return (struct dma_ops *)dev->driver->ops; +} + +# if CONFIG_IS_ENABLED(OF_CONTROL) +# if CONFIG_IS_ENABLED(OF_PLATDATA) +int dma_get_by_index_platdata(struct udevice *dev, int index, + struct phandle_1_arg *cells, struct dma *dma) +{ + int ret; + + if (index != 0) + return -ENOSYS; + ret = uclass_get_device(UCLASS_DMA, 0, &dma->dev); + if (ret) + return ret; + dma->id = cells[0].id; + + return 0; +} +# else +static int dma_of_xlate_default(struct dma *dma, + struct ofnode_phandle_args *args) +{ + debug("%s(dma=%p)\n", __func__, dma); + + if (args->args_count > 1) { + pr_err("Invaild args_count: %d\n", args->args_count); + return -EINVAL; + } + + if (args->args_count) + dma->id = args->args[0]; + else + dma->id = 0; + + return 0; +} + +int dma_get_by_index(struct udevice *dev, int index, struct dma *dma) +{ + int ret; + struct ofnode_phandle_args args; + struct udevice *dev_dma; + const struct dma_ops *ops; + + debug("%s(dev=%p, index=%d, dma=%p)\n", __func__, dev, index, dma); + + assert(dma); + dma->dev = NULL; + + ret = dev_read_phandle_with_args(dev, "dmas", "#dma-cells", 0, index, + &args); + if (ret) { + pr_err("%s: dev_read_phandle_with_args failed: err=%d\n", + __func__, ret); + return ret; + } + + ret = uclass_get_device_by_ofnode(UCLASS_DMA, args.node, &dev_dma); + if (ret) { + pr_err("%s: uclass_get_device_by_ofnode failed: err=%d\n", + __func__, ret); + return ret; + } + + dma->dev = dev_dma; + + ops = dma_dev_ops(dev_dma); + + if (ops->of_xlate) + ret = ops->of_xlate(dma, &args); + else + ret = dma_of_xlate_default(dma, &args); + if (ret) { + pr_err("of_xlate() failed: %d\n", ret); + return ret; + } + + return dma_request(dev_dma, dma); +} +# endif /* OF_PLATDATA */ + +int dma_get_by_name(struct udevice *dev, const char *name, struct dma *dma) +{ + int index; + + debug("%s(dev=%p, name=%s, dma=%p)\n", __func__, dev, name, dma); + dma->dev = NULL; + + index = dev_read_stringlist_search(dev, "dma-names", name); + if (index < 0) { + pr_err("dev_read_stringlist_search() failed: %d\n", index); + return index; + } + + return dma_get_by_index(dev, index, dma); +} +# endif /* OF_CONTROL */ + +int dma_request(struct udevice *dev, struct dma *dma) +{ + struct dma_ops *ops = dma_dev_ops(dev); + + debug("%s(dev=%p, dma=%p)\n", __func__, dev, dma); + + dma->dev = dev; + + if (!ops->request) + return 0; + + return ops->request(dma); +} + +int dma_free(struct dma *dma) +{ + struct dma_ops *ops = dma_dev_ops(dma->dev); + + debug("%s(dma=%p)\n", __func__, dma); + + if (!ops->free) + return 0; + + return ops->free(dma); +} + +int dma_enable(struct dma *dma) +{ + struct dma_ops *ops = dma_dev_ops(dma->dev); + + debug("%s(dma=%p)\n", __func__, dma); + + if (!ops->enable) + return -ENOSYS; + + return ops->enable(dma); +} + +int dma_disable(struct dma *dma) +{ + struct dma_ops *ops = dma_dev_ops(dma->dev); + + debug("%s(dma=%p)\n", __func__, dma); + + if (!ops->disable) + return -ENOSYS; + + return ops->disable(dma); +} + +int dma_receive(struct dma *dma, void **dst) +{ + struct dma_ops *ops = dma_dev_ops(dma->dev); + + debug("%s(dma=%p)\n", __func__, dma); + + if (!ops->receive) + return -1; + + return ops->receive(dma, dst); +} + +int dma_send(struct dma *dma, void *src, size_t len) +{ + struct dma_ops *ops = dma_dev_ops(dma->dev); + + debug("%s(dma=%p)\n", __func__, dma); + + if (!ops->send) + return -1; + + return ops->send(dma, src, len); +} +#endif /* CONFIG_DMA_CHANNELS */ + int dma_get_device(u32 transfer_type, struct udevice **devp) { struct udevice *dev; diff --git a/include/dma-uclass.h b/include/dma-uclass.h index abf750a5ce..38f0fe94f8 100644 --- a/include/dma-uclass.h +++ b/include/dma-uclass.h @@ -13,6 +13,8 @@ #include +struct ofnode_phandle_args; + /* * struct dma_ops - Driver model DMA operations * @@ -20,6 +22,82 @@ * driver model. */ struct dma_ops { +#ifdef CONFIG_DMA_CHANNELS + /** + * of_xlate - Translate a client's device-tree (OF) DMA specifier. + * + * The DMA core calls this function as the first step in implementing + * a client's dma_get_by_*() call. + * + * If this function pointer is set to NULL, the DMA core will use a + * default implementation, which assumes #dma-cells = <1>, and that + * the DT cell contains a simple integer DMA Channel. + * + * At present, the DMA API solely supports device-tree. If this + * changes, other xxx_xlate() functions may be added to support those + * other mechanisms. + * + * @dma: The dma struct to hold the translation result. + * @args: The dma specifier values from device tree. + * @return 0 if OK, or a negative error code. + */ + int (*of_xlate)(struct dma *dma, + struct ofnode_phandle_args *args); + /** + * request - Request a translated DMA. + * + * The DMA core calls this function as the second step in + * implementing a client's dma_get_by_*() call, following a successful + * xxx_xlate() call, or as the only step in implementing a client's + * dma_request() call. + * + * @dma: The DMA struct to request; this has been filled in by + * a previoux xxx_xlate() function call, or by the caller of + * dma_request(). + * @return 0 if OK, or a negative error code. + */ + int (*request)(struct dma *dma); + /** + * free - Free a previously requested dma. + * + * This is the implementation of the client dma_free() API. + * + * @dma: The DMA to free. + * @return 0 if OK, or a negative error code. + */ + int (*free)(struct dma *dma); + /** + * enable() - Enable a DMA Channel. + * + * @dma: The DMA Channel to manipulate. + * @return zero on success, or -ve error code. + */ + int (*enable)(struct dma *dma); + /** + * disable() - Disable a DMA Channel. + * + * @dma: The DMA Channel to manipulate. + * @return zero on success, or -ve error code. + */ + int (*disable)(struct dma *dma); + /** + * receive() - Receive a DMA transfer. + * + * @dma: The DMA Channel to manipulate. + * @dst: The destination pointer. + * @return zero on success, or -ve error code. + */ + int (*receive)(struct dma *dma, void **dst); + /** + * send() - Send a DMA transfer. + * + * @dma: The DMA Channel to manipulate. + * @src: The source pointer. + * @len: Length of the data to be sent (number of bytes). + * @return zero on success, or -ve error code. + */ + int (*send)(struct dma *dma, void *src, size_t len); +#endif /* CONFIG_DMA_CHANNELS */ /** * transfer() - Issue a DMA transfer. The implementation must * wait until the transfer is done. diff --git a/include/dma.h b/include/dma.h index 89320f10d9..bf8123fa9e 100644 --- a/include/dma.h +++ b/include/dma.h @@ -1,6 +1,7 @@ /* - * (C) Copyright 2015 - * Texas Instruments Incorporated, + * Copyright (C) 2018 Álvaro Fernández Rojas + * Copyright (C) 2015 Texas Instruments Incorporated + * Written by Mugunthan V N * * SPDX-License-Identifier: GPL-2.0+ */ @@ -8,6 +9,9 @@ #ifndef _DMA_H_ #define _DMA_H_ +#include +#include + /* * enum dma_direction - dma transfer direction indicator * @DMA_MEM_TO_MEM: Memcpy mode @@ -37,6 +41,172 @@ struct dma_dev_priv { u32 supported; }; +#ifdef CONFIG_DMA_CHANNELS +/** + * A DMA is a feature of computer systems that allows certain hardware + * subsystems to access main system memory, independent of the CPU. + * DMA channels are typically generated externally to the HW module + * consuming them, by an entity this API calls a DMA provider. This API + * provides a standard means for drivers to enable and disable DMAs, and to + * copy, send and receive data using DMA. + * + * A driver that implements UCLASS_DMA is a DMA provider. A provider will + * often implement multiple separate DMAs, since the hardware it manages + * often has this capability. dma_uclass.h describes the interface which + * DMA providers must implement. + * + * DMA consumers/clients are the HW modules driven by the DMA channels. This + * header file describes the API used by drivers for those HW modules. + */ + +struct udevice; + +/** + * struct dma - A handle to (allowing control of) a single DMA. + * + * Clients provide storage for DMA handles. The content of the structure is + * managed solely by the DMA API and DMA drivers. A DMA struct is + * initialized by "get"ing the DMA struct. The DMA struct is passed to all + * other DMA APIs to identify which DMA channel to operate upon. + * + * @dev: The device which implements the DMA channel. + * @id: The DMA channel ID within the provider. + * + * Currently, the DMA API assumes that a single integer ID is enough to + * identify and configure any DMA channel for any DMA provider. If this + * assumption becomes invalid in the future, the struct could be expanded to + * either (a) add more fields to allow DMA providers to store additional + * information, or (b) replace the id field with an opaque pointer, which the + * provider would dynamically allocated during its .of_xlate op, and process + * during is .request op. This may require the addition of an extra op to clean + * up the allocation. + */ +struct dma { + struct udevice *dev; + /* + * Written by of_xlate. We assume a single id is enough for now. In the + * future, we might add more fields here. + */ + unsigned long id; +}; + +# if CONFIG_IS_ENABLED(OF_CONTROL) && CONFIG_IS_ENABLED(DMA) +struct phandle_1_arg; +int dma_get_by_index_platdata(struct udevice *dev, int index, + struct phandle_1_arg *cells, struct dma *dma); + +/** + * dma_get_by_index - Get/request a DMA by integer index. + * + * This looks up and requests a DMA. The index is relative to the client + * device; each device is assumed to have n DMAs associated with it somehow, + * and this function finds and requests one of them. The mapping of client + * device DMA indices to provider DMAs may be via device-tree properties, + * board-provided mapping tables, or some other mechanism. + * + * @dev: The client device. + * @index: The index of the DMA to request, within the client's list of + * DMA channels. + * @dma: A pointer to a DMA struct to initialize. + * @return 0 if OK, or a negative error code. + */ +int dma_get_by_index(struct udevice *dev, int index, struct dma *dma); + +/** + * dma_get_by_name - Get/request a DMA by name. + * + * This looks up and requests a DMA. The name is relative to the client + * device; each device is assumed to have n DMAs associated with it somehow, + * and this function finds and requests one of them. The mapping of client + * device DMA names to provider DMAs may be via device-tree properties, + * board-provided mapping tables, or some other mechanism. + * + * @dev: The client device. + * @name: The name of the DMA to request, within the client's list of + * DMA channels. + * @dma: A pointer to a DMA struct to initialize. + * @return 0 if OK, or a negative error code. + */ +int dma_get_by_name(struct udevice *dev, const char *name, struct dma *dma); +# else +static inline int dma_get_by_index(struct udevice *dev, int index, + struct dma *dma) +{ + return -ENOSYS; +} + +static inline int dma_get_by_name(struct udevice *dev, const char *name, + struct dma *dma) +{ + return -ENOSYS; +} +# endif + +/** + * dma_request - Request a DMA by provider-specific ID. + * + * This requests a DMA using a provider-specific ID. Generally, this function + * should not be used, since dma_get_by_index/name() provide an interface that + * better separates clients from intimate knowledge of DMA providers. + * However, this function may be useful in core SoC-specific code. + * + * @dev: The DMA provider device. + * @dma: A pointer to a DMA struct to initialize. The caller must + * have already initialized any field in this struct which the + * DMA provider uses to identify the DMA channel. + * @return 0 if OK, or a negative error code. + */ +int dma_request(struct udevice *dev, struct dma *dma); + +/** + * dma_free - Free a previously requested DMA. + * + * @dma: A DMA struct that was previously successfully requested by + * dma_request/get_by_*(). + * @return 0 if OK, or a negative error code. + */ +int dma_free(struct dma *dma); + +/** + * dma_enable() - Enable (turn on) a DMA channel. + * + * @dma: A DMA struct that was previously successfully requested by + * dma_request/get_by_*(). + * @return zero on success, or -ve error code. + */ +int dma_enable(struct dma *dma); + +/** + * dma_disable() - Disable (turn off) a DMA channel. + * + * @dma: A DMA struct that was previously successfully requested by + * dma_request/get_by_*(). + * @return zero on success, or -ve error code. + */ +int dma_disable(struct dma *dma); + +/** + * dma_receive() - Receive a DMA transfer. + * + * @dma: A DMA struct that was previously successfully requested by + * dma_request/get_by_*(). + * @dst: The destination pointer. + * @return zero on success, or -ve error code. + */ +int dma_receive(struct dma *dma, void **dst); + +/** + * dma_send() - Send a DMA transfer. + * + * @dma: A DMA struct that was previously successfully requested by + * dma_request/get_by_*(). + * @src: The source pointer. + * @len: Length of the data to be sent (number of bytes). + * @return zero on success, or -ve error code. + */ +int dma_send(struct dma *dma, void *src, size_t len); +#endif /* CONFIG_DMA_CHANNELS */ + /* * dma_get_device - get a DMA device which supports transfer * type of transfer_type From patchwork Wed Feb 21 16:10:28 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?= X-Patchwork-Id: 876176 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="HKKBOo3H"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zmjFJ25WSz9sWS for ; Thu, 22 Feb 2018 03:12:51 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 9004CC21DCA; Wed, 21 Feb 2018 16:11:33 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED, RCVD_IN_MSPIKE_H2, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 15F42C21EE5; Wed, 21 Feb 2018 16:11:05 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 1E51EC21F3A; Wed, 21 Feb 2018 16:10:53 +0000 (UTC) Received: from mail-wr0-f194.google.com (mail-wr0-f194.google.com [209.85.128.194]) by lists.denx.de (Postfix) with ESMTPS id BC6A1C21F03 for ; Wed, 21 Feb 2018 16:10:49 +0000 (UTC) Received: by mail-wr0-f194.google.com with SMTP id k9so5988763wre.9 for ; Wed, 21 Feb 2018 08:10:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=O861wzzrQZ8dfHjj/Vp9cpCIlQwn9qlYPi8i0hR88nM=; b=HKKBOo3Htwf9nZ/vwzBumKCTtgHoIvm2K2C4c8zG+3iqfLsYb7UnEFXOI1i9jy4Mv6 eQLp23Ay4E41TdXgaEUPyp45cYCFgthpVgFJ9r5Vfv2A5b/7jpIO5+b7pqqKqdHY7i4D A09QhqedW/rCPZ6y+FujVkXqgfn2ytFAwIAJ9RB62EjwJaRVgmuCWDVRE8IUSIipCV0f KRq3gQ1qn7LEa/kKvDHDb2yIHTIWMTCgptowYBP/VhdrVAVQEO5/Zb6Hl9ed86yut/TM chlFY2Elh3qnHUOSmyLUF2WjtmJUGcVxhm7bgfuytW3AxUbOzPBzzywvlQ7WKGASgHPf QHug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=O861wzzrQZ8dfHjj/Vp9cpCIlQwn9qlYPi8i0hR88nM=; b=i6AzM9Cqu30Ib1X0rAPlsKxXHACyGlFQwuMzljQrQAnpwIidHmzBlNk0NmhBP3sCQG Etg/X9LMt+bzV5OeEI/LabrVli1FBwQqSfhfTH5LzEQ3YvvwnDJbAbKK/g0yMM0Wpd44 KwEikNPEDKOSB5SgLygvVfGxCniKX2zXFLYk5v8zSjDZ/fxvlN+3hCyMytdG0gaq0uad oBYDg6+kM+JbkE+oy56BTlQqxNo7SGFKJXlu5v2hljqC/ZU3XOzw9MqPEocllM9DizYR ha1SiNSNwVQBWHhlvoZSApZn/wyA82QG8g7Emm38AdPPxajn5FGu5sTJ5b3vKNnOP9/K j8gg== X-Gm-Message-State: APf1xPDC2q4Pd1zPLWKFgNE5xkmZyl4eXtepn0ZJm31X0otpdinvLcY2 yfJCeOV9X1wOO5wf4HMX1q3YYEZD X-Google-Smtp-Source: AH8x225gRMU1HHd/lnXX9353ewGpd1DuR9x18uoYLOoMBZyvXqGB2vHI6j1W/Gfk30IRdFfOF3Gtew== X-Received: by 10.28.66.199 with SMTP id k68mr2574432wmi.104.1519229448708; Wed, 21 Feb 2018 08:10:48 -0800 (PST) Received: from skynet.lan (175.red-2-137-31.dynamicip.rima-tde.net. [2.137.31.175]) by smtp.gmail.com with ESMTPSA id l22sm1051357wre.52.2018.02.21.08.10.47 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 21 Feb 2018 08:10:47 -0800 (PST) From: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?= To: u-boot@lists.denx.de, daniel.schwierzeck@gmail.com, sjg@chromium.org, jagan@openedev.com, vigneshr@ti.com Date: Wed, 21 Feb 2018 17:10:28 +0100 Message-Id: <20180221161040.22246-4-noltari@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180221161040.22246-1-noltari@gmail.com> References: <20180212163858.25601-1-noltari@gmail.com> <20180221161040.22246-1-noltari@gmail.com> MIME-Version: 1.0 Subject: [U-Boot] [RFC v3 03/15] dma: add bcm6348-iudma support X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" BCM6348 IUDMA controller is present on multiple BMIPS (BCM63xx) SoCs. Signed-off-by: Álvaro Fernández Rojas --- v3: no changes v2: Fix dma rx burst config and select DMA_CHANNELS. drivers/dma/Kconfig | 9 + drivers/dma/Makefile | 1 + drivers/dma/bcm6348-iudma.c | 505 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 515 insertions(+) create mode 100644 drivers/dma/bcm6348-iudma.c diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig index 21b2c0dcaa..9afa158b51 100644 --- a/drivers/dma/Kconfig +++ b/drivers/dma/Kconfig @@ -19,6 +19,15 @@ config DMA_CHANNELS Enable channels support for DMA. Some DMA controllers have multiple channels which can either transfer data to/from different devices. +config BCM6348_IUDMA + bool "BCM6348 IUDMA driver" + depends on ARCH_BMIPS + select DMA_CHANNELS + help + Enable the BCM6348 IUDMA driver. + This driver support data transfer from devices to + memory and from memory to devices. + config TI_EDMA3 bool "TI EDMA3 driver" help diff --git a/drivers/dma/Makefile b/drivers/dma/Makefile index 39b78b2a3d..b2b4147349 100644 --- a/drivers/dma/Makefile +++ b/drivers/dma/Makefile @@ -9,6 +9,7 @@ obj-$(CONFIG_DMA) += dma-uclass.o obj-$(CONFIG_FSLDMAFEC) += MCD_tasksInit.o MCD_dmaApi.o MCD_tasks.o obj-$(CONFIG_APBH_DMA) += apbh_dma.o +obj-$(CONFIG_BCM6348_IUDMA) += bcm6348-iudma.o obj-$(CONFIG_FSL_DMA) += fsl_dma.o obj-$(CONFIG_TI_KSNAV) += keystone_nav.o keystone_nav_cfg.o obj-$(CONFIG_TI_EDMA3) += ti-edma3.o diff --git a/drivers/dma/bcm6348-iudma.c b/drivers/dma/bcm6348-iudma.c new file mode 100644 index 0000000000..8016a58be2 --- /dev/null +++ b/drivers/dma/bcm6348-iudma.c @@ -0,0 +1,505 @@ +/* + * Copyright (C) 2018 Álvaro Fernández Rojas + * + * Derived from linux/drivers/dma/bcm63xx-iudma.c: + * Copyright (C) 2015 Simon Arlott + * + * Derived from linux/drivers/net/ethernet/broadcom/bcm63xx_enet.c: + * Copyright (C) 2008 Maxime Bizon + * + * Derived from bcm963xx_4.12L.06B_consumer/shared/opensource/include/bcm963xx/63268_map_part.h: + * Copyright (C) 2000-2010 Broadcom Corporation + * + * Derived from bcm963xx_4.12L.06B_consumer/bcmdrivers/opensource/net/enet/impl4/bcmenet.c: + * Copyright (C) 2010 Broadcom Corporation + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +DECLARE_GLOBAL_DATA_PTR; + +#define ALIGN_END_ADDR(type, ptr, size) \ + ((unsigned long)(ptr) + roundup((size) * sizeof(type), \ + ARCH_DMA_MINALIGN)) + +/* DMA Channels */ +#define DMA_CHAN_FLOWC(x) ((x) >> 1) +#define DMA_CHAN_FLOWC_MAX 8 +#define DMA_CHAN_MAX 16 +#define DMA_CHAN_SIZE 0x10 +#define DMA_CHAN_TOUT 500 + +/* DMA Global Configuration register */ +#define DMA_CFG_REG 0x00 +#define DMA_CFG_ENABLE_SHIFT 0 +#define DMA_CFG_ENABLE_MASK (1 << DMA_CFG_ENABLE_SHIFT) +#define DMA_CFG_FLOWC_ENABLE(x) BIT(DMA_CHAN_FLOWC(x) + 1) +#define DMA_CFG_NCHANS_SHIFT 24 +#define DMA_CFG_NCHANS_MASK (0xf << DMA_CFG_NCHANS_SHIFT) + +/* DMA Global Flow Control Threshold registers */ +#define DMA_FLOWC_THR_LO_REG(x) (0x04 + DMA_CHAN_FLOWC(x) * 0x0c) +#define DMA_FLOWC_THR_LO_SHIFT 0 +#define DMA_FLOWC_THR_LO_MASK (5 << DMA_FLOWC_THR_LO_SHIFT) + +#define DMA_FLOWC_THR_HI_REG(x) (0x08 + DMA_CHAN_FLOWC(x) * 0x0c) +#define DMA_FLOWC_THR_HI_SHIFT 0 +#define DMA_FLOWC_THR_HI_MASK (10 << DMA_FLOWC_THR_HI_SHIFT) + +/* DMA Global Flow Control Buffer Allocation registers */ +#define DMA_FLOWC_ALLOC_REG(x) (0x0c + DMA_CHAN_FLOWC(x) * 0x0c) +#define DMA_FLOWC_ALLOC_FORCE_SHIFT 31 +#define DMA_FLOWC_ALLOC_FORCE_MASK (1 << DMA_FLOWC_ALLOC_FORCE_SHIFT) + +/* DMA Global Reset register */ +#define DMA_RST_REG 0x34 +#define DMA_RST_CHAN_SHIFT 0 +#define DMA_RST_CHAN_MASK(x) (1 << x) + +/* DMA Channel Configuration register */ +#define DMAC_CFG_REG(x) (DMA_CHAN_SIZE * (x) + 0x00) +#define DMAC_CFG_ENABLE_SHIFT 0 +#define DMAC_CFG_ENABLE_MASK (1 << DMAC_CFG_ENABLE_SHIFT) +#define DMAC_CFG_PKT_HALT_SHIFT 1 +#define DMAC_CFG_PKT_HALT_MASK (1 << DMAC_CFG_PKT_HALT_SHIFT) +#define DMAC_CFG_BRST_HALT_SHIFT 2 +#define DMAC_CFG_BRST_HALT_MASK (1 << DMAC_CFG_BRST_HALT_SHIFT) + +/* DMA Channel Interrupts registers */ +#define DMAC_IR_ST_REG(x) (DMA_CHAN_SIZE * (x) + 0x04) +#define DMAC_IR_EN_REG(x) (DMA_CHAN_SIZE * (x) + 0x08) + +#define DMAC_IR_DONE_SHIFT 2 +#define DMAC_IR_DONE_MASK (1 << DMAC_IR_DONE_SHIFT) + +/* DMA Channel Max Burst Length register */ +#define DMAC_BURST_REG(x) (DMA_CHAN_SIZE * (x) + 0x0c) +#define DMAC_BURST_MAX_SHIFT 0 +#define DMAC_BURST_MAX_MASK (16 << DMAC_BURST_MAX_SHIFT) + +/* DMA SRAM Descriptor Ring Start register */ +#define DMAS_RSTART_REG(x) (DMA_CHAN_SIZE * (x) + 0x00) + +/* DMA SRAM State/Bytes done/ring offset register */ +#define DMAS_STATE_DATA_REG(x) (DMA_CHAN_SIZE * (x) + 0x04) + +/* DMA SRAM Buffer Descriptor status and length register */ +#define DMAS_DESC_LEN_STATUS_REG(x) (DMA_CHAN_SIZE * (x) + 0x08) + +/* DMA SRAM Buffer Descriptor status and length register */ +#define DMAS_DESC_BASE_BUFPTR_REG(x) (DMA_CHAN_SIZE * (x) + 0x0c) + +struct bcm6348_dma_desc { + uint16_t length; + + uint16_t status; +#define DMAD_ST_CRC_SHIFT 8 +#define DMAD_ST_CRC_MASK (1 << DMAD_ST_CRC_SHIFT) +#define DMAD_ST_WRAP_SHIFT 12 +#define DMAD_ST_WRAP_MASK (1 << DMAD_ST_WRAP_SHIFT) +#define DMAD_ST_SOP_SHIFT 13 +#define DMAD_ST_SOP_MASK (1 << DMAD_ST_SOP_SHIFT) +#define DMAD_ST_EOP_SHIFT 14 +#define DMAD_ST_EOP_MASK (1 << DMAD_ST_EOP_SHIFT) +#define DMAD_ST_OWN_SHIFT 15 +#define DMAD_ST_OWN_MASK (1 << DMAD_ST_OWN_SHIFT) + + uint32_t address; +} __attribute__((aligned(1))); + +struct bcm6348_chan_priv { + void __iomem *dma_ring; + uint8_t dma_ring_size; + uint8_t desc_id; +}; + +struct bcm6348_iudma_priv { + void __iomem *base; + void __iomem *chan; + void __iomem *sram; + struct bcm6348_chan_priv **ch_priv; + uint8_t n_channels; +}; + +static bool bcm6348_iudma_chan_is_rx(uint8_t ch) +{ + return !(ch & 1); +} + +static void bcm6348_iudma_chan_stop(struct bcm6348_iudma_priv *priv, + uint8_t ch) +{ + unsigned int timeout = DMA_CHAN_TOUT; + + /* disable dma channel interrupts */ + writel_be(0, priv->chan + DMAC_IR_EN_REG(ch)); + + do { + uint32_t cfg, halt; + + if (timeout > DMA_CHAN_TOUT / 2) + halt = DMAC_CFG_PKT_HALT_MASK; + else + halt = DMAC_CFG_BRST_HALT_MASK; + + /* try to stop dma channel */ + writel_be(halt, priv->chan + DMAC_CFG_REG(ch)); + mb(); + + /* check if channel was stopped */ + cfg = readl_be(priv->chan + DMAC_CFG_REG(ch)); + if (!(cfg & DMAC_CFG_ENABLE_MASK)) + break; + + udelay(1); + } while (--timeout); + + if (!timeout) + pr_err("unable to stop channel %u\n", ch); + + /* reset dma channel */ + setbits_be32(priv->base + DMA_RST_REG, DMA_RST_CHAN_MASK(ch)); + clrbits_be32(priv->base + DMA_RST_REG, DMA_RST_CHAN_MASK(ch)); +} + +static int bcm6348_iudma_disable(struct dma *dma) +{ + struct bcm6348_iudma_priv *priv = dev_get_priv(dma->dev); + + bcm6348_iudma_chan_stop(priv, dma->id); + + if (bcm6348_iudma_chan_is_rx(dma->id)) + writel_be(DMA_FLOWC_ALLOC_FORCE_MASK, + DMA_FLOWC_ALLOC_REG(dma->id)); + + return 0; +} + +static int bcm6348_iudma_enable(struct dma *dma) +{ + struct bcm6348_iudma_priv *priv = dev_get_priv(dma->dev); + struct bcm6348_chan_priv *ch_priv = priv->ch_priv[dma->id]; + struct bcm6348_dma_desc *dma_desc; + uint8_t i; + + /* init dma rings */ + dma_desc = ch_priv->dma_ring; + for (i = 0; i < ch_priv->dma_ring_size; i++) { + if (bcm6348_iudma_chan_is_rx(dma->id)) { + dma_desc->status = DMAD_ST_OWN_MASK; + dma_desc->length = PKTSIZE_ALIGN; + dma_desc->address = virt_to_phys(net_rx_packets[i]); + } else { + dma_desc->status = 0; + dma_desc->length = 0; + dma_desc->address = 0; + } + + if (i == ch_priv->dma_ring_size - 1) + dma_desc->status |= DMAD_ST_WRAP_MASK; + + if (bcm6348_iudma_chan_is_rx(dma->id)) + writel_be(1, + priv->base + DMA_FLOWC_ALLOC_REG(dma->id)); + + dma_desc++; + } + + /* init to first descriptor */ + ch_priv->desc_id = 0; + + /* force cache writeback */ + flush_dcache_range((ulong)ch_priv->dma_ring, + ALIGN_END_ADDR(struct bcm6348_dma_desc, ch_priv->dma_ring, + ch_priv->dma_ring_size)); + + /* clear sram */ + writel_be(0, priv->sram + DMAS_STATE_DATA_REG(dma->id)); + writel_be(0, priv->sram + DMAS_DESC_LEN_STATUS_REG(dma->id)); + writel_be(0, priv->sram + DMAS_DESC_BASE_BUFPTR_REG(dma->id)); + + /* set dma ring start */ + writel_be(virt_to_phys(ch_priv->dma_ring), + priv->sram + DMAS_RSTART_REG(dma->id)); + + /* set flow control */ + if (bcm6348_iudma_chan_is_rx(dma->id)) { + u32 val; + + setbits_be32(priv->base + DMA_CFG_REG, + DMA_CFG_FLOWC_ENABLE(dma->id)); + + val = ch_priv->dma_ring_size / 3; + writel_be(val, priv->base + DMA_FLOWC_THR_LO_REG(dma->id)); + + val = (ch_priv->dma_ring_size * 2) / 3; + writel_be(val, priv->base + DMA_FLOWC_THR_HI_REG(dma->id)); + } + + /* set dma max burst */ + writel_be(ch_priv->dma_ring_size, + priv->chan + DMAC_BURST_REG(dma->id)); + + /* clear interrupts */ + writel_be(DMAC_IR_DONE_MASK, priv->chan + DMAC_IR_ST_REG(dma->id)); + writel_be(0, priv->chan + DMAC_IR_EN_REG(dma->id)); + + setbits_be32(priv->chan + DMAC_CFG_REG(dma->id), DMAC_CFG_ENABLE_MASK); + + return 0; +} + +static int bcm6348_iudma_request(struct dma *dma) +{ + struct bcm6348_iudma_priv *priv = dev_get_priv(dma->dev); + struct bcm6348_chan_priv *ch_priv; + + /* check if channel is valid */ + if (dma->id >= priv->n_channels) + return -ENODEV; + + /* alloc channel private data */ + priv->ch_priv[dma->id] = calloc(1, sizeof(struct bcm6348_chan_priv)); + if (!priv->ch_priv[dma->id]) + return -ENOMEM; + ch_priv = priv->ch_priv[dma->id]; + + /* alloc dma ring */ + if (bcm6348_iudma_chan_is_rx(dma->id)) + ch_priv->dma_ring_size = PKTBUFSRX; + else + ch_priv->dma_ring_size = 1; + ch_priv->dma_ring = + malloc_cache_aligned(sizeof(struct bcm6348_dma_desc) * + ch_priv->dma_ring_size); + if (!ch_priv->dma_ring) + return -ENOMEM; + + return 0; +} + +static int bcm6348_iudma_receive(struct dma *dma, void **dst) +{ + struct bcm6348_iudma_priv *priv = dev_get_priv(dma->dev); + struct bcm6348_chan_priv *ch_priv = priv->ch_priv[dma->id]; + struct bcm6348_dma_desc *dma_desc; + void __iomem *dma_buff; + uint16_t status; + int ret; + + /* get dma ring descriptor address */ + dma_desc = ch_priv->dma_ring; + dma_desc += ch_priv->desc_id; + + /* invalidate cache data */ + invalidate_dcache_range((ulong)dma_desc, + ALIGN_END_ADDR(struct bcm6348_dma_desc, dma_desc, 1)); + + /* check dma own */ + if (dma_desc->status & DMAD_ST_OWN_MASK) + return 0; + + /* check dma end */ + if (!(dma_desc->status & DMAD_ST_EOP_MASK)) + return -EINVAL; + + /* get dma buff descriptor address */ + dma_buff = phys_to_virt(dma_desc->address); + + /* invalidate cache data */ + invalidate_dcache_range((ulong)dma_buff, + (ulong)(dma_buff + PKTSIZE_ALIGN)); + + /* get dma data */ + *dst = dma_buff; + ret = dma_desc->length; + + /* reinit dma descriptor */ + status = dma_desc->status & DMAD_ST_WRAP_MASK; + status |= DMAD_ST_OWN_MASK; + + dma_desc->length = PKTSIZE_ALIGN; + dma_desc->status = status; + + /* flush cache */ + flush_dcache_range((ulong)dma_desc, + ALIGN_END_ADDR(struct bcm6348_dma_desc, dma_desc, 1)); + + /* set flow control buffer alloc */ + writel_be(1, priv->base + DMA_FLOWC_ALLOC_REG(dma->id)); + + /* enable dma */ + setbits_be32(priv->chan + DMAC_CFG_REG(dma->id), DMAC_CFG_ENABLE_MASK); + + /* set interrupt */ + writel_be(DMAC_IR_DONE_MASK, priv->chan + DMAC_IR_EN_REG(dma->id)); + + /* increment dma descriptor */ + ch_priv->desc_id = (ch_priv->desc_id + 1) % ch_priv->dma_ring_size; + + return ret - 4; +} + +static int bcm6348_iudma_send(struct dma *dma, void *src, size_t len) +{ + struct bcm6348_iudma_priv *priv = dev_get_priv(dma->dev); + struct bcm6348_chan_priv *ch_priv = priv->ch_priv[dma->id]; + struct bcm6348_dma_desc *dma_desc; + uint16_t val; + + /* get dma ring descriptor address */ + dma_desc = ch_priv->dma_ring; + dma_desc += ch_priv->desc_id; + + dma_desc->address = virt_to_phys(src); + + /* config dma descriptor */ + val = (DMAD_ST_OWN_MASK | + DMAD_ST_EOP_MASK | + DMAD_ST_CRC_MASK | + DMAD_ST_SOP_MASK); + if (ch_priv->desc_id == ch_priv->dma_ring_size - 1) + val |= DMAD_ST_WRAP_MASK; + + dma_desc->length = len; + dma_desc->status = val; + + /* flush cache */ + flush_dcache_range((ulong)src, (ulong)src + PKTSIZE_ALIGN); + + /* flush cache */ + flush_dcache_range((ulong)dma_desc, + ALIGN_END_ADDR(struct bcm6348_dma_desc, dma_desc, 1)); + + /* enable dma */ + setbits_be32(priv->chan + DMAC_CFG_REG(dma->id), DMAC_CFG_ENABLE_MASK); + + /* set interrupt */ + writel_be(DMAC_IR_DONE_MASK, priv->chan + DMAC_IR_EN_REG(dma->id)); + + /* poll dma status */ + do { + /* invalidate cache */ + invalidate_dcache_range((ulong)dma_desc, + ALIGN_END_ADDR(struct bcm6348_dma_desc, dma_desc, 1)); + + if (!(dma_desc->status & DMAD_ST_OWN_MASK)) + break; + } while(1); + + /* increment dma descriptor */ + ch_priv->desc_id = (ch_priv->desc_id + 1) % ch_priv->dma_ring_size; + + return 0; +} + +static const struct dma_ops bcm6348_iudma_ops = { + .disable = bcm6348_iudma_disable, + .enable = bcm6348_iudma_enable, + .request = bcm6348_iudma_request, + .receive = bcm6348_iudma_receive, + .send = bcm6348_iudma_send, +}; + +static const struct udevice_id bcm6348_iudma_ids[] = { + { .compatible = "brcm,bcm6348-iudma", }, + { /* sentinel */ } +}; + +static int bcm6348_iudma_probe(struct udevice *dev) +{ + struct dma_dev_priv *uc_priv = dev_get_uclass_priv(dev); + struct bcm6348_iudma_priv *priv = dev_get_priv(dev); + fdt_addr_t addr; + uint8_t ch; + int i; + + uc_priv->supported = DMA_SUPPORTS_DEV_TO_MEM | + DMA_SUPPORTS_MEM_TO_DEV; + + /* try to enable clocks */ + for (i = 0; ; i++) { + struct clk clk; + int ret; + + ret = clk_get_by_index(dev, i, &clk); + if (ret < 0) + break; + if (clk_enable(&clk)) + pr_err("failed to enable clock %d\n", i); + clk_free(&clk); + } + + /* try to perform resets */ + for (i = 0; ; i++) { + struct reset_ctl reset; + int ret; + + ret = reset_get_by_index(dev, i, &reset); + if (ret < 0) + break; + if (reset_deassert(&reset)) + pr_err("failed to deassert reset %d\n", i); + reset_free(&reset); + } + + /* dma global base address */ + addr = devfdt_get_addr_name(dev, "dma"); + if (addr == FDT_ADDR_T_NONE) + return -EINVAL; + priv->base = ioremap(addr, 0); + + /* dma channels base address */ + addr = devfdt_get_addr_name(dev, "dma-channels"); + if (addr == FDT_ADDR_T_NONE) + return -EINVAL; + priv->chan = ioremap(addr, 0); + + /* dma sram base address */ + addr = devfdt_get_addr_name(dev, "dma-sram"); + if (addr == FDT_ADDR_T_NONE) + return -EINVAL; + priv->sram = ioremap(addr, 0); + + /* disable dma controller */ + clrbits_be32(priv->base + DMA_CFG_REG, DMA_CFG_ENABLE_MASK); + + /* get number of channels */ + priv->n_channels = fdtdec_get_uint(gd->fdt_blob, dev_of_offset(dev), + "dma-channels", 8); + if (priv->n_channels > DMA_CHAN_MAX) + return -EINVAL; + + /* alloc channel private data pointers */ + priv->ch_priv = calloc(priv->n_channels, + sizeof(struct bcm6348_chan_priv*)); + if (!priv->ch_priv) + return -ENOMEM; + + /* stop dma channels */ + for (ch = 0; ch < priv->n_channels; ch++) + bcm6348_iudma_chan_stop(priv, ch); + + /* enable dma controller */ + setbits_be32(priv->base + DMA_CFG_REG, DMA_CFG_ENABLE_MASK); + + return 0; +} + +U_BOOT_DRIVER(bcm6348_iudma) = { + .name = "bcm6348_iudma", + .id = UCLASS_DMA, + .of_match = bcm6348_iudma_ids, + .ops = &bcm6348_iudma_ops, + .priv_auto_alloc_size = sizeof(struct bcm6348_iudma_priv), + .probe = bcm6348_iudma_probe, +}; From patchwork Wed Feb 21 16:10:29 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?= X-Patchwork-Id: 876178 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="mOrOMI1w"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zmjHf04jYz9sWg for ; Thu, 22 Feb 2018 03:14:50 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id DCBECC21F22; Wed, 21 Feb 2018 16:13:08 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED, RCVD_IN_MSPIKE_H2, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 2D916C21F3B; Wed, 21 Feb 2018 16:11:10 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 4C4B7C21F35; Wed, 21 Feb 2018 16:10:53 +0000 (UTC) Received: from mail-wr0-f194.google.com (mail-wr0-f194.google.com [209.85.128.194]) by lists.denx.de (Postfix) with ESMTPS id 67282C21E57 for ; Wed, 21 Feb 2018 16:10:50 +0000 (UTC) Received: by mail-wr0-f194.google.com with SMTP id m5so6011637wrg.1 for ; Wed, 21 Feb 2018 08:10:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Rd6HD7ixBUx0WtRa5PNKUOhTObUAvKwW/0ytdu1hwKU=; b=mOrOMI1wbjWpocD9/CuEcsG/24lIPpVfFWaYU1AEdomzAx2ZeuZffqIaTacEjoqkG7 RpsKVL7J9WLsE7xglxO6qKW1/XT9r2DjEqQU89UN9nnGK2lauyVNotkthenEl4Aj/TJk nhi9gnY5XJ++Uvm7ndciXHg2dU0E4SG89aPJNckQV1frBhfSe89p/2mvcLBiMd/AIhSw GInzxLigI/HdTzAXcaS5WJ+jqtnxjPSwOL7H7aZ8yZTQbfiagBKm9vJeeQVsmU7lNjAH jGA46xqPUkq76mR2LZias+Xj/HE35jYlbnk4p3mNKvNuHYqflHI1ReuJYN87KKZgG12K Nk+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Rd6HD7ixBUx0WtRa5PNKUOhTObUAvKwW/0ytdu1hwKU=; b=d560qLPAxx19jjjkJSc+k0CtoM5/78U2Tlorg8Z4kPQ0R/8xBAaWFEP9NfzNQLwVih sMYTdq2gMIQk/o81Wr4igXkSooLyLw3B4lynnampYSJI41AEG73Ys3ytCX9U9hJsZyan 4u9UwPf37ka9wE42zVeiXOIqxEyGTeJ5eZ5uwbnQHShrVSWNgwUFAftuQKSBRBa7Siq8 WoENbTBFZPZqxNmFHoJF5/btQ7ZwsrxTijNSdiMtPL+WmE2CpYOBULsspmtawbIac2vR qRkRBQ+pJjS+uZ+cxO/5kYwaqzpU4hgAWyCtNHnYiks8Dv+qGyiAnPAMV9c7Am27Rgxa fITg== X-Gm-Message-State: APf1xPBmInXId+fIYVeldDq/1hgIr3dxajq8hQg1d5wjzzr8WdPe1yd7 lpk6tcown9chV2r94v1pn2rM9+ui X-Google-Smtp-Source: AH8x224YmyZcicXGw+Gsz2m5LbV2wlC2h5XSdkb1UbYOJhQvHSR+cvHZ7czWEEmLfdkWdU/dyqS+ww== X-Received: by 10.28.238.18 with SMTP id m18mr2572728wmh.146.1519229449833; Wed, 21 Feb 2018 08:10:49 -0800 (PST) Received: from skynet.lan (175.red-2-137-31.dynamicip.rima-tde.net. [2.137.31.175]) by smtp.gmail.com with ESMTPSA id l22sm1051357wre.52.2018.02.21.08.10.48 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 21 Feb 2018 08:10:49 -0800 (PST) From: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?= To: u-boot@lists.denx.de, daniel.schwierzeck@gmail.com, sjg@chromium.org, jagan@openedev.com, vigneshr@ti.com Date: Wed, 21 Feb 2018 17:10:29 +0100 Message-Id: <20180221161040.22246-5-noltari@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180221161040.22246-1-noltari@gmail.com> References: <20180212163858.25601-1-noltari@gmail.com> <20180221161040.22246-1-noltari@gmail.com> MIME-Version: 1.0 Subject: [U-Boot] [RFC v3 04/15] bmips: bcm6338: add bcm6348-iudma support X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Signed-off-by: Álvaro Fernández Rojas --- v3: no changes v2: no changes arch/mips/dts/brcm,bcm6338.dtsi | 14 ++++++++++++++ include/dt-bindings/dma/bcm6338-dma.h | 15 +++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 include/dt-bindings/dma/bcm6338-dma.h diff --git a/arch/mips/dts/brcm,bcm6338.dtsi b/arch/mips/dts/brcm,bcm6338.dtsi index 0cab44cb8d..4125f71d9f 100644 --- a/arch/mips/dts/brcm,bcm6338.dtsi +++ b/arch/mips/dts/brcm,bcm6338.dtsi @@ -5,6 +5,7 @@ */ #include +#include #include #include #include "skeleton.dtsi" @@ -131,5 +132,18 @@ reg = <0xfffe3100 0x38>; u-boot,dm-pre-reloc; }; + + iudma: dma-controller@fffe2400 { + compatible = "brcm,bcm6348-iudma"; + reg = <0xfffe2400 0x1c>, + <0xfffe2500 0x60>, + <0xfffe2600 0x60>; + reg-names = "dma", + "dma-channels", + "dma-sram"; + #dma-cells = <1>; + dma-channels = <6>; + resets = <&periph_rst BCM6338_RST_DMAMEM>; + }; }; }; diff --git a/include/dt-bindings/dma/bcm6338-dma.h b/include/dt-bindings/dma/bcm6338-dma.h new file mode 100644 index 0000000000..5dd66239b4 --- /dev/null +++ b/include/dt-bindings/dma/bcm6338-dma.h @@ -0,0 +1,15 @@ +/* + * Copyright (C) 2018 Álvaro Fernández Rojas + * + * Derived from linux/drivers/net/ethernet/broadcom/bcm63xx_enet.c + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#ifndef __DT_BINDINGS_DMA_BCM6338_H +#define __DT_BINDINGS_DMA_BCM6338_H + +#define BCM6338_DMA_ENET_RX 0 +#define BCM6338_DMA_ENET_TX 1 + +#endif /* __DT_BINDINGS_DMA_BCM6338_H */ From patchwork Wed Feb 21 16:10:30 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?= X-Patchwork-Id: 876177 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="irjTy6Xs"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zmjGp4zbnz9sWs for ; Thu, 22 Feb 2018 03:14:10 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 4770DC21EFD; Wed, 21 Feb 2018 16:12:10 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED, RCVD_IN_MSPIKE_H2, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 06536C21F32; Wed, 21 Feb 2018 16:11:06 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 9BEEAC21C93; Wed, 21 Feb 2018 16:10:55 +0000 (UTC) Received: from mail-wr0-f195.google.com (mail-wr0-f195.google.com [209.85.128.195]) by lists.denx.de (Postfix) with ESMTPS id C7CF0C21D74 for ; Wed, 21 Feb 2018 16:10:51 +0000 (UTC) Received: by mail-wr0-f195.google.com with SMTP id u15so6016685wrg.3 for ; Wed, 21 Feb 2018 08:10:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Kq7KTKq55ciFKV8IZlpuMMLUIGWCUrayNHN5yDSry5A=; b=irjTy6XsVF3S9HNWULZNmGp5I3QT8GZ0tXqh9jLibJGjq6oUDNHFiFt3K+/iWfH2HW DzSiNwH9ZRSkjHTVAhl8MfZ3ZJxhPNmJez0mVEKm+yzQ9MoQpy9KidbpbyqakF0xjIFA eKsL2zxPJmPNG6gM75N0CxZPhDPrXOedoOwo0ZVtZRcXfSLMhN8o4/XivRkEHRSqLY+N AGSCJmrYVVYAgoyr0NdO7+Hj3ISDQKKVZqiLvbZjz5OKySMeWt4l+z4I8bdZCBetsTbC p+8OSN88lm0klQdCm2XwZWTKvTa35Zm7beKkABzpaFzLLQ2vj7BXknLeWlRp7vukcEhk xQjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Kq7KTKq55ciFKV8IZlpuMMLUIGWCUrayNHN5yDSry5A=; b=ocDLhOSqZIQdkTtHrn9Zkt3VI0h+2XgjRu33NzIbhKBnQboeZTHMIIaICVCMhRWWx9 b8IpzRz6Q8sfPyxm/pHh23UjeMVov56Bh2cRWDtoUhPEyZJNkBzL7OjRNc7wRio9rDng 82EefhPiEw0KpfqHRZVm5oQ04yC95G6sochmwacyb6mPAY177/5CxInzy+QClSb/YCUm 8a603E7h/l8RR7GpHkDbK1yuIsscBWcbYAA+AHsd2ODlYELtm+ZqkQHkKc39krlVrcXv /4XLOn2pSnhpiULs5Cf4Siw/rXXVhXD8X0sOTG+AY14totIJ763yprwUalZXt2xPmeX1 ERtw== X-Gm-Message-State: APf1xPBrx/5XaCYQt+67N652kf9gb/wMl7xQxT7X0EIvnTqnfiUeCKxx PabddRzntEcWmgoP27eWbdGz5gtQ X-Google-Smtp-Source: AH8x2240F3dFCz+mi+YTLGmNQBcr98d3AkFMBLMaZZnzTGXuSbb8DMzYFm8tMN6VVdFaiCrf8avewQ== X-Received: by 10.28.241.2 with SMTP id p2mr2385204wmh.105.1519229451267; Wed, 21 Feb 2018 08:10:51 -0800 (PST) Received: from skynet.lan (175.red-2-137-31.dynamicip.rima-tde.net. [2.137.31.175]) by smtp.gmail.com with ESMTPSA id l22sm1051357wre.52.2018.02.21.08.10.49 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 21 Feb 2018 08:10:50 -0800 (PST) From: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?= To: u-boot@lists.denx.de, daniel.schwierzeck@gmail.com, sjg@chromium.org, jagan@openedev.com, vigneshr@ti.com Date: Wed, 21 Feb 2018 17:10:30 +0100 Message-Id: <20180221161040.22246-6-noltari@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180221161040.22246-1-noltari@gmail.com> References: <20180212163858.25601-1-noltari@gmail.com> <20180221161040.22246-1-noltari@gmail.com> MIME-Version: 1.0 Subject: [U-Boot] [RFC v3 05/15] bmips: bcm6348: add bcm6348-iudma support X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Signed-off-by: Álvaro Fernández Rojas --- v3: no changes v2: no changes arch/mips/dts/brcm,bcm6348.dtsi | 16 ++++++++++++++++ include/dt-bindings/dma/bcm6348-dma.h | 17 +++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 include/dt-bindings/dma/bcm6348-dma.h diff --git a/arch/mips/dts/brcm,bcm6348.dtsi b/arch/mips/dts/brcm,bcm6348.dtsi index 92fb91afc1..d774c59665 100644 --- a/arch/mips/dts/brcm,bcm6348.dtsi +++ b/arch/mips/dts/brcm,bcm6348.dtsi @@ -5,6 +5,7 @@ */ #include +#include #include #include #include "skeleton.dtsi" @@ -160,5 +161,20 @@ reg = <0xfffe2300 0x38>; u-boot,dm-pre-reloc; }; + + iudma: dma-controller@fffe7000 { + compatible = "brcm,bcm6348-iudma"; + reg = <0xfffe7000 0x1c>, + <0xfffe7100 0x40>, + <0xfffe7200 0x40>; + reg-names = "dma", + "dma-channels", + "dma-sram"; + #dma-cells = <1>; + dma-channels = <4>; + clocks = <&periph_clk BCM6348_CLK_ENET>; + resets = <&periph_rst BCM6348_RST_ENET>, + <&periph_rst BCM6348_RST_DMAMEM>; + }; }; }; diff --git a/include/dt-bindings/dma/bcm6348-dma.h b/include/dt-bindings/dma/bcm6348-dma.h new file mode 100644 index 0000000000..a1d3a6456d --- /dev/null +++ b/include/dt-bindings/dma/bcm6348-dma.h @@ -0,0 +1,17 @@ +/* + * Copyright (C) 2018 Álvaro Fernández Rojas + * + * Derived from linux/drivers/net/ethernet/broadcom/bcm63xx_enet.c + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#ifndef __DT_BINDINGS_DMA_BCM6348_H +#define __DT_BINDINGS_DMA_BCM6348_H + +#define BCM6348_DMA_ENET0_RX 0 +#define BCM6348_DMA_ENET0_TX 1 +#define BCM6348_DMA_ENET1_RX 2 +#define BCM6348_DMA_ENET1_TX 3 + +#endif /* __DT_BINDINGS_DMA_BCM6348_H */ From patchwork Wed Feb 21 16:10:31 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?= X-Patchwork-Id: 876183 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="oUXwMZ3J"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zmjL51dqGz9sWw for ; Thu, 22 Feb 2018 03:16:57 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 545C3C21DE8; Wed, 21 Feb 2018 16:14:52 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED, RCVD_IN_MSPIKE_H2, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 2657AC21F29; Wed, 21 Feb 2018 16:11:24 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id B34B2C21F2F; Wed, 21 Feb 2018 16:10:56 +0000 (UTC) Received: from mail-wr0-f195.google.com (mail-wr0-f195.google.com [209.85.128.195]) by lists.denx.de (Postfix) with ESMTPS id E00CAC21F0B for ; Wed, 21 Feb 2018 16:10:52 +0000 (UTC) Received: by mail-wr0-f195.google.com with SMTP id v65so5978006wrc.11 for ; Wed, 21 Feb 2018 08:10:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=xiepcWmZl5jt/4oWvpbAuMg0b/2NmncOMGbXjQ/UBgE=; b=oUXwMZ3JLq2lIC9X7OEGFXE9O3hsY4nzfnkOkNzfbnor9bMqA9AdlBTYCJ6ifUbYFZ mxix/lldBTj8eMrtxInaxnVRfPZuraOWACeKGGUElSed9WKKoQSKRIZ9Fl/qpFcgEjSb YV62OpFAIOrRLcctVxVtxbMnQ+F7xgAYONrYY5MONaUmRDMBsFtfwW37gfyKtw/uKJd+ tvO5Of3wsq7oqAMV/Anyot3irj7u0HAK8Rq44BItMo37kcYJRK+V+BoMbw39+q6bDUZF 2gzvZX3JwzNAND5+tYK+1rMtw/tE3pWuLcUzUTbItkB/mk/xW/oB7mNx2xMSD1GNwxjK qjAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=xiepcWmZl5jt/4oWvpbAuMg0b/2NmncOMGbXjQ/UBgE=; b=omkAoJPdSprLOV76UnI8wZE6mCz/KBcn4ueyrxZTC89iP1iQhZ9USn+/T8t1jQSBeI lJ/zqltdaLIhMXiPJJKjgyADiEVHWbWmmSYlEEFFVgrZb3/FvJmjyrUkqkaF/SiWlR9U 4qpJ8WwlBC/ifSeZIAOJQHz+BMW6iY4zHp4z+H8Azn8HyMdAsKyb/f7Wj/IVlCXPWbgh HoXtO6TU6dU3PFs1nWbsZ8voEF0jEKMQrckhE9uIVLLcjMGwP/3nM1nWy6Vwrdoc1POT akfCgtUl3yzB/uZ4amKnHKXL0DYjIz6+tv5Ftg05p+FdRn9v1bDG9vr+d0jCJh+IQthj rTPg== X-Gm-Message-State: APf1xPCZw3HIK3EVWdofWDJA+63883T5JSGcwHp07U8i4sN6d5vXfHY0 o/62trbO5BENSiNdoB5HSewBG+Wi X-Google-Smtp-Source: AH8x224KcQviNakKr52z5aP1FqLNKbHdYM/xAd33djETmoWVkqURlfsBWfZ/+mS6r+6GiyaGfqClaA== X-Received: by 10.223.131.133 with SMTP id 5mr3207559wre.153.1519229452353; Wed, 21 Feb 2018 08:10:52 -0800 (PST) Received: from skynet.lan (175.red-2-137-31.dynamicip.rima-tde.net. [2.137.31.175]) by smtp.gmail.com with ESMTPSA id l22sm1051357wre.52.2018.02.21.08.10.51 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 21 Feb 2018 08:10:51 -0800 (PST) From: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?= To: u-boot@lists.denx.de, daniel.schwierzeck@gmail.com, sjg@chromium.org, jagan@openedev.com, vigneshr@ti.com Date: Wed, 21 Feb 2018 17:10:31 +0100 Message-Id: <20180221161040.22246-7-noltari@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180221161040.22246-1-noltari@gmail.com> References: <20180212163858.25601-1-noltari@gmail.com> <20180221161040.22246-1-noltari@gmail.com> MIME-Version: 1.0 Subject: [U-Boot] [RFC v3 06/15] bmips: bcm6358: add bcm6348-iudma support X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Signed-off-by: Álvaro Fernández Rojas --- v3: no changes v2: no changes arch/mips/dts/brcm,bcm6358.dtsi | 18 ++++++++++++++++++ include/dt-bindings/dma/bcm6358-dma.h | 17 +++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 include/dt-bindings/dma/bcm6358-dma.h diff --git a/arch/mips/dts/brcm,bcm6358.dtsi b/arch/mips/dts/brcm,bcm6358.dtsi index b63b53baee..1468e4f63a 100644 --- a/arch/mips/dts/brcm,bcm6358.dtsi +++ b/arch/mips/dts/brcm,bcm6358.dtsi @@ -5,6 +5,7 @@ */ #include +#include #include #include #include "skeleton.dtsi" @@ -191,5 +192,22 @@ status = "disabled"; }; + + iudma: dma-controller@fffe5000 { + compatible = "brcm,bcm6348-iudma"; + reg = <0xfffe5000 0x24>, + <0xfffe5100 0x80>, + <0xfffe5200 0x80>; + reg-names = "dma", + "dma-channels", + "dma-sram"; + #dma-cells = <1>; + dma-channels = <8>; + clocks = <&periph_clk BCM6358_CLK_EMUSB>, + <&periph_clk BCM6358_CLK_USBSU>, + <&periph_clk BCM6358_CLK_EPHY>; + resets = <&periph_rst BCM6358_RST_ENET>, + <&periph_rst BCM6358_RST_EPHY>; + }; }; }; diff --git a/include/dt-bindings/dma/bcm6358-dma.h b/include/dt-bindings/dma/bcm6358-dma.h new file mode 100644 index 0000000000..3b1fcf8540 --- /dev/null +++ b/include/dt-bindings/dma/bcm6358-dma.h @@ -0,0 +1,17 @@ +/* + * Copyright (C) 2018 Álvaro Fernández Rojas + * + * Derived from linux/drivers/net/ethernet/broadcom/bcm63xx_enet.c + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#ifndef __DT_BINDINGS_DMA_BCM6358_H +#define __DT_BINDINGS_DMA_BCM6358_H + +#define BCM6358_DMA_ENET0_RX 0 +#define BCM6358_DMA_ENET0_TX 1 +#define BCM6358_DMA_ENET1_RX 2 +#define BCM6358_DMA_ENET1_TX 3 + +#endif /* __DT_BINDINGS_DMA_BCM6358_H */ From patchwork Wed Feb 21 16:10:32 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?= X-Patchwork-Id: 876180 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="a5JMuJMX"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zmjKM4hY7z9sWg for ; Thu, 22 Feb 2018 03:16:13 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 6C198C21DD9; Wed, 21 Feb 2018 16:15:46 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED, RCVD_IN_MSPIKE_H2, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id A5C35C21F74; Wed, 21 Feb 2018 16:11:46 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id DA269C21F20; Wed, 21 Feb 2018 16:10:57 +0000 (UTC) Received: from mail-wr0-f195.google.com (mail-wr0-f195.google.com [209.85.128.195]) by lists.denx.de (Postfix) with ESMTPS id 0F4F4C21E57 for ; Wed, 21 Feb 2018 16:10:54 +0000 (UTC) Received: by mail-wr0-f195.google.com with SMTP id k9so5989419wre.9 for ; Wed, 21 Feb 2018 08:10:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=iK7qTvBC/kiH4oLoUbVxWh7BJVYdwXEKh+R04XLVyCg=; b=a5JMuJMXWin2i4R3Xwg0rfV/KD1Lf3paJLTrYdX+ydalPXzqcuZV/9hL0qYGZg7Z7j caZ+kbwsxNdG6pK5OpXMDg04J2wOfsK8MVRaqKIInyrwKqeGftaIqez82zx4OCnw/Nej P91nOLru8tmqKDGyUM0BvEC63Qa+6GZiy/Q5tyZt5TwBLCJOosccwpMhlp1LUuh9pGHy Mvt3VkqA6GrMcVcPNZ4OSIWV+ljkRKteUamvs9Qxh+CK4dCscfi4wWcTAHgXS9cLHwgx C8sQDcFkLjWTCGDO2lY1x3XmW+nFcfU3RTCb7VuK8ozATIqaoxEbJ5W/QD21l2Ul75Uz YeUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=iK7qTvBC/kiH4oLoUbVxWh7BJVYdwXEKh+R04XLVyCg=; b=PeNwCQAkInU88y1yC2ygw0iTJPukCA2vQoyMBrsa25tMbY8P/PGcbSzc3HUgGmWd6m RSYU3MgCk6WQqgP0EDd3ALj4ObbmLBZYLF4Ltu3hOJjN2U+oGRKqeLQSIJskUJsQHEO7 eo0JKII8iJY8nT+TAYXJh9uGUDuigN1qgOmNT0yRtcS3P3u6O3Xq5qP3TC4xgCrX5Rol g/075BcrTfnOmclXm6M/eP57r0HFBJyK0pp7wCKAGN2EGoYxwLSMMa+Nvf1/BP/jBllv ACORsf85pPR4bDRtzr7u/pkz8KEmmIZdgLZ17e05CgEjvlHKtxgYo3e3utJ7GYyFHvkg Wp1g== X-Gm-Message-State: APf1xPDtI83ft4/tdmc2xpw3HFxxH5DMNc59dl5AFQLoiLs/sb2e/Dmb GnS/jxK0oGqgp1Giea8q9kXQL22B X-Google-Smtp-Source: AH8x225O3i8cNuk2j6u7bKD2HpaGMCXtrQaMBZJptFHLh0+JnWh6UpzqHoiie9nRJd1KckG4EmEFbQ== X-Received: by 10.223.152.83 with SMTP id v77mr3412140wrb.70.1519229453548; Wed, 21 Feb 2018 08:10:53 -0800 (PST) Received: from skynet.lan (175.red-2-137-31.dynamicip.rima-tde.net. [2.137.31.175]) by smtp.gmail.com with ESMTPSA id l22sm1051357wre.52.2018.02.21.08.10.52 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 21 Feb 2018 08:10:52 -0800 (PST) From: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?= To: u-boot@lists.denx.de, daniel.schwierzeck@gmail.com, sjg@chromium.org, jagan@openedev.com, vigneshr@ti.com Date: Wed, 21 Feb 2018 17:10:32 +0100 Message-Id: <20180221161040.22246-8-noltari@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180221161040.22246-1-noltari@gmail.com> References: <20180212163858.25601-1-noltari@gmail.com> <20180221161040.22246-1-noltari@gmail.com> MIME-Version: 1.0 Subject: [U-Boot] [RFC v3 07/15] phy: add support for internal phys X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Signed-off-by: Álvaro Fernández Rojas --- v3: no changes v2: no changes include/phy.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/phy.h b/include/phy.h index 0543ec10c2..8f3e53db01 100644 --- a/include/phy.h +++ b/include/phy.h @@ -50,6 +50,7 @@ typedef enum { + PHY_INTERFACE_MODE_INTERNAL, PHY_INTERFACE_MODE_MII, PHY_INTERFACE_MODE_GMII, PHY_INTERFACE_MODE_SGMII, @@ -72,6 +73,7 @@ typedef enum { } phy_interface_t; static const char *phy_interface_strings[] = { + [PHY_INTERFACE_MODE_INTERNAL] = "internal", [PHY_INTERFACE_MODE_MII] = "mii", [PHY_INTERFACE_MODE_GMII] = "gmii", [PHY_INTERFACE_MODE_SGMII] = "sgmii", From patchwork Wed Feb 21 16:10:33 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?= X-Patchwork-Id: 876189 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="r1f147OF"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zmjNh6s71z9sWn for ; Thu, 22 Feb 2018 03:19:16 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 97EC3C21F20; Wed, 21 Feb 2018 16:15:12 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED, RCVD_IN_MSPIKE_H2, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 850E8C21F59; Wed, 21 Feb 2018 16:11:42 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id EF40FC21F4A; Wed, 21 Feb 2018 16:10:59 +0000 (UTC) Received: from mail-wr0-f195.google.com (mail-wr0-f195.google.com [209.85.128.195]) by lists.denx.de (Postfix) with ESMTPS id ACF50C21F0C for ; Wed, 21 Feb 2018 16:10:55 +0000 (UTC) Received: by mail-wr0-f195.google.com with SMTP id s5so6020022wra.0 for ; Wed, 21 Feb 2018 08:10:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=3JX7LUB9FjS2SAirp6ke0EqkCsfCI7QUJX7arbkiYFs=; b=r1f147OFV7necRn22vz24aaICbpXFZ0lgh7+XLGygsSQM7pIxjBHMLBtYO8dD+U4Zv UdbZvdQWTzfdeduJnXdtY76S6rNDs48tFui63x9kURLqdZuO7wWxzyr/0kxy1tOwJogz y0y61thMmZBku58wYJ/j0wTon0GJtI2DD5rg7Wu3texuGIJTTgHQNyTU/Bzh+Bh/uL7I 9bSnQJeDd/tNMveNxz9BEAKd5a6O250SAe0fVG5Uz0ud406dMpwVAFZaYQFvW6m2nkyJ Ov0a991vdWfFCJhBMwCMQc1hKCKfzFV57z7gPYaeum7sy+mAJmTUq0FG7Wqpiaf0lZZ3 n43Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=3JX7LUB9FjS2SAirp6ke0EqkCsfCI7QUJX7arbkiYFs=; b=LFOEsfaBP3dyDCMuBTiCoKjOXsEYC3P8EjU3TL93UykIuFuy6t15RHTsMcePZV41G9 cquhRTHq2OMAgQOxfAsXi6dITJA5iBz0yL4IDXJ5zfLFHJ3JCAj84xt6tQZ36JmWqosA ELSQMVDFr7yggEZ5wKTnD735iLBdPmtV2LMwHILzaO/EL0IQByCZbgc7q0XS+lt6ptJT 0ELKGWgG5JVXKDAc9gHxGRqzAtJ0z/83ITE7wKdc7p11zIGachagGNOtDaU4DmZAW/mN 6Bwb4GbCzMs+qQnzsmiuNpF2PaBBcL/Jne1R83iZoGslMJDWToCX5CANxOzbvnmp9/sj ro5g== X-Gm-Message-State: APf1xPBoHQmhf7Nj7bVlfeqKmBdiUkbsCGwJW6dx72AQ8JMKDGkoU/ur VNm5OgZoFotYsANMyHJEe1E35TvP X-Google-Smtp-Source: AH8x2276jp1VnvW6sb88Yi7TtZjdFRjoYScj0bYXG+8jUgirtivuTPgIVMSVsUBguadRfbZIwnKCDg== X-Received: by 10.223.197.12 with SMTP id q12mr3547409wrf.147.1519229454724; Wed, 21 Feb 2018 08:10:54 -0800 (PST) Received: from skynet.lan (175.red-2-137-31.dynamicip.rima-tde.net. [2.137.31.175]) by smtp.gmail.com with ESMTPSA id l22sm1051357wre.52.2018.02.21.08.10.53 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 21 Feb 2018 08:10:53 -0800 (PST) From: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?= To: u-boot@lists.denx.de, daniel.schwierzeck@gmail.com, sjg@chromium.org, jagan@openedev.com, vigneshr@ti.com Date: Wed, 21 Feb 2018 17:10:33 +0100 Message-Id: <20180221161040.22246-9-noltari@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180221161040.22246-1-noltari@gmail.com> References: <20180212163858.25601-1-noltari@gmail.com> <20180221161040.22246-1-noltari@gmail.com> MIME-Version: 1.0 Subject: [U-Boot] [RFC v3 08/15] net: add support for bcm6348-enet X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Signed-off-by: Álvaro Fernández Rojas --- v3: no changes v2: select DMA_CHANNELS. drivers/net/Kconfig | 10 + drivers/net/Makefile | 1 + drivers/net/bcm6348-eth.c | 517 +++++++++++++++++++++++++++++++++++++++++ include/configs/bmips_common.h | 5 +- 4 files changed, 532 insertions(+), 1 deletion(-) create mode 100644 drivers/net/bcm6348-eth.c diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig index de1947ccc1..e532332d78 100644 --- a/drivers/net/Kconfig +++ b/drivers/net/Kconfig @@ -71,6 +71,16 @@ config BCM_SF2_ETH_GMAC by the BCM_SF2_ETH driver. Say Y to any bcmcygnus based platforms. +config BCM6348_ETH + bool "BCM6348 EMAC support" + depends on DM_ETH && ARCH_BMIPS + select DMA + select DMA_CHANNELS + select MII + select PHYLIB + help + This driver supports the BCM6348 Ethernet MAC. + config DWC_ETH_QOS bool "Synopsys DWC Ethernet QOS device support" depends on DM_ETH diff --git a/drivers/net/Makefile b/drivers/net/Makefile index ac5443c752..282adbc775 100644 --- a/drivers/net/Makefile +++ b/drivers/net/Makefile @@ -8,6 +8,7 @@ obj-$(CONFIG_ALTERA_TSE) += altera_tse.o obj-$(CONFIG_AG7XXX) += ag7xxx.o obj-$(CONFIG_ARMADA100_FEC) += armada100_fec.o +obj-$(CONFIG_BCM6348_ETH) += bcm6348-eth.o obj-$(CONFIG_DRIVER_AT91EMAC) += at91_emac.o obj-$(CONFIG_DRIVER_AX88180) += ax88180.o obj-$(CONFIG_BCM_SF2_ETH) += bcm-sf2-eth.o diff --git a/drivers/net/bcm6348-eth.c b/drivers/net/bcm6348-eth.c new file mode 100644 index 0000000000..890b7d5396 --- /dev/null +++ b/drivers/net/bcm6348-eth.c @@ -0,0 +1,517 @@ +/* + * Copyright (C) 2018 Álvaro Fernández Rojas + * + * Derived from linux/drivers/net/ethernet/broadcom/bcm63xx_enet.c: + * Copyright (C) 2008 Maxime Bizon + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define ETH_ZLEN 60 + +#define ETH_TX_WATERMARK 32 +#define ETH_MAX_MTU_SIZE 1518 + +#define ETH_TIMEOUT 100 + +/* ETH Receiver Configuration register */ +#define ETH_RXCFG_REG 0x00 +#define ETH_RXCFG_ENFLOW_SHIFT 5 +#define ETH_RXCFG_ENFLOW_MASK (1 << ETH_RXCFG_ENFLOW_SHIFT) + +/* ETH Receive Maximum Length register */ +#define ETH_RXMAXLEN_REG 0x04 +#define ETH_RXMAXLEN_SHIFT 0 +#define ETH_RXMAXLEN_MASK (0x7ff << ETH_RXMAXLEN_SHIFT) + +/* ETH Transmit Maximum Length register */ +#define ETH_TXMAXLEN_REG 0x08 +#define ETH_TXMAXLEN_SHIFT 0 +#define ETH_TXMAXLEN_MASK (0x7ff << ETH_TXMAXLEN_SHIFT) + +/* MII Status/Control register */ +#define MII_SC_REG 0x10 +#define MII_SC_MDCFREQDIV_SHIFT 0 +#define MII_SC_MDCFREQDIV_MASK (0x7f << MII_SC_MDCFREQDIV_SHIFT) +#define MII_SC_PREAMBLE_EN_SHIFT 7 +#define MII_SC_PREAMBLE_EN_MASK (1 << MII_SC_PREAMBLE_EN_SHIFT) + +/* MII Data register */ +#define MII_DAT_REG 0x14 +#define MII_DAT_DATA_SHIFT 0 +#define MII_DAT_DATA_MASK (0xffff << MII_DAT_DATA_SHIFT) +#define MII_DAT_TA_SHIFT 16 +#define MII_DAT_TA_MASK (0x3 << MII_DAT_TA_SHIFT) +#define MII_DAT_REG_SHIFT 18 +#define MII_DAT_REG_MASK (0x1f << MII_DAT_REG_SHIFT) +#define MII_DAT_PHY_SHIFT 23 +#define MII_DAT_PHY_MASK (0x1f << MII_DAT_PHY_SHIFT) +#define MII_DAT_OP_SHIFT 28 +#define MII_DAT_OP_WRITE (0x5 << MII_DAT_OP_SHIFT) +#define MII_DAT_OP_READ (0x6 << MII_DAT_OP_SHIFT) + +/* ETH Interrupts Mask register */ +#define ETH_IRMASK_REG 0x18 + +/* ETH Interrupts register */ +#define ETH_IR_REG 0x1c +#define ETH_IR_MII_SHIFT 0 +#define ETH_IR_MII_MASK (1 << ETH_IR_MII_SHIFT) + +/* ETH Control register */ +#define ETH_CTL_REG 0x2c +#define ETH_CTL_ENABLE_SHIFT 0 +#define ETH_CTL_ENABLE_MASK (1 << ETH_CTL_ENABLE_SHIFT) +#define ETH_CTL_DISABLE_SHIFT 1 +#define ETH_CTL_DISABLE_MASK (1 << ETH_CTL_DISABLE_SHIFT) +#define ETH_CTL_RESET_SHIFT 2 +#define ETH_CTL_RESET_MASK (1 << ETH_CTL_RESET_SHIFT) +#define ETH_CTL_EPHY_SHIFT 3 +#define ETH_CTL_EPHY_MASK (1 << ETH_CTL_EPHY_SHIFT) + +/* ETH Transmit Control register */ +#define ETH_TXCTL_REG 0x30 +#define ETH_TXCTL_FD_SHIFT 0 +#define ETH_TXCTL_FD_MASK (1 << ETH_TXCTL_FD_SHIFT) + +/* ETH Transmit Watermask register */ +#define ETH_TXWMARK_REG 0x34 +#define ETH_TXWMARK_WM_SHIFT 0 +#define ETH_TXWMARK_WM_MASK (0x3f << ETH_TXWMARK_WM_SHIFT) + +/* MIB Control register */ +#define MIB_CTL_REG 0x38 +#define MIB_CTL_RDCLEAR_SHIFT 0 +#define MIB_CTL_RDCLEAR_MASK (1 << MIB_CTL_RDCLEAR_SHIFT) + +/* ETH Perfect Match registers */ +#define ETH_PM_CNT 4 +#define ETH_PML_REG(x) (0x58 + (x) * 0x8) +#define ETH_PMH_REG(x) (0x5c + (x) * 0x8) +#define ETH_PMH_VALID_SHIFT 16 +#define ETH_PMH_VALID_MASK (1 << ETH_PMH_VALID_SHIFT) + +/* MIB Counters registers */ +#define MIB_REG_CNT 55 +#define MIB_REG(x) (0x200 + (x) * 4) + +/* ETH data */ +struct bcm6348_eth_priv { + void __iomem *base; + /* DMA */ + struct dma rx_dma; + struct dma tx_dma; + /* PHY */ + int phy_id; + struct phy_device *phy_dev; +}; + +DECLARE_GLOBAL_DATA_PTR; + +static void bcm6348_eth_mac_disable(struct bcm6348_eth_priv *priv) +{ + /* disable emac */ + clrsetbits_be32(priv->base + ETH_CTL_REG, ETH_CTL_ENABLE_MASK, + ETH_CTL_DISABLE_MASK); + + /* wait until emac is disabled */ + if (wait_for_bit_be32(priv->base + ETH_CTL_REG, + ETH_CTL_DISABLE_MASK, false, + ETH_TIMEOUT, false)) + pr_err("error disabling emac\n"); +} + +static void bcm6348_eth_mac_enable(struct bcm6348_eth_priv *priv) +{ + setbits_be32(priv->base + ETH_CTL_REG, ETH_CTL_ENABLE_MASK); +} + +static void bcm6348_eth_mac_reset(struct bcm6348_eth_priv *priv) +{ + /* reset emac */ + writel_be(ETH_CTL_RESET_MASK, priv->base + ETH_CTL_REG); + wmb(); + + /* wait until emac is reset */ + if (wait_for_bit_be32(priv->base + ETH_CTL_REG, + ETH_CTL_RESET_MASK, false, + ETH_TIMEOUT, false)) + pr_err("error resetting emac\n"); +} + +static int bcm6348_eth_recv(struct udevice *dev, int flags, uchar **packetp) +{ + struct bcm6348_eth_priv *priv = dev_get_priv(dev); + + return dma_receive(&priv->rx_dma, (void *)packetp); +} + +static int bcm6348_eth_send(struct udevice *dev, void *packet, int length) +{ + struct bcm6348_eth_priv *priv = dev_get_priv(dev); + + length = max(length, ETH_ZLEN); + + return dma_send(&priv->tx_dma, (void **)packet, length); +} + +static int bcm6348_eth_adjust_link(struct udevice *dev, + struct phy_device *phydev) +{ + struct bcm6348_eth_priv *priv = dev_get_priv(dev); + + /* mac duplex parameters */ + if (phydev->duplex) + setbits_be32(priv->base + ETH_TXCTL_REG, ETH_TXCTL_FD_MASK); + else + clrbits_be32(priv->base + ETH_TXCTL_REG, ETH_TXCTL_FD_MASK); + + /* rx flow control (pause frame handling) */ + if (phydev->pause) + setbits_be32(priv->base + ETH_RXCFG_REG, + ETH_RXCFG_ENFLOW_MASK); + else + clrbits_be32(priv->base + ETH_RXCFG_REG, + ETH_RXCFG_ENFLOW_MASK); + + return 0; +} + +static int bcm6348_eth_start(struct udevice *dev) +{ + struct bcm6348_eth_priv *priv = dev_get_priv(dev); + int ret, i; + + /* enable dma rx channel */ + dma_enable(&priv->rx_dma); + + /* enable dma tx channel */ + dma_enable(&priv->tx_dma); + + ret = phy_startup(priv->phy_dev); + if (ret) { + pr_err("could not initialize phy\n"); + return ret; + } + + if (!priv->phy_dev->link) { + pr_err("no phy link\n"); + return -EIO; + } + + bcm6348_eth_adjust_link(dev, priv->phy_dev); + + /* zero mib counters */ + for (i = 0; i < MIB_REG_CNT; i++) + writel_be(0, MIB_REG(i)); + + /* enable rx flow control */ + setbits_be32(priv->base + ETH_RXCFG_REG, ETH_RXCFG_ENFLOW_MASK); + + /* set max rx/tx length */ + writel_be((ETH_MAX_MTU_SIZE << ETH_RXMAXLEN_SHIFT) & + ETH_RXMAXLEN_MASK, priv->base + ETH_RXMAXLEN_REG); + writel_be((ETH_MAX_MTU_SIZE << ETH_TXMAXLEN_SHIFT) & + ETH_TXMAXLEN_MASK, priv->base + ETH_TXMAXLEN_REG); + + /* set correct transmit fifo watermark */ + writel_be((ETH_TX_WATERMARK << ETH_TXWMARK_WM_SHIFT) & + ETH_TXWMARK_WM_MASK, priv->base + ETH_TXWMARK_REG); + + /* enable emac */ + bcm6348_eth_mac_enable(priv); + + /* clear interrupts */ + writel_be(0, priv->base + ETH_IRMASK_REG); + + return 0; +} + +static void bcm6348_eth_stop(struct udevice *dev) +{ + struct bcm6348_eth_priv *priv = dev_get_priv(dev); + + /* disable dma rx channel */ + dma_disable(&priv->rx_dma); + + /* disable dma tx channel */ + dma_disable(&priv->tx_dma); + + /* disable emac */ + bcm6348_eth_mac_disable(priv); +} + +static int bcm6348_eth_write_hwaddr(struct udevice *dev) +{ + struct eth_pdata *pdata = dev_get_platdata(dev); + struct bcm6348_eth_priv *priv = dev_get_priv(dev); + bool running = false; + + /* check if emac is running */ + if (readl_be(priv->base + ETH_CTL_REG) & ETH_CTL_ENABLE_MASK) + running = true; + + /* disable emac */ + if (running) + bcm6348_eth_mac_disable(priv); + + /* set mac address */ + writel_be((pdata->enetaddr[2] << 24) | (pdata->enetaddr[3]) << 16 | + (pdata->enetaddr[4]) << 8 | (pdata->enetaddr[5]), + priv->base + ETH_PML_REG(0)); + writel_be((pdata->enetaddr[1]) | (pdata->enetaddr[0] << 8) | + ETH_PMH_VALID_MASK, priv->base + ETH_PMH_REG(0)); + + /* enable emac */ + if (running) + bcm6348_eth_mac_enable(priv); + + return 0; +} + +static const struct eth_ops bcm6348_eth_ops = { + .recv = bcm6348_eth_recv, + .send = bcm6348_eth_send, + .start = bcm6348_eth_start, + .stop = bcm6348_eth_stop, + .write_hwaddr = bcm6348_eth_write_hwaddr, +}; + +static const struct udevice_id bcm6348_eth_ids[] = { + { .compatible = "brcm,bcm6348-enet", }, + { /* sentinel */ } +}; + +static int bcm6348_mdio_op(void __iomem *base, uint32_t data) +{ + /* make sure mii interrupt status is cleared */ + writel_be(ETH_IR_MII_MASK, base + ETH_IR_REG); + + /* issue mii op */ + writel_be(data, base + MII_DAT_REG); + + /* wait until emac is disabled */ + return wait_for_bit_be32(base + ETH_IR_REG, + ETH_IR_MII_MASK, true, + ETH_TIMEOUT, false); +} + +static int bcm6348_mdio_read(struct mii_dev *bus, int addr, int devaddr, + int reg) +{ + void __iomem *base = bus->priv; + uint32_t val; + + val = MII_DAT_OP_READ; + val |= (reg << MII_DAT_REG_SHIFT) & MII_DAT_REG_MASK; + val |= (0x2 << MII_DAT_TA_SHIFT) & MII_DAT_TA_MASK; + val |= (addr << MII_DAT_PHY_SHIFT) & MII_DAT_PHY_MASK; + + if (bcm6348_mdio_op(base, val)) { + pr_err("%s: timeout\n", __func__); + return -EINVAL; + } + + val = readl_be(base + MII_DAT_REG) & MII_DAT_DATA_MASK; + val >>= MII_DAT_DATA_SHIFT; + + return val; +} + +static int bcm6348_mdio_write(struct mii_dev *bus, int addr, int dev_addr, + int reg, u16 value) +{ + void __iomem *base = bus->priv; + uint32_t val; + + val = MII_DAT_OP_WRITE; + val |= (reg << MII_DAT_REG_SHIFT) & MII_DAT_REG_MASK; + val |= (0x2 << MII_DAT_TA_SHIFT) & MII_DAT_TA_MASK; + val |= (addr << MII_DAT_PHY_SHIFT) & MII_DAT_PHY_MASK; + val |= (value << MII_DAT_DATA_SHIFT) & MII_DAT_DATA_MASK; + + if (bcm6348_mdio_op(base, val)) { + pr_err("%s: timeout\n", __func__); + return -EINVAL; + } + + return 0; +} + +static int bcm6348_mdio_init(const char *name, void __iomem *base) +{ + struct mii_dev *bus; + + bus = mdio_alloc(); + if (!bus) { + pr_err("%s: failed to allocate MDIO bus\n", __func__); + return -ENOMEM; + } + + bus->read = bcm6348_mdio_read; + bus->write = bcm6348_mdio_write; + bus->priv = base; + snprintf(bus->name, sizeof(bus->name), "%s", name); + + return mdio_register(bus); +} + +static int bcm6348_phy_init(struct udevice *dev) +{ + struct eth_pdata *pdata = dev_get_platdata(dev); + struct bcm6348_eth_priv *priv = dev_get_priv(dev); + struct mii_dev *bus; + + /* get mii bus */ + bus = miiphy_get_dev_by_name(dev->name); + + /* phy connect */ + priv->phy_dev = phy_connect(bus, priv->phy_id, dev, + pdata->phy_interface); + if (!priv->phy_dev) { + pr_err("%s: no phy device\n", __func__); + return -ENODEV; + } + + priv->phy_dev->supported = (SUPPORTED_10baseT_Half | + SUPPORTED_10baseT_Full | + SUPPORTED_100baseT_Half | + SUPPORTED_100baseT_Full | + SUPPORTED_Autoneg | + SUPPORTED_Pause | + SUPPORTED_MII); + priv->phy_dev->advertising = priv->phy_dev->supported; + + /* phy config */ + phy_config(priv->phy_dev); + + return 0; +} + +static int bcm6348_eth_probe(struct udevice *dev) +{ + struct eth_pdata *pdata = dev_get_platdata(dev); + struct bcm6348_eth_priv *priv = dev_get_priv(dev); + void *blob = (void *)gd->fdt_blob; + int node = dev_of_offset(dev); + const char *phy_mode; + fdt_addr_t addr; + int phy_node, ret, i; + + /* get base address */ + addr = devfdt_get_addr(dev); + if (addr == FDT_ADDR_T_NONE) + return -EINVAL; + + /* get phy mode */ + pdata->phy_interface = PHY_INTERFACE_MODE_NONE; + phy_mode = fdt_getprop(blob, node, "phy-mode", NULL); + if (phy_mode) + pdata->phy_interface = phy_get_interface_by_name(phy_mode); + if (pdata->phy_interface == PHY_INTERFACE_MODE_NONE) + return -ENODEV; + + /* get phy */ + phy_node = fdtdec_lookup_phandle(blob, node, "phy"); + if (phy_node >= 0) + priv->phy_id = fdtdec_get_int(blob, phy_node, "reg", -1); + else + return -EINVAL; + + /* get dma channels */ + ret = dma_get_by_name(dev, "tx", &priv->tx_dma); + if (ret) + return -EINVAL; + + ret = dma_get_by_name(dev, "rx", &priv->rx_dma); + if (ret) + return -EINVAL; + + /* try to enable clocks */ + for (i = 0; ; i++) { + struct clk clk; + int ret; + + ret = clk_get_by_index(dev, i, &clk); + if (ret < 0) + break; + if (clk_enable(&clk)) + pr_err("failed to enable clock %d\n", i); + clk_free(&clk); + } + + /* try to perform resets */ + for (i = 0; ; i++) { + struct reset_ctl reset; + int ret; + + ret = reset_get_by_index(dev, i, &reset); + if (ret < 0) + break; + if (reset_deassert(&reset)) + pr_err("failed to deassert reset %d\n", i); + reset_free(&reset); + } + + /* get base addr */ + priv->base = ioremap(addr, 0); + pdata->iobase = (phys_addr_t) priv->base; + + /* disable emac */ + bcm6348_eth_mac_disable(priv); + + /* reset emac */ + bcm6348_eth_mac_reset(priv); + + /* select correct mii interface */ + if (pdata->phy_interface == PHY_INTERFACE_MODE_INTERNAL) + clrbits_be32(priv->base + ETH_CTL_REG, ETH_CTL_EPHY_MASK); + else + setbits_be32(priv->base + ETH_CTL_REG, ETH_CTL_EPHY_MASK); + + /* turn on mdc clock */ + writel_be((0x1f << MII_SC_MDCFREQDIV_SHIFT) | + MII_SC_PREAMBLE_EN_MASK, priv->base + MII_SC_REG); + + /* set mib counters to not clear when read */ + clrbits_be32(priv->base + MIB_CTL_REG, MIB_CTL_RDCLEAR_MASK); + + /* initialize perfect match registers */ + for (i = 0; i < ETH_PM_CNT; i++) { + writel_be(0, priv->base + ETH_PML_REG(i)); + writel_be(0, priv->base + ETH_PMH_REG(i)); + } + + /* init mii bus */ + ret = bcm6348_mdio_init(dev->name, priv->base); + if (ret) + return ret; + + /* init phy */ + ret = bcm6348_phy_init(dev); + if (ret) + return ret; + + return 0; +} + +U_BOOT_DRIVER(bcm6348_eth) = { + .name = "bcm6348_eth", + .id = UCLASS_ETH, + .of_match = bcm6348_eth_ids, + .ops = &bcm6348_eth_ops, + .platdata_auto_alloc_size = sizeof(struct eth_pdata), + .priv_auto_alloc_size = sizeof(struct bcm6348_eth_priv), + .probe = bcm6348_eth_probe, +}; diff --git a/include/configs/bmips_common.h b/include/configs/bmips_common.h index 38bf7a272b..eb66512f67 100644 --- a/include/configs/bmips_common.h +++ b/include/configs/bmips_common.h @@ -7,6 +7,9 @@ #ifndef __CONFIG_BMIPS_COMMON_H #define __CONFIG_BMIPS_COMMON_H +/* ETH */ +#define CONFIG_PHY_RESET_DELAY 20 + /* UART */ #define CONFIG_SYS_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200, \ 230400, 500000, 1500000 } @@ -17,7 +20,7 @@ /* Memory usage */ #define CONFIG_SYS_MAXARGS 24 -#define CONFIG_SYS_MALLOC_LEN (1024 * 1024) +#define CONFIG_SYS_MALLOC_LEN (2 * 1024 * 1024) #define CONFIG_SYS_BOOTPARAMS_LEN (128 * 1024) #define CONFIG_SYS_CBSIZE 512 From patchwork Wed Feb 21 16:10:34 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?= X-Patchwork-Id: 876188 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="dYShebCb"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zmjNb73Sxz9sWg for ; Thu, 22 Feb 2018 03:19:11 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 6812FC21F4F; Wed, 21 Feb 2018 16:16:03 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED, RCVD_IN_MSPIKE_H2, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id A9B7CC21F82; Wed, 21 Feb 2018 16:11:52 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id E0C4DC21F7E; Wed, 21 Feb 2018 16:10:59 +0000 (UTC) Received: from mail-wr0-f196.google.com (mail-wr0-f196.google.com [209.85.128.196]) by lists.denx.de (Postfix) with ESMTPS id 3473FC21E68 for ; Wed, 21 Feb 2018 16:10:56 +0000 (UTC) Received: by mail-wr0-f196.google.com with SMTP id p104so5976463wrc.12 for ; Wed, 21 Feb 2018 08:10:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=/Y8XSbK8yOtzDCM8S8ibhRk+b06SR0H+JnUA0S2KDBc=; b=dYShebCbENxF/yGeF2ZRyLLP59nnHLDxQZsi8bDH2K0BIjVhf7V1svEsPwux2n9i60 3NbDw8OYW8s/VYKxdTh6tA7f5HX3CR+Y3WtUxhk4i61PEvQqrRz1FNMTwA616OrLNePx E8u67u42thf20dxztjHO2/G98LHsk+EvimaxK1dWrVnuFZgBeGjmtWBAeMsDtzwnlxwV VIROUb6xR/qJwfsYUmAHWgZa1wi8g06wTxLV6mRY3shIjIRGguBjQb4vUKSjMsJbnn5J TXbu+ygM+BjVPCBaygV6nPWnh5hR/GUfnGXhNc9kHxcPYCVcdzmsGev3IJPaUdt7euP+ 5qNw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=/Y8XSbK8yOtzDCM8S8ibhRk+b06SR0H+JnUA0S2KDBc=; b=ny+GoGThv8OdqTDSqnvH8TYCfhUCciymDOfQsG6SFcLvRkdebfKeJ7SgPQN00nQjhG fM5URmlYUkoEy5M6Zw8wgZaC3wxFMGj4Qe/P4EhYhAFWYBKm02IEHjTBi+pnVCIv4DQL 0TBRHNCilzE0Xcr+hgr9At4xT9la8TzWQZUDeR7kro7MXO6Z+54tQlt9DZT3OvpE0+bk NHXpnAeyyTLz7E9KwlWji6G7nQESurNdKhBxyIlYehKVj3K2TDSEeXfBBZ1bhBRHaYqI rjula1TGUExR9qLqtzBRCqW/9IlyzieziegxIXV5Rt4ooTTQKQHdCYOswHduzDtNKkZe f3AA== X-Gm-Message-State: APf1xPAxdXNXq4BatXhI1nlSs5MzolILYNij5W4Rfcwejh5zlrE5gbYz sEeqHLGSMlALmqTIlr2tDCF1Cwsn X-Google-Smtp-Source: AH8x226klUMeSFZe8tN3LGAUXyqKZsaLdiDkpMPDKSJP3NjIfhW+xEwpOLlDVQThTAXo2gkzREXPUQ== X-Received: by 10.223.176.77 with SMTP id g13mr3533914wra.21.1519229455680; Wed, 21 Feb 2018 08:10:55 -0800 (PST) Received: from skynet.lan (175.red-2-137-31.dynamicip.rima-tde.net. [2.137.31.175]) by smtp.gmail.com with ESMTPSA id l22sm1051357wre.52.2018.02.21.08.10.54 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 21 Feb 2018 08:10:55 -0800 (PST) From: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?= To: u-boot@lists.denx.de, daniel.schwierzeck@gmail.com, sjg@chromium.org, jagan@openedev.com, vigneshr@ti.com Date: Wed, 21 Feb 2018 17:10:34 +0100 Message-Id: <20180221161040.22246-10-noltari@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180221161040.22246-1-noltari@gmail.com> References: <20180212163858.25601-1-noltari@gmail.com> <20180221161040.22246-1-noltari@gmail.com> MIME-Version: 1.0 Subject: [U-Boot] [RFC v3 09/15] bmips: bcm6338: add support for bcm6348-enet X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Signed-off-by: Álvaro Fernández Rojas --- v3: no changes v2: no changes arch/mips/dts/brcm,bcm6338.dtsi | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/arch/mips/dts/brcm,bcm6338.dtsi b/arch/mips/dts/brcm,bcm6338.dtsi index 4125f71d9f..621278c9d1 100644 --- a/arch/mips/dts/brcm,bcm6338.dtsi +++ b/arch/mips/dts/brcm,bcm6338.dtsi @@ -145,5 +145,20 @@ dma-channels = <6>; resets = <&periph_rst BCM6338_RST_DMAMEM>; }; + + enet: ethernet@fffe2800 { + compatible = "brcm,bcm6348-enet"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0xfffe2800 0x2dc>; + clocks = <&periph_clk BCM6338_CLK_ENET>; + resets = <&periph_rst BCM6338_RST_ENET>; + dmas = <&iudma BCM6338_DMA_ENET_RX>, + <&iudma BCM6338_DMA_ENET_TX>; + dma-names = "rx", + "tx"; + + status = "disabled"; + }; }; }; From patchwork Wed Feb 21 16:10:35 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?= X-Patchwork-Id: 876184 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="uP2Blb95"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zmjM01G1vz9sWs for ; Thu, 22 Feb 2018 03:17:46 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 583C1C21F01; Wed, 21 Feb 2018 16:13:25 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED, RCVD_IN_MSPIKE_H2, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id F1515C21F48; Wed, 21 Feb 2018 16:11:14 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 0843CC21F2F; Wed, 21 Feb 2018 16:11:00 +0000 (UTC) Received: from mail-wr0-f193.google.com (mail-wr0-f193.google.com [209.85.128.193]) by lists.denx.de (Postfix) with ESMTPS id 493C9C21F07 for ; Wed, 21 Feb 2018 16:10:57 +0000 (UTC) Received: by mail-wr0-f193.google.com with SMTP id f14so5978150wre.8 for ; Wed, 21 Feb 2018 08:10:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=WGXJTKmcMmqi/LYoh1U5zyH7cBLuGQ+uWQrUHLLYYNI=; b=uP2Blb95JSLRd0rnzeOJJGEkebK7Y7duG9SjsBE8rfx1bGv1C2n/nToAeeFjJnqRGQ jr5/jO9ZJSaYxCzfB8s9+olnGBdlOp678/VZoNy7cGnMcrhrjH/koOBq0v+C+75Kx/Vr puJ7kArc981kh6VJ+iRyR8Cv6t7f0VaYuKiM++ZPxkh2ZY+z5CfOak3UOEOUUpp8GZKv o90HdXSWkfceeegAwPZ63rKqr84NyTHcAMzpBxOlvdOBVUAvZ6dxeOGDH6lOkFiXQiqr BA86i64W3w9fRzERB2Zh1ID4D5op31WcOcrYhUMUv3/98+vCimPq4Sf4e95bUta3j5qr aSbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=WGXJTKmcMmqi/LYoh1U5zyH7cBLuGQ+uWQrUHLLYYNI=; b=QdE9ZraG5r1UIAollSWycLsryKTTWFu8D/l+GeJsaKSz3oziUSHlAW4LC9wyx1aGEx d25Fge1OEvQcU7eRFqKg5sNkOSi47KyUJvj5MWHgEoyiIf6X1WJ4y1+RNWZ7dB4BK0FN rf2hwHh4ARWY9V1mkExHRjSAhcOqg7Wu0zAgIIDUWVtSKK4ABXiCuaKm+Ncy+gGWVvgD wP7fpaKcPyfggtw8IxJ1+Dh0+JMb3lbE/79f2McwG+975SOeNu8H+UXdkaZTdTbpHHAR NwJqQsNHTUMNO7adEm8yKFQxjKjUhi+mdca01GWDQTfEjVcgWGUJ2/Fq4z7SzJvWj8uB 78Tg== X-Gm-Message-State: APf1xPDhgeqW8GUniJu8ca4/un3/rg2yUxB94JGweITHvhU5p8NXKRDN O0lE3OXFLU0lB0ZypkYLHU3BeKS/ X-Google-Smtp-Source: AH8x2250fqQUDSKC0rgX/OG47cMFNW5J0yDqZ1Uang1XOuuppSILB1q+tWbkmA1+agLo33RmYRRqlg== X-Received: by 10.223.176.33 with SMTP id f30mr3546036wra.75.1519229456791; Wed, 21 Feb 2018 08:10:56 -0800 (PST) Received: from skynet.lan (175.red-2-137-31.dynamicip.rima-tde.net. [2.137.31.175]) by smtp.gmail.com with ESMTPSA id l22sm1051357wre.52.2018.02.21.08.10.55 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 21 Feb 2018 08:10:56 -0800 (PST) From: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?= To: u-boot@lists.denx.de, daniel.schwierzeck@gmail.com, sjg@chromium.org, jagan@openedev.com, vigneshr@ti.com Date: Wed, 21 Feb 2018 17:10:35 +0100 Message-Id: <20180221161040.22246-11-noltari@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180221161040.22246-1-noltari@gmail.com> References: <20180212163858.25601-1-noltari@gmail.com> <20180221161040.22246-1-noltari@gmail.com> MIME-Version: 1.0 Subject: [U-Boot] [RFC v3 10/15] bmips: enable f@st1704 enet support X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Signed-off-by: Álvaro Fernández Rojas --- v3: no changes v2: no changes arch/mips/dts/sagem,f@st1704.dts | 12 ++++++++++++ configs/sagem_f@st1704_ram_defconfig | 9 ++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/arch/mips/dts/sagem,f@st1704.dts b/arch/mips/dts/sagem,f@st1704.dts index dd0e5b8b7c..99d031f10a 100644 --- a/arch/mips/dts/sagem,f@st1704.dts +++ b/arch/mips/dts/sagem,f@st1704.dts @@ -40,6 +40,18 @@ }; }; +&enet { + status = "okay"; + phy = <&enetphy>; + phy-mode = "mii"; + + enetphy: fixed-link { + reg = <1>; + speed = <100>; + full-duplex; + }; +}; + &gpio { status = "okay"; }; diff --git a/configs/sagem_f@st1704_ram_defconfig b/configs/sagem_f@st1704_ram_defconfig index 0adcd46d51..1a640781b7 100644 --- a/configs/sagem_f@st1704_ram_defconfig +++ b/configs/sagem_f@st1704_ram_defconfig @@ -28,11 +28,15 @@ CONFIG_CMD_MEMINFO=y # CONFIG_CMD_LOADS is not set CONFIG_CMD_SF=y CONFIG_CMD_SPI=y -# CONFIG_CMD_NET is not set +CONFIG_CMD_DHCP=y # CONFIG_CMD_NFS is not set +CONFIG_CMD_MII=y +CONFIG_CMD_PING=y # CONFIG_CMD_MISC is not set CONFIG_OF_EMBED=y +CONFIG_NET_RANDOM_ETHADDR=y # CONFIG_DM_DEVICE_REMOVE is not set +CONFIG_BCM6348_IUDMA=y CONFIG_DM_GPIO=y CONFIG_BCM6345_GPIO=y CONFIG_LED=y @@ -41,6 +45,9 @@ CONFIG_DM_SPI_FLASH=y CONFIG_SPI_FLASH=y CONFIG_SPI_FLASH_WINBOND=y CONFIG_SPI_FLASH_MTD=y +CONFIG_PHY_FIXED=y +CONFIG_DM_ETH=y +CONFIG_BCM6348_ETH=y CONFIG_DM_RESET=y CONFIG_RESET_BCM6345=y # CONFIG_SPL_SERIAL_PRESENT is not set From patchwork Wed Feb 21 16:10:36 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?= X-Patchwork-Id: 876193 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="OGa4M2wS"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zmjQH3t41z9sWG for ; Thu, 22 Feb 2018 03:20:39 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id E0CD7C21F45; Wed, 21 Feb 2018 16:14:01 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED, RCVD_IN_MSPIKE_H2, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id C5BF3C21F47; Wed, 21 Feb 2018 16:11:16 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id AFBE2C21F48; Wed, 21 Feb 2018 16:11:02 +0000 (UTC) Received: from mail-wr0-f194.google.com (mail-wr0-f194.google.com [209.85.128.194]) by lists.denx.de (Postfix) with ESMTPS id 69858C21EC5 for ; Wed, 21 Feb 2018 16:10:58 +0000 (UTC) Received: by mail-wr0-f194.google.com with SMTP id z12so6006786wrg.4 for ; Wed, 21 Feb 2018 08:10:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=mDlpXBxm2YVwlO4WcabyCX25EfSd0WDQkbonZwRmtto=; b=OGa4M2wSMzcndC+pi3DuywPVI3OtvgPBwNM9GpIRL0IXd9SI+yuDex8WCW+5LVknb6 iNYUd9O5pjv+GXq9vbsC2deM4wMUFOsOz6AlS1MCGFWeyGHHljNPrFbbFvsfbTDrO9or eoX+q39UhAHO5D65U9ZrxjHqkAfDmNHOeWzRCmJ+9/bc7BXz9Oh3K8vlAYONwe7Zwhez yWjToQioFpleyCm0fuAj+LDCRVLiHiCgzuQuXbHSS2oKlBqDTYBJzz6PUj5cZX9f3f57 er5stAgKsd7yt8VzXKxULn2+IW4APkolWNLdV47hPqpBhISL6GF3ktOESgzt1gbb9IFS RO7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=mDlpXBxm2YVwlO4WcabyCX25EfSd0WDQkbonZwRmtto=; b=Fr+MZLFTs6WEqAId5kTqw8xHyAhYZNqJJjO74BQxS7cKDN8GldVrB1bMBmIlB74X5p cU7rvsc3C1QrxiAaa2OWGIyCeZY1nKTZ/BwP8xYdFTtVrIBfhsOPxqHr7UyUXXKQ16Kr p7/9O+CR/i/5U3BOoRXLx9uBjOu9M5t8VpxbbgyeQW58CsF+dYZxB0g1NApFv9Q1OGzP mJUYzTW/NTFlFJoUhPR153zRRQzDR1CaXz6+rm4n6iB4dWVBvz4pQkjOkhe+vSqthV5E DNRGgaoq/6+1Pkba7Qx944XeI2OdLPIis/EQ3HJjEb2N1BB0jEr+WlglWkiWOWteQASu u+pg== X-Gm-Message-State: APf1xPDQ5UwfuqQNU9bYP46SPVUD+hv3wbnRgGCC/bdX2roWp+ZXAJqG 8kFdmvTJ+UQ8HoFA5PYmENTMg3Uu X-Google-Smtp-Source: AH8x226iMcizucoWPrpzU98kks0LeE4dxxTeKFkIxZ8mElL8c6dyddCtkAhTVD5aN8c2DouKRbVutw== X-Received: by 10.223.162.152 with SMTP id s24mr3545105wra.148.1519229457931; Wed, 21 Feb 2018 08:10:57 -0800 (PST) Received: from skynet.lan (175.red-2-137-31.dynamicip.rima-tde.net. [2.137.31.175]) by smtp.gmail.com with ESMTPSA id l22sm1051357wre.52.2018.02.21.08.10.56 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 21 Feb 2018 08:10:57 -0800 (PST) From: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?= To: u-boot@lists.denx.de, daniel.schwierzeck@gmail.com, sjg@chromium.org, jagan@openedev.com, vigneshr@ti.com Date: Wed, 21 Feb 2018 17:10:36 +0100 Message-Id: <20180221161040.22246-12-noltari@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180221161040.22246-1-noltari@gmail.com> References: <20180212163858.25601-1-noltari@gmail.com> <20180221161040.22246-1-noltari@gmail.com> MIME-Version: 1.0 Subject: [U-Boot] [RFC v3 11/15] bmips: bcm6348: add support for bcm6348-enet X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Signed-off-by: Álvaro Fernández Rojas --- v3: no changes v2: no changes arch/mips/dts/brcm,bcm6348.dtsi | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/arch/mips/dts/brcm,bcm6348.dtsi b/arch/mips/dts/brcm,bcm6348.dtsi index d774c59665..e540865019 100644 --- a/arch/mips/dts/brcm,bcm6348.dtsi +++ b/arch/mips/dts/brcm,bcm6348.dtsi @@ -162,6 +162,32 @@ u-boot,dm-pre-reloc; }; + enet0: ethernet@fffe6000 { + compatible = "brcm,bcm6348-enet"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0xfffe6000 0x2dc>; + dmas = <&iudma BCM6348_DMA_ENET0_RX>, + <&iudma BCM6348_DMA_ENET0_TX>; + dma-names = "rx", + "tx"; + + status = "disabled"; + }; + + enet1: ethernet@fffe6800 { + compatible = "brcm,bcm6348-enet"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0xfffe6800 0x2dc>; + dmas = <&iudma BCM6348_DMA_ENET1_RX>, + <&iudma BCM6348_DMA_ENET1_TX>; + dma-names = "rx", + "tx"; + + status = "disabled"; + }; + iudma: dma-controller@fffe7000 { compatible = "brcm,bcm6348-iudma"; reg = <0xfffe7000 0x1c>, From patchwork Wed Feb 21 16:10:37 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?= X-Patchwork-Id: 876182 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="rGTsNGcI"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zmjLP2T7vz9sX0 for ; Thu, 22 Feb 2018 03:17:16 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 9FE26C21E45; Wed, 21 Feb 2018 16:14:35 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED, RCVD_IN_MSPIKE_H2, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 45581C21F1C; Wed, 21 Feb 2018 16:11:23 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id D557AC21F41; Wed, 21 Feb 2018 16:11:03 +0000 (UTC) Received: from mail-wr0-f194.google.com (mail-wr0-f194.google.com [209.85.128.194]) by lists.denx.de (Postfix) with ESMTPS id 908D4C21EEB for ; Wed, 21 Feb 2018 16:10:59 +0000 (UTC) Received: by mail-wr0-f194.google.com with SMTP id 34so5981081wre.13 for ; Wed, 21 Feb 2018 08:10:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=axklog+v7n3Ic7arwuG+dXQhxh84SgrDE+pkBDeIJ9Q=; b=rGTsNGcIakglOk1qIlR2+orJaN9W7P4t5IvlRyFCpDEa1ptnAOVx1slEqXr3gSNziH TdbN+Q4hICgCQLqhPctK1pR3aCq6vW8dakkRL7QFe6xJ7Hzkyfv1LnbtM0Pouxsu2ckd qjdPI6Gz9Ou+oKY+y/gH9z/isexMitL2H6D+pm7iT3x+24z/x0WPizfdHAncr4Sl4UHp 4Fo74J499qwUOipn9aofOUKtXEis2cmF1NGqukGA02vofhYkkBYwbkMjftt1u8b5B3ZT Ps9C7m+18LS2Gh7qZrC+aSMFxckG8YFh1F2/axwOJcs9uvcM3T9DnnBV2jyzIZwF3DzF XyIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=axklog+v7n3Ic7arwuG+dXQhxh84SgrDE+pkBDeIJ9Q=; b=fVMBfPG0xR2zfp6Z+NGLiwQfyk9HZx7vy7dnLDWisTpEfbOpjeP0M5SAucnfIbPdeG hxYiI+pb+FU2IduWe2ELtZxslxB+IccsEz8tMC9QbLhySMevOIkeaY7kS1pmPtyittgR GSdZhdypOyzaJkvVF3m47ijhTXIkz1bz1IuN+PFTT/NtVg/cTTkvShKWOBlOu+RmSvax ll9wg1rQXFtepumBNEZf3L6VUc7iZhW9vIyauLRHnbIVkgdduSquBSkNAly0djiBmzN6 boSjQSkxwmuhKXNPmFIhBTZ5asD81XP88b2n3FgnVgIrXnAqlm7XdvsneFjqMzWLyd4L rHqQ== X-Gm-Message-State: APf1xPB4xdogr3QWp66cDBSgxrrjXa2V9UF9DzvUYKdX4cZ16xC3eAz9 cS/EYjd7UnCMm8ul4FAiMJmULeiz X-Google-Smtp-Source: AH8x226JMKXj89nnPFD8e3SUrjI6QC2g5qaa//v95Oxz7fmnlEFzKgNhTAbh1unNVuxFnwTwHYVzdA== X-Received: by 10.28.212.13 with SMTP id l13mr2584628wmg.83.1519229458993; Wed, 21 Feb 2018 08:10:58 -0800 (PST) Received: from skynet.lan (175.red-2-137-31.dynamicip.rima-tde.net. [2.137.31.175]) by smtp.gmail.com with ESMTPSA id l22sm1051357wre.52.2018.02.21.08.10.57 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 21 Feb 2018 08:10:58 -0800 (PST) From: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?= To: u-boot@lists.denx.de, daniel.schwierzeck@gmail.com, sjg@chromium.org, jagan@openedev.com, vigneshr@ti.com Date: Wed, 21 Feb 2018 17:10:37 +0100 Message-Id: <20180221161040.22246-13-noltari@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180221161040.22246-1-noltari@gmail.com> References: <20180212163858.25601-1-noltari@gmail.com> <20180221161040.22246-1-noltari@gmail.com> MIME-Version: 1.0 Subject: [U-Boot] [RFC v3 12/15] bmips: enable ct-5361 enet support X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Signed-off-by: Álvaro Fernández Rojas --- v3: no changes v2: no changes arch/mips/dts/comtrend,ct-5361.dts | 12 ++++++++++++ configs/comtrend_ct5361_ram_defconfig | 8 +++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/arch/mips/dts/comtrend,ct-5361.dts b/arch/mips/dts/comtrend,ct-5361.dts index 74dc09046c..a78aa877fc 100644 --- a/arch/mips/dts/comtrend,ct-5361.dts +++ b/arch/mips/dts/comtrend,ct-5361.dts @@ -35,6 +35,18 @@ }; }; +&enet1 { + status = "okay"; + phy = <&enet1phy>; + phy-mode = "mii"; + + enet1phy: fixed-link { + reg = <1>; + speed = <100>; + full-duplex; + }; +}; + &gpio0 { status = "okay"; }; diff --git a/configs/comtrend_ct5361_ram_defconfig b/configs/comtrend_ct5361_ram_defconfig index 8b842606f5..0737772dd2 100644 --- a/configs/comtrend_ct5361_ram_defconfig +++ b/configs/comtrend_ct5361_ram_defconfig @@ -26,11 +26,14 @@ CONFIG_CMD_MEMINFO=y # CONFIG_CMD_FPGA is not set # CONFIG_CMD_LOADS is not set CONFIG_CMD_USB=y -# CONFIG_CMD_NET is not set # CONFIG_CMD_NFS is not set +CONFIG_CMD_MII=y +CONFIG_CMD_PING=y # CONFIG_CMD_MISC is not set CONFIG_OF_EMBED=y +CONFIG_NET_RANDOM_ETHADDR=y # CONFIG_DM_DEVICE_REMOVE is not set +CONFIG_BCM6348_IUDMA=y CONFIG_DM_GPIO=y CONFIG_BCM6345_GPIO=y CONFIG_LED=y @@ -38,6 +41,9 @@ CONFIG_LED_GPIO=y CONFIG_MTD=y CONFIG_MTD_NOR_FLASH=y CONFIG_CFI_FLASH=y +CONFIG_PHY_FIXED=y +CONFIG_DM_ETH=y +CONFIG_BCM6348_ETH=y CONFIG_PHY=y CONFIG_BCM6348_USBH_PHY=y CONFIG_DM_RESET=y From patchwork Wed Feb 21 16:10:38 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?= X-Patchwork-Id: 876181 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="QePsgZ5o"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zmjL63C73z9sWc for ; Thu, 22 Feb 2018 03:17:02 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 03284C21F07; Wed, 21 Feb 2018 16:14:18 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED, RCVD_IN_MSPIKE_H2, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id AC534C21F3D; Wed, 21 Feb 2018 16:11:17 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id C47B6C21F49; Wed, 21 Feb 2018 16:11:04 +0000 (UTC) Received: from mail-wr0-f195.google.com (mail-wr0-f195.google.com [209.85.128.195]) by lists.denx.de (Postfix) with ESMTPS id 88EB5C21F0F for ; Wed, 21 Feb 2018 16:11:00 +0000 (UTC) Received: by mail-wr0-f195.google.com with SMTP id f14so5978614wre.8 for ; Wed, 21 Feb 2018 08:11:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=PacEUUK2OJA3NfrpxOO69h4cZMd2nSfdkK3Qb9Ky9YY=; b=QePsgZ5o3Sg+bWfPvRSQ1vqMufNWqfv7JlMa3EeYAMFpxS0KckTcTaH7f3u2tmkUVa fPi+N8zDU9/82VRDf2Dn7p+JmFqz3FaPwwHx4VNj70fBm3Uzw4LuocA6ckFRM/zbYqI1 nraAzl3Rbk8Xd7Rfiwe7keb4wu4agJ7geDMUXuJPF1qMHwmDRMNRfYVXRzlnDudHQ5tZ E4e1dLfPi+XjSYAYCEDMhD3zrKNVxGk8iy6iZ6tHtoUANKL/66wxwDrYZ2bWkLM505gg blkfCEF7FNWApYGyL4gSzt+fjEaFoFESZ9Y7OFVQCTjDqX6C7DBedgd6bYw9H9KWQBPW R5Mg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=PacEUUK2OJA3NfrpxOO69h4cZMd2nSfdkK3Qb9Ky9YY=; b=C24jVRd9j4fwUjYZn5iAsn77bJkwy7qNZuASOh1V6HuwtFABNA4Xb70xFv1EFObBVE VyqOt0HWGFUWYg+ZabQH7IJkemBiJXp4NZeVQbzkUwSbNiB+T+cFUlZ58hLxgEHX8za5 kG6N1nFjRheeG+9bwkwN7QK5GAbuj9PnkJYxNtmEIeuIHdnx2ghWa29abj09+sHecIaU lf84Ek/r/Mifs3mT64SAMpqHlRd4eEl1areNywQ/gIMU4SzSLVR8A7ac2W5jddi8Djxb +5tMjs5hnA61H5NzYFXymWXdwYtZOA1Nm1lpupFnTn8FDDRluznmo0ybv2jX60CO0hFC klTw== X-Gm-Message-State: APf1xPCxEwUFNOIzSL6YbaliXcCifRtNBgYkbxWgzBzuqZ+DJSd+2/01 o5CmLO3Rvdk2jsi9Tc0ol+8ljrXz X-Google-Smtp-Source: AH8x227Vpx+UPwQGkDEyM7jP84hCi//7GuYmDG+o8clMmkXxH8XgVQBjRJMvbgcPcdSJonrJO9Mjaw== X-Received: by 10.28.112.21 with SMTP id l21mr154985wmc.70.1519229459976; Wed, 21 Feb 2018 08:10:59 -0800 (PST) Received: from skynet.lan (175.red-2-137-31.dynamicip.rima-tde.net. [2.137.31.175]) by smtp.gmail.com with ESMTPSA id l22sm1051357wre.52.2018.02.21.08.10.59 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 21 Feb 2018 08:10:59 -0800 (PST) From: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?= To: u-boot@lists.denx.de, daniel.schwierzeck@gmail.com, sjg@chromium.org, jagan@openedev.com, vigneshr@ti.com Date: Wed, 21 Feb 2018 17:10:38 +0100 Message-Id: <20180221161040.22246-14-noltari@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180221161040.22246-1-noltari@gmail.com> References: <20180212163858.25601-1-noltari@gmail.com> <20180221161040.22246-1-noltari@gmail.com> MIME-Version: 1.0 Subject: [U-Boot] [RFC v3 13/15] bmips: bcm6358: add support for bcm6348-enet X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Signed-off-by: Álvaro Fernández Rojas --- v3: no changes v2: no changes arch/mips/dts/brcm,bcm6358.dtsi | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/arch/mips/dts/brcm,bcm6358.dtsi b/arch/mips/dts/brcm,bcm6358.dtsi index 1468e4f63a..04329864c2 100644 --- a/arch/mips/dts/brcm,bcm6358.dtsi +++ b/arch/mips/dts/brcm,bcm6358.dtsi @@ -193,6 +193,34 @@ status = "disabled"; }; + enet0: ethernet@fffe4000 { + compatible = "brcm,bcm6348-enet"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0xfffe4000 0x2dc>; + clocks = <&periph_clk BCM6358_CLK_ENET0>; + dmas = <&iudma BCM6358_DMA_ENET0_RX>, + <&iudma BCM6358_DMA_ENET0_TX>; + dma-names = "rx", + "tx"; + + status = "disabled"; + }; + + enet1: ethernet@fffe4800 { + compatible = "brcm,bcm6348-enet"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0xfffe4800 0x2dc>; + clocks = <&periph_clk BCM6358_CLK_ENET1>; + dmas = <&iudma BCM6358_DMA_ENET1_RX>, + <&iudma BCM6358_DMA_ENET1_TX>; + dma-names = "rx", + "tx"; + + status = "disabled"; + }; + iudma: dma-controller@fffe5000 { compatible = "brcm,bcm6348-iudma"; reg = <0xfffe5000 0x24>, From patchwork Wed Feb 21 16:10:39 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?= X-Patchwork-Id: 876192 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="SDcTmRoC"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zmjPs6W31z9sW2 for ; Thu, 22 Feb 2018 03:20:17 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 63A18C21E50; Wed, 21 Feb 2018 16:13:42 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED, RCVD_IN_MSPIKE_H2, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 101D8C21F38; Wed, 21 Feb 2018 16:11:16 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id D88D1C21E57; Wed, 21 Feb 2018 16:11:05 +0000 (UTC) Received: from mail-wr0-f194.google.com (mail-wr0-f194.google.com [209.85.128.194]) by lists.denx.de (Postfix) with ESMTPS id B4879C21F2A for ; Wed, 21 Feb 2018 16:11:01 +0000 (UTC) Received: by mail-wr0-f194.google.com with SMTP id v65so5979332wrc.11 for ; Wed, 21 Feb 2018 08:11:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=h1N+umCP+iANi8bbQ3T/2Zqbb79HKqLs4qgqr9T6+No=; b=SDcTmRoCSiuPxOuEsw401FKiLTecshjPllgDDpI9pUDuGCtlcTdWDETuI+ojlFGuRs 8VAaWdXqNLUkvY40KNucLw54VM/Pok488mlmov+gxV7YVl4A68IvtOUo5fQmFOoUn4b3 3Kz2UM9SCcw43oXLd4IuVy4y3TUopbEomZqCQzxOaVthWOxoR5QJVL4Kxw3TtVurmwKh 5EZPgXpT01E0CCeNjO9c0H+xa0EaOKe7b29EDmT6b0py9RaQVVrOAMtEh1vyR3Bgh+kS qUvRlJU7iWiyOZA5T0cn7CaRUZuM3nhCpjJi1xS/37bu7ygsksiYJ483BrNE9ZdndGoe FNcg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=h1N+umCP+iANi8bbQ3T/2Zqbb79HKqLs4qgqr9T6+No=; b=CBtowT3p0ViqMSEc5+O9b/w6d15wYQXysv4JFYf/GMR2lQQAZ4tt7V9FOHj5vJxqGP XW1Qz7UtGniptlg0jBQLPv5od2C0MyuS8wZzkzfrzgPqnIfiLdB0/5BRHlTGXtJRZfZx 4rctTol5wGK5f9FBoDVseNZ/+5tQKFpo+ZJEKMm4hhKXaJhuLHeKNrfIUO4nxDINaRBx kChUxnJKRfNtW5sUuCYH1I8kHrZ3bJcQJjSPZMWM1kfntxyxLFYtPtS+u2WDoPPnE2H6 NlRI8e0pF/N1rhs8cXKA2lL/H3KphZ9hVFYCK7Hsbiz/sZKgCwV3Y1yltHd5kEc9MhrD m+2g== X-Gm-Message-State: APf1xPBoOaDkPM629jwWVu/6fu29fgPJEUD1AJfMZ2eunYrJ2MaHp8M+ TWvtQm494yoCt1ErxXgpUdf6KOUk X-Google-Smtp-Source: AH8x225jFseq2YqzTc4oQSThfUgtUfSgMjkKg5YiMm7KgpLpZ1PgC7NXWFU9R2mF7l3vuYEZwT/oLA== X-Received: by 10.28.88.70 with SMTP id m67mr2587927wmb.134.1519229461239; Wed, 21 Feb 2018 08:11:01 -0800 (PST) Received: from skynet.lan (175.red-2-137-31.dynamicip.rima-tde.net. [2.137.31.175]) by smtp.gmail.com with ESMTPSA id l22sm1051357wre.52.2018.02.21.08.11.00 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 21 Feb 2018 08:11:00 -0800 (PST) From: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?= To: u-boot@lists.denx.de, daniel.schwierzeck@gmail.com, sjg@chromium.org, jagan@openedev.com, vigneshr@ti.com Date: Wed, 21 Feb 2018 17:10:39 +0100 Message-Id: <20180221161040.22246-15-noltari@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180221161040.22246-1-noltari@gmail.com> References: <20180212163858.25601-1-noltari@gmail.com> <20180221161040.22246-1-noltari@gmail.com> MIME-Version: 1.0 Subject: [U-Boot] [RFC v3 14/15] bmips: enable hg556a enet support X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Signed-off-by: Álvaro Fernández Rojas --- v3: no changes v2: no changes arch/mips/dts/huawei,hg556a.dts | 12 ++++++++++++ configs/huawei_hg556a_ram_defconfig | 8 +++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/arch/mips/dts/huawei,hg556a.dts b/arch/mips/dts/huawei,hg556a.dts index a1e9c15ab9..2f99e0905c 100644 --- a/arch/mips/dts/huawei,hg556a.dts +++ b/arch/mips/dts/huawei,hg556a.dts @@ -94,6 +94,18 @@ status = "okay"; }; +&enet1 { + status = "okay"; + phy = <&enet1phy>; + phy-mode = "mii"; + + enet1phy: fixed-link { + reg = <1>; + speed = <100>; + full-duplex; + }; +}; + &gpio0 { status = "okay"; }; diff --git a/configs/huawei_hg556a_ram_defconfig b/configs/huawei_hg556a_ram_defconfig index 7f7f34ed61..c7c7c6554f 100644 --- a/configs/huawei_hg556a_ram_defconfig +++ b/configs/huawei_hg556a_ram_defconfig @@ -26,11 +26,14 @@ CONFIG_CMD_MEMINFO=y # CONFIG_CMD_FPGA is not set # CONFIG_CMD_LOADS is not set CONFIG_CMD_USB=y -# CONFIG_CMD_NET is not set # CONFIG_CMD_NFS is not set +CONFIG_CMD_MII=y +CONFIG_CMD_PING=y # CONFIG_CMD_MISC is not set CONFIG_OF_EMBED=y +CONFIG_NET_RANDOM_ETHADDR=y # CONFIG_DM_DEVICE_REMOVE is not set +CONFIG_BCM6348_IUDMA=y CONFIG_DM_GPIO=y CONFIG_BCM6345_GPIO=y CONFIG_LED=y @@ -38,6 +41,9 @@ CONFIG_LED_GPIO=y CONFIG_MTD=y CONFIG_MTD_NOR_FLASH=y CONFIG_CFI_FLASH=y +CONFIG_PHY_FIXED=y +CONFIG_DM_ETH=y +CONFIG_BCM6348_ETH=y CONFIG_PHY=y CONFIG_BCM6358_USBH_PHY=y CONFIG_DM_RESET=y From patchwork Wed Feb 21 16:10:40 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?= X-Patchwork-Id: 876187 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="jNRt5ZdB"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zmjNT4jmNz9sW2 for ; Thu, 22 Feb 2018 03:19:04 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id B93AAC21F38; Wed, 21 Feb 2018 16:16:20 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED, RCVD_IN_MSPIKE_H2, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id B89E9C21F18; Wed, 21 Feb 2018 16:11:57 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id ADD50C21DD9; Wed, 21 Feb 2018 16:11:07 +0000 (UTC) Received: from mail-wr0-f193.google.com (mail-wr0-f193.google.com [209.85.128.193]) by lists.denx.de (Postfix) with ESMTPS id BDE5CC21E1E for ; Wed, 21 Feb 2018 16:11:02 +0000 (UTC) Received: by mail-wr0-f193.google.com with SMTP id 34so5981594wre.13 for ; Wed, 21 Feb 2018 08:11:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ar1XKe77a7LKgxyF4FkKD3xxSCuJDz6eopaAFy6bUJo=; b=jNRt5ZdBLBSVVS52h6XN/6cuxqOUrhw5k7nxh0saNbTtwObt+jR7GYI8hHpNU4L2hV 378BCqdIMTnlTgmAtlEbKWRgzD1XpiRfuN1YuESU2iTqvkcCZBN1BPpY4zHIUC8YA0pm zufXM3euad9SITn7w6xPgGaD2CZnD/AGVUWqUvqDlrXpBHEy83scMdow9duwdlz2s4wr MAQSeGr0ZbXM5PSSaBLa1NT2e+JRM/JaPUbKf34s9nSWlaOpKkM5Y10YZCgYxprXBHcI knRSYDZ2Zwr0XgJLxIwO5OAfhW4HUyRX/rVHDGjm9aiZipLjomRtSRGAqkEaKp/ajBtn 8WbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ar1XKe77a7LKgxyF4FkKD3xxSCuJDz6eopaAFy6bUJo=; b=W2HYmA8DcfXMl7QSDqNEhWTCnbrJZ9E6aTWXHLY41l72X4W05zUXET7ZRUSBCqBKSZ ft0m30gARodWKco6Y1eG92XMtNEX9oU11+/m2mb9YK4IUUKju7lm5t9y68dmLhNHOaxd 0nojru8QxRAgWsU/QE7xYUtQk2vWcR8of+jPkbrYsS8UvMCYZ9HP5N8O4IlsB0hjAGb/ GTY/LQirtyMhpck93Biqr81KwjQLrvy71hO3YFvx4mlzrP9UKB/G6ctY/8zQiuuzYgM7 J4A1Ls8+HXFNxvf6pBH02HIR45g7UqpWDDggVeFf+uoMNQNitswaDhh4Yh8GXaC6HaFC GM9w== X-Gm-Message-State: APf1xPC4yR16gti6Ne4XcMuTqcqhQxz75KZgSQG6i+uNUaSHM30KtWdg L7vDxot2jABI5I4p7akeIYHqq9OZ X-Google-Smtp-Source: AH8x227KoEWJLV7T2jUnHt7hbHWP/uVyW3bSJcayXl2WcV4NVmrxpnAByUD/QT9h4kgzXKiQD1qDHw== X-Received: by 10.28.35.77 with SMTP id j74mr2365752wmj.96.1519229462206; Wed, 21 Feb 2018 08:11:02 -0800 (PST) Received: from skynet.lan (175.red-2-137-31.dynamicip.rima-tde.net. [2.137.31.175]) by smtp.gmail.com with ESMTPSA id l22sm1051357wre.52.2018.02.21.08.11.01 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 21 Feb 2018 08:11:01 -0800 (PST) From: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?= To: u-boot@lists.denx.de, daniel.schwierzeck@gmail.com, sjg@chromium.org, jagan@openedev.com, vigneshr@ti.com Date: Wed, 21 Feb 2018 17:10:40 +0100 Message-Id: <20180221161040.22246-16-noltari@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180221161040.22246-1-noltari@gmail.com> References: <20180212163858.25601-1-noltari@gmail.com> <20180221161040.22246-1-noltari@gmail.com> MIME-Version: 1.0 Subject: [U-Boot] [RFC v3 15/15] bmips: enable nb4-ser enet support X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Signed-off-by: Álvaro Fernández Rojas --- v3: no changes v2: no changes arch/mips/dts/sfr,nb4-ser.dts | 24 ++++++++++++++++++++++++ configs/sfr_nb4-ser_ram_defconfig | 8 +++++++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/arch/mips/dts/sfr,nb4-ser.dts b/arch/mips/dts/sfr,nb4-ser.dts index 473372faa1..73db45f9ea 100644 --- a/arch/mips/dts/sfr,nb4-ser.dts +++ b/arch/mips/dts/sfr,nb4-ser.dts @@ -54,6 +54,30 @@ status = "okay"; }; +&enet0 { + status = "okay"; + phy = <&enet0phy>; + phy-mode = "internal"; + + enet0phy: fixed-link { + reg = <1>; + speed = <100>; + full-duplex; + }; +}; + +&enet1 { + status = "okay"; + phy = <&enet1phy>; + phy-mode = "mii"; + + enet1phy: fixed-link { + reg = <1>; + speed = <100>; + full-duplex; + }; +}; + &gpio0 { status = "okay"; }; diff --git a/configs/sfr_nb4-ser_ram_defconfig b/configs/sfr_nb4-ser_ram_defconfig index fc323d879d..07b49a1a77 100644 --- a/configs/sfr_nb4-ser_ram_defconfig +++ b/configs/sfr_nb4-ser_ram_defconfig @@ -27,11 +27,14 @@ CONFIG_CMD_MEMINFO=y # CONFIG_CMD_FPGA is not set # CONFIG_CMD_LOADS is not set CONFIG_CMD_USB=y -# CONFIG_CMD_NET is not set # CONFIG_CMD_NFS is not set +CONFIG_CMD_MII=y +CONFIG_CMD_PING=y # CONFIG_CMD_MISC is not set CONFIG_OF_EMBED=y +CONFIG_NET_RANDOM_ETHADDR=y # CONFIG_DM_DEVICE_REMOVE is not set +CONFIG_BCM6348_IUDMA=y CONFIG_DM_GPIO=y CONFIG_BCM6345_GPIO=y CONFIG_LED=y @@ -40,6 +43,9 @@ CONFIG_LED_GPIO=y CONFIG_MTD=y CONFIG_MTD_NOR_FLASH=y CONFIG_CFI_FLASH=y +CONFIG_PHY_FIXED=y +CONFIG_DM_ETH=y +CONFIG_BCM6348_ETH=y CONFIG_PHY=y CONFIG_BCM6358_USBH_PHY=y CONFIG_DM_RESET=y