* [PATCH net-next 1/2 v10] net: ethernet: Add DT bindings for the Gemini ethernet
@ 2018-01-09 22:10 Linus Walleij
2018-01-10 20:40 ` David Miller
[not found] ` <20180109221053.927-2-linus.walleij@linaro.org>
0 siblings, 2 replies; 5+ messages in thread
From: Linus Walleij @ 2018-01-09 22:10 UTC (permalink / raw)
To: linux-arm-kernel
This adds the device tree bindings for the Gemini ethernet
controller. It is pretty straight-forward, using standard
bindings and modelling the two child ports as child devices
under the parent ethernet controller device.
Cc: devicetree at vger.kernel.org
Cc: Tobias Waldvogel <tobias.waldvogel@gmail.com>
Cc: Micha? Miros?aw <mirq-linux@rere.qmqm.pl>
Reviewed-by: Rob Herring <robh@kernel.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
---
ChangeLog v9->v10:
- Resend with the driver.
ChangeLog v8->v9:
- Collect Rob's ACK.
ChangeLog v7->v8:
- Use ethernet-port at 0 and ethernet-port at 1 with unit names
and following OF graph requirements.
---
.../bindings/net/cortina,gemini-ethernet.txt | 92 ++++++++++++++++++++++
1 file changed, 92 insertions(+)
create mode 100644 Documentation/devicetree/bindings/net/cortina,gemini-ethernet.txt
diff --git a/Documentation/devicetree/bindings/net/cortina,gemini-ethernet.txt b/Documentation/devicetree/bindings/net/cortina,gemini-ethernet.txt
new file mode 100644
index 000000000000..6c559981d110
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/cortina,gemini-ethernet.txt
@@ -0,0 +1,92 @@
+Cortina Systems Gemini Ethernet Controller
+==========================================
+
+This ethernet controller is found in the Gemini SoC family:
+StorLink SL3512 and SL3516, also known as Cortina Systems
+CS3512 and CS3516.
+
+Required properties:
+- compatible: must be "cortina,gemini-ethernet"
+- reg: must contain the global registers and the V-bit and A-bit
+ memory areas, in total three register sets.
+- syscon: a phandle to the system controller
+- #address-cells: must be specified, must be <1>
+- #size-cells: must be specified, must be <1>
+- ranges: should be state like this giving a 1:1 address translation
+ for the subnodes
+
+The subnodes represents the two ethernet ports in this device.
+They are not independent of each other since they share resources
+in the parent node, and are thus children.
+
+Required subnodes:
+- port0: contains the resources for ethernet port 0
+- port1: contains the resources for ethernet port 1
+
+Required subnode properties:
+- compatible: must be "cortina,gemini-ethernet-port"
+- reg: must contain two register areas: the DMA/TOE memory and
+ the GMAC memory area of the port
+- interrupts: should contain the interrupt line of the port.
+ this is nominally a level interrupt active high.
+- resets: this must provide an SoC-integrated reset line for
+ the port.
+- clocks: this should contain a handle to the PCLK clock for
+ clocking the silicon in this port
+- clock-names: must be "PCLK"
+
+Optional subnode properties:
+- phy-mode: see ethernet.txt
+- phy-handle: see ethernet.txt
+
+Example:
+
+mdio-bus {
+ (...)
+ phy0: ethernet-phy at 1 {
+ reg = <1>;
+ device_type = "ethernet-phy";
+ };
+ phy1: ethernet-phy at 3 {
+ reg = <3>;
+ device_type = "ethernet-phy";
+ };
+};
+
+
+ethernet at 60000000 {
+ compatible = "cortina,gemini-ethernet";
+ reg = <0x60000000 0x4000>, /* Global registers, queue */
+ <0x60004000 0x2000>, /* V-bit */
+ <0x60006000 0x2000>; /* A-bit */
+ syscon = <&syscon>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+
+ gmac0: ethernet-port at 0 {
+ compatible = "cortina,gemini-ethernet-port";
+ reg = <0x60008000 0x2000>, /* Port 0 DMA/TOE */
+ <0x6000a000 0x2000>; /* Port 0 GMAC */
+ interrupt-parent = <&intcon>;
+ interrupts = <1 IRQ_TYPE_LEVEL_HIGH>;
+ resets = <&syscon GEMINI_RESET_GMAC0>;
+ clocks = <&syscon GEMINI_CLK_GATE_GMAC0>;
+ clock-names = "PCLK";
+ phy-mode = "rgmii";
+ phy-handle = <&phy0>;
+ };
+
+ gmac1: ethernet-port at 1 {
+ compatible = "cortina,gemini-ethernet-port";
+ reg = <0x6000c000 0x2000>, /* Port 1 DMA/TOE */
+ <0x6000e000 0x2000>; /* Port 1 GMAC */
+ interrupt-parent = <&intcon>;
+ interrupts = <2 IRQ_TYPE_LEVEL_HIGH>;
+ resets = <&syscon GEMINI_RESET_GMAC1>;
+ clocks = <&syscon GEMINI_CLK_GATE_GMAC1>;
+ clock-names = "PCLK";
+ phy-mode = "rgmii";
+ phy-handle = <&phy1>;
+ };
+};
--
2.14.3
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH net-next 1/2 v10] net: ethernet: Add DT bindings for the Gemini ethernet
2018-01-09 22:10 [PATCH net-next 1/2 v10] net: ethernet: Add DT bindings for the Gemini ethernet Linus Walleij
@ 2018-01-10 20:40 ` David Miller
[not found] ` <20180109221053.927-2-linus.walleij@linaro.org>
1 sibling, 0 replies; 5+ messages in thread
From: David Miller @ 2018-01-10 20:40 UTC (permalink / raw)
To: linux-arm-kernel
From: Linus Walleij <linus.walleij@linaro.org>
Date: Tue, 9 Jan 2018 23:10:52 +0100
> This adds the device tree bindings for the Gemini ethernet
> controller. It is pretty straight-forward, using standard
> bindings and modelling the two child ports as child devices
> under the parent ethernet controller device.
>
> Cc: devicetree at vger.kernel.org
> Cc: Tobias Waldvogel <tobias.waldvogel@gmail.com>
> Cc: Micha? Miros?aw <mirq-linux@rere.qmqm.pl>
> Reviewed-by: Rob Herring <robh@kernel.org>
> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Applied.
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH net-next 2/2 v10] net: ethernet: Add a driver for Gemini gigabit ethernet
[not found] ` <20180109221053.927-2-linus.walleij@linaro.org>
@ 2018-01-10 20:41 ` David Miller
2018-01-10 20:43 ` David Miller
0 siblings, 1 reply; 5+ messages in thread
From: David Miller @ 2018-01-10 20:41 UTC (permalink / raw)
To: linux-arm-kernel
From: Linus Walleij <linus.walleij@linaro.org>
Date: Tue, 9 Jan 2018 23:10:53 +0100
> The Gemini ethernet has been around for years as an out-of-tree
> patch used with the NAS boxen and routers built on StorLink
> SL3512 and SL3516, later Storm Semiconductor, later Cortina
> Systems. These ASICs are still being deployed and brand new
> off-the-shelf systems using it can easily be acquired.
>
> The full name of the IP block is "Net Engine and Gigabit
> Ethernet MAC" commonly just called "GMAC".
>
> The hardware block contains a common TCP Offload Enginer (TOE)
> that can be used by both MACs. The current driver does not use
> it.
>
> Cc: Tobias Waldvogel <tobias.waldvogel@gmail.com>
> Signed-off-by: Micha? Miros?aw <mirq-linux@rere.qmqm.pl>
> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Applied.
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH net-next 2/2 v10] net: ethernet: Add a driver for Gemini gigabit ethernet
2018-01-10 20:41 ` [PATCH net-next 2/2 v10] net: ethernet: Add a driver for Gemini gigabit ethernet David Miller
@ 2018-01-10 20:43 ` David Miller
2018-01-10 22:02 ` Linus Walleij
0 siblings, 1 reply; 5+ messages in thread
From: David Miller @ 2018-01-10 20:43 UTC (permalink / raw)
To: linux-arm-kernel
Actually I had to revert these two patches, this stuff doesn't even
build.
[davem at dhcp-10-15-49-227 net-next]$ make -s -j16
In file included from ./include/linux/printk.h:329:0,
from ./include/linux/kernel.h:14,
from ./include/linux/list.h:9,
from ./include/linux/module.h:9,
from drivers/net/ethernet/cortina/gemini.c:16:
drivers/net/ethernet/cortina/gemini.c: In function ?geth_freeq_alloc_map_page?:
drivers/net/ethernet/cortina/gemini.c:821:21: warning: format ?%x? expects argument of type ?unsigned int?, but argument 5 has type ?dma_addr_t {aka long long unsigned int}? [-Wformat=]
dev_dbg(geth->dev, "page %d, DMA addr: %08x, page %p\n",
^
./include/linux/dynamic_debug.h:135:39: note: in definition of macro ?dynamic_dev_dbg?
__dynamic_dev_dbg(&descriptor, dev, fmt, \
^~~
drivers/net/ethernet/cortina/gemini.c:821:2: note: in expansion of macro ?dev_dbg?
dev_dbg(geth->dev, "page %d, DMA addr: %08x, page %p\n",
^~~~~~~
drivers/net/ethernet/cortina/gemini.c: In function ?gmac_rx?:
drivers/net/ethernet/cortina/gemini.c:1410:50: warning: format ?%x? expects argument of type ?unsigned int?, but argument 3 has type ?dma_addr_t {aka long long unsigned int}? [-Wformat=]
dev_err(geth->dev, "could not find mapping %08x (page = %08x, page off = %08x)\n",
~~~^
%08llx
drivers/net/ethernet/cortina/gemini.c:1410:63: warning: format ?%x? expects argument of type ?unsigned int?, but argument 4 has type ?long long unsigned int? [-Wformat=]
dev_err(geth->dev, "could not find mapping %08x (page = %08x, page off = %08x)\n",
~~~^
%08llx
drivers/net/ethernet/cortina/gemini.c: In function ?gemini_ethernet_port_probe?:
drivers/net/ethernet/cortina/gemini.c:2456:28: warning: format ?%x? expects argument of type ?unsigned int?, but argument 4 has type ?resource_size_t {aka long long unsigned int}? [-Wformat=]
"irq %d, DMA @ 0x%08x, GMAC @ 0x%08x\n",
~~~^
%08llx
port->irq, dmares->start,
~~~~~~~~~~~~~
drivers/net/ethernet/cortina/gemini.c:2456:43: warning: format ?%x? expects argument of type ?unsigned int?, but argument 5 has type ?resource_size_t {aka long long unsigned int}? [-Wformat=]
"irq %d, DMA @ 0x%08x, GMAC @ 0x%08x\n",
~~~^
%08llx
drivers/net/ethernet/cortina/gemini.c:2458:8:
gmacres->start);
~~~~~~~~~~~~~~
In file included from drivers/net/ethernet/cortina/gemini.c:16:0:
drivers/net/ethernet/cortina/gemini.c: At top level:
./include/linux/module.h:129:42: error: redefinition of ?__inittest?
static inline initcall_t __maybe_unused __inittest(void) \
^
./include/linux/device.h:1513:1: note: in expansion of macro ?module_init?
module_init(__driver##_init); \
^~~~~~~~~~~
./include/linux/platform_device.h:228:2: note: in expansion of macro ?module_driver?
module_driver(__platform_driver, platform_driver_register, \
^~~~~~~~~~~~~
drivers/net/ethernet/cortina/gemini.c:2567:1: note: in expansion of macro ?module_platform_driver?
module_platform_driver(gemini_ethernet_driver);
^~~~~~~~~~~~~~~~~~~~~~
./include/linux/module.h:129:42: note: previous definition of ?__inittest? was here
static inline initcall_t __maybe_unused __inittest(void) \
^
./include/linux/device.h:1513:1: note: in expansion of macro ?module_init?
module_init(__driver##_init); \
^~~~~~~~~~~
./include/linux/platform_device.h:228:2: note: in expansion of macro ?module_driver?
module_driver(__platform_driver, platform_driver_register, \
^~~~~~~~~~~~~
drivers/net/ethernet/cortina/gemini.c:2495:1: note: in expansion of macro ?module_platform_driver?
module_platform_driver(gemini_ethernet_port_driver);
^~~~~~~~~~~~~~~~~~~~~~
./include/linux/module.h:131:6: error: redefinition of ?init_module?
int init_module(void) __attribute__((alias(#initfn)));
^
./include/linux/device.h:1513:1: note: in expansion of macro ?module_init?
module_init(__driver##_init); \
^~~~~~~~~~~
./include/linux/platform_device.h:228:2: note: in expansion of macro ?module_driver?
module_driver(__platform_driver, platform_driver_register, \
^~~~~~~~~~~~~
drivers/net/ethernet/cortina/gemini.c:2567:1: note: in expansion of macro ?module_platform_driver?
module_platform_driver(gemini_ethernet_driver);
^~~~~~~~~~~~~~~~~~~~~~
./include/linux/module.h:131:6: note: previous definition of ?init_module? was here
int init_module(void) __attribute__((alias(#initfn)));
^
./include/linux/device.h:1513:1: note: in expansion of macro ?module_init?
module_init(__driver##_init); \
^~~~~~~~~~~
./include/linux/platform_device.h:228:2: note: in expansion of macro ?module_driver?
module_driver(__platform_driver, platform_driver_register, \
^~~~~~~~~~~~~
drivers/net/ethernet/cortina/gemini.c:2495:1: note: in expansion of macro ?module_platform_driver?
module_platform_driver(gemini_ethernet_port_driver);
^~~~~~~~~~~~~~~~~~~~~~
./include/linux/module.h:135:42: error: redefinition of ?__exittest?
static inline exitcall_t __maybe_unused __exittest(void) \
^
./include/linux/device.h:1518:1: note: in expansion of macro ?module_exit?
module_exit(__driver##_exit);
^~~~~~~~~~~
./include/linux/platform_device.h:228:2: note: in expansion of macro ?module_driver?
module_driver(__platform_driver, platform_driver_register, \
^~~~~~~~~~~~~
drivers/net/ethernet/cortina/gemini.c:2567:1: note: in expansion of macro ?module_platform_driver?
module_platform_driver(gemini_ethernet_driver);
^~~~~~~~~~~~~~~~~~~~~~
./include/linux/module.h:135:42: note: previous definition of ?__exittest? was here
static inline exitcall_t __maybe_unused __exittest(void) \
^
./include/linux/device.h:1518:1: note: in expansion of macro ?module_exit?
module_exit(__driver##_exit);
^~~~~~~~~~~
./include/linux/platform_device.h:228:2: note: in expansion of macro ?module_driver?
module_driver(__platform_driver, platform_driver_register, \
^~~~~~~~~~~~~
drivers/net/ethernet/cortina/gemini.c:2495:1: note: in expansion of macro ?module_platform_driver?
module_platform_driver(gemini_ethernet_port_driver);
^~~~~~~~~~~~~~~~~~~~~~
./include/linux/module.h:137:7: error: redefinition of ?cleanup_module?
void cleanup_module(void) __attribute__((alias(#exitfn)));
^
./include/linux/device.h:1518:1: note: in expansion of macro ?module_exit?
module_exit(__driver##_exit);
^~~~~~~~~~~
./include/linux/platform_device.h:228:2: note: in expansion of macro ?module_driver?
module_driver(__platform_driver, platform_driver_register, \
^~~~~~~~~~~~~
drivers/net/ethernet/cortina/gemini.c:2567:1: note: in expansion of macro ?module_platform_driver?
module_platform_driver(gemini_ethernet_driver);
^~~~~~~~~~~~~~~~~~~~~~
./include/linux/module.h:137:7: note: previous definition of ?cleanup_module? was here
void cleanup_module(void) __attribute__((alias(#exitfn)));
^
./include/linux/device.h:1518:1: note: in expansion of macro ?module_exit?
module_exit(__driver##_exit);
^~~~~~~~~~~
./include/linux/platform_device.h:228:2: note: in expansion of macro ?module_driver?
module_driver(__platform_driver, platform_driver_register, \
^~~~~~~~~~~~~
drivers/net/ethernet/cortina/gemini.c:2495:1: note: in expansion of macro ?module_platform_driver?
module_platform_driver(gemini_ethernet_port_driver);
^~~~~~~~~~~~~~~~~~~~~~
make[4]: *** [scripts/Makefile.build:317: drivers/net/ethernet/cortina/gemini.o] Error 1
make[3]: *** [scripts/Makefile.build:569: drivers/net/ethernet/cortina] Error 2
make[3]: *** Waiting for unfinished jobs....
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH net-next 2/2 v10] net: ethernet: Add a driver for Gemini gigabit ethernet
2018-01-10 20:43 ` David Miller
@ 2018-01-10 22:02 ` Linus Walleij
0 siblings, 0 replies; 5+ messages in thread
From: Linus Walleij @ 2018-01-10 22:02 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, Jan 10, 2018 at 9:43 PM, David Miller <davem@davemloft.net> wrote:
> Actually I had to revert these two patches, this stuff doesn't even
> build.
Sorry about that, I did build it before sending out but I guess not on enough
architectures :(
I will iterate with the help of the zeroday build servers, my own machines
just don't suffice.
Yours,
Linus Walleij
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2018-01-10 22:02 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-01-09 22:10 [PATCH net-next 1/2 v10] net: ethernet: Add DT bindings for the Gemini ethernet Linus Walleij
2018-01-10 20:40 ` David Miller
[not found] ` <20180109221053.927-2-linus.walleij@linaro.org>
2018-01-10 20:41 ` [PATCH net-next 2/2 v10] net: ethernet: Add a driver for Gemini gigabit ethernet David Miller
2018-01-10 20:43 ` David Miller
2018-01-10 22:02 ` Linus Walleij
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).