All of lore.kernel.org
 help / color / mirror / Atom feed
From: embedded@gmx.net (A.Schallenberg)
To: linux-arm-kernel@lists.infradead.org
Subject: OMAP3503, SMC911x: mac address issue
Date: Mon, 12 Sep 2011 11:54:17 +0200	[thread overview]
Message-ID: <201109121154.17796.embedded@gmx.net> (raw)

Hello,

I am adding support for a custom board to the 3.0 kernel.
The board is very similar to the beagle board, so I took this
as my starting point. I also have an older (v2.6.32) kernel
with its beagle board support modified to support this custom
board instead.

Using the same boot paramaters passed by U-Boot (only the ttyS2
to ttyO2 change was made) the new kernel has issues with eth0.

The kernel driver is added to the board support, compiled and
successfully probed. I verified this by adding some "printk" lines:

...
[    1.939361] SMC911x: init()
[    1.942382] SMC911x: drv_probe()
[    1.945831] SMC911x: probe()
[    1.952484] eth0: LAN9115 (rev 2) at 0x2c000000 IRQ 225
[    1.958099] eth0: Invalid ethernet MAC address ff:ff:ff:ff:ff:ff. Please 
set using ifconfig.
[    1.967071] eth0: External PHY 0xffffffff
[    1.971313] eth0: probe() succeeded
...

Later on, I get:
...
[    2.087951] IP-Config: Failed to open eth0
[    2.093109] IP-Config: Device `eth0' not found.
[    2.098419] Root-NFS: no NFS server address
...


This is ic_open_devs() (from ipconfig.c) calling
dev_change_flags(dev, oflags | IFF_UP). This ultimately
leads to a call to eth_validate_addr() in eth.c
which fails and returns -EADDRNOTAVAIL.
So the MAC address is not correctly passed on to the driver.

The kernel boot parameters are:
[    0.000000] Kernel command line: console=ttyO2,115200n8 
video=omapfb:vram:2M,vram:4M,mode:1024x768 at 60,vxres=1024,vyres=768 
ip=10.100.100.28:10.100.10.69:10.100.0.1:255.255.0.0:3flex:eth0:none 
ethaddr=00:E0:18:1B:21:55 root=/dev/nfs rootfstype=nfs

Here is how I do the initialization in the board file now.
The code is directly taken from the v2.6.32 kernel. 

------------------------------------------------------------

#define OMAP3_BOARD_ETHR_START     0x2c000000
#define OMAP3_BOARD_ETHR_SIZE      1024
#define OMAP3_BOARD_ETHR_GPIO_IRQ  65      // Sos
#define OMAP3_BOARD_SMC911X_CS     5

static struct resource omap3_board_smc911x_resources[] = {
        [0] =   {
                .start  = OMAP3_BOARD_ETHR_START,
                .end    = (OMAP3_BOARD_ETHR_START + OMAP3_BOARD_ETHR_SIZE - 
1),
                .flags  = IORESOURCE_MEM,
        },
        [1] =   {
                .start  = OMAP_GPIO_IRQ(OMAP3_BOARD_ETHR_GPIO_IRQ),
                .end    = OMAP_GPIO_IRQ(OMAP3_BOARD_ETHR_GPIO_IRQ),
                .flags  = IORESOURCE_IRQ,
        },
};

static struct platform_device omap3_board_smc911x_device = {
        .name           = "smc911x",
        .id             = -1,
        .num_resources  = ARRAY_SIZE(omap3_board_smc911x_resources),
        .resource       = &omap3_board_smc911x_resources [0],
};


static inline void __init omap3_board_init_smc911x(void)
{
        int eth_cs;
        struct clk *l3ck;
        unsigned int rate;


        eth_cs = OMAP3_BOARD_SMC911X_CS;


        l3ck = clk_get(NULL, "l3_ck");
        if (IS_ERR(l3ck))
                rate = 100000000;
        else
                rate = clk_get_rate(l3ck);

        if (gpio_request(OMAP3_BOARD_ETHR_GPIO_IRQ, "SMC911x irq") < 0) {
                printk(KERN_ERR "Failed to request GPIO%d for smc911x IRQ\n",
                        OMAP3_BOARD_ETHR_GPIO_IRQ);
                return;
        }

        gpio_direction_input(OMAP3_BOARD_ETHR_GPIO_IRQ);
        platform_device_register(&omap3_board_smc911x_device);
        printk(KERN_INFO "BOARD: Registered SMC911x\n");
}

------------------------------------------------------------------------------

What am I doing wrong here?

I am aware of the thread "Linux Kernel without Ethernet (missed MAC)"
( http://www.mail-archive.com/u-boot@lists.denx.de/msg27711.html )
and also tried the patch by Daniel Gorsulowski but that didn't help.
It should be some different issue here since I am using "ethaddr"
to pass the MAC.


If this is the wrong mailing list for this question,
please point me to a more appropriate one.

Best,
Andreas Schallenberg

             reply	other threads:[~2011-09-12  9:54 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-09-12  9:54 A.Schallenberg [this message]
2011-09-12 10:22 ` OMAP3503, SMC911x: mac address issue Russell King - ARM Linux

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201109121154.17796.embedded@gmx.net \
    --to=embedded@gmx.net \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.