[U-Boot] [U-Boot PATCH v2 10/12] keystone2: net: add keystone ethernet driver

Tom Rini trini at ti.com
Tue Feb 25 23:11:54 CET 2014


On Thu, Feb 20, 2014 at 12:55:12PM -0500, Murali Karicheri wrote:

> From: Vitaly Andrianov <vitalya at ti.com>
> 
> Ethernet driver configures the CPSW, SGMI and Phy and uses
> the the Navigator APIs. The driver supports 4 Ethernet ports and
> can work with only one port at a time.

First, can we just use things in a "dumb" mode and use the existing CPSW
driver?  Or are there use cases we need to worry about here with a
bigger / more robust network driver?

> Port configurations are defined in board.c.
> 
> Signed-off-by: Vitaly Andrianov <vitalya at ti.com>
> Signed-off-by: Murali Karicheri <m-karicheri2 at ti.com>
> Signed-off-by: WingMan Kwok <w-kwok2 at ti.com>
[snip]
> +/*#define chipLmbd(x,y) _lmbd(x,y) */

Don't add unused code.

> +/* Marvell 88E1111 PHY ID */
> +#define PHY_MARVELL_88E1111		(0x01410cc0)

More on this later.

> +/* EMAC MDIO Registers Structure */
> +struct mdio_regs {
> +	dv_reg		VERSION;
> +	dv_reg		CONTROL;

Why caps?

> +++ b/drivers/net/keystone_net.c

Generic problem, please use phylib.

> +#define debug_emac(fmt, args...) if (emac_dbg) printf(fmt, ##args)

We have debug() already.

> +#ifdef KEYSTONE2_EMAC_GIG_ENABLE
> +#define emac_gigabit_enable(x)	keystone2_eth_gigabit_enable(x)
> +#else
> +#define emac_gigabit_enable(x)	/* no gigabit to enable */
> +#endif

Do we need to do this?

> +static void chip_delay(u32 del)
> +{
> +	volatile unsigned int i;
> +
> +	for (i = 0; i < (del / 8); i++)
> +		;
> +}

Use one of the generic delays please.

> +/* PHY functions for a generic PHY */
> +static int __attribute__((unused)) gen_init_phy(int phy_addr)

Why are we adding tons of functions that we mark as unused?

> +#if CONFIG_GET_LINK_STATUS_ATTEMPTS > 1
> +	int j;
> +
> +	for (j = 0; (j < CONFIG_GET_LINK_STATUS_ATTEMPTS) && (link_state == 0);
> +	     j++) {
> +#endif

New config option, do we really need this as an option?

> +void sgmii_serdes_setup_156p25mhz()
> +{
> +	unsigned int cnt;
> +
> +	reg_rmw(0x0232a000, 0x00800000, 0xffff0000);

Please comment on what we're doing here, and why we aren't using a
struct to describe whatever is at 0x0232a000 ?

> +void sgmii_serdes_shutdown()
> +{
> +	reg_rmw(0x0232bfe0, 0, 3 << 29 | 3 << 13);

Same.

Thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140225/a97bd1cf/attachment.pgp>


More information about the U-Boot mailing list