From:  Vishnu Patekar <vishnupatekar0...@gmail.com>
Reply-To:  "beagleboard@googlegroups.com" <beagleboard@googlegroups.com>
Date:  Monday, July 7, 2014 at 9:26 AM
To:  "beagleboard@googlegroups.com" <beagleboard@googlegroups.com>
Subject:  Re: [beagleboard] Re: Beaglebone Black Ethernet Phy Not Detected
on Boot.

> Hello John,
> Thanks for info.
> 
> I found below configs are not set in 3.15 by default which were set in 3.8. If
> we set below configs in 3.15, it works including NFS.
> 
> CONFIG_IP_PNP=y
> CONFIG_IP_PNP_DHCP=y
> CONFIG_ROOT_NFS=y
> 
> optional:
> CONFIG_IP_PNP_BOOTP=y
> CONFIG_IP_PNP_RARP=y
Hi Vishnu,

I found something similar to you. I enabled

CONFIG_IP_PNP
CONFIG_ROOT_NFS

Which gets me further and I see the login prompt, but now I get the
following error:

INIT: /run/initctl is not a fifo

I did try the other config selections that you did and it didn¹t make a
difference for me. I¹m using Robert Nelson¹s Debian-v7.5-console-armhf
rootfs. 

Regards,
John

> 
> 
> 
> On Sat, Jul 5, 2014 at 11:49 PM, John Syn <john3...@gmail.com> wrote:
>> This is a known problem with V3.15 and NFS. We are working on finding a
>> solution. First, you must build the SMSC driver into the kernel. Currently it
>> is built as a kernel module which won¹t work because you have to mount the
>> rootfs to load the kernel module. That will eliminate the first issue:
>> 
>> 3.758612] davinci_mdio 4a101000.mdio: phy[0]: device 4a101000.mdio:00, driver
>> unknown
>> 
>> Next we are trying to find out why the network isn¹t getting started. Looks
>> like something to do with cpsw.  Using the same MLO, u-boot, uEnv.txt and
>> rootfs, V3.8.13-bone57 works just fine. Changing the kernel to V3.15.3-bone3,
>> I get the same problem you have.
>> 
>> Regards,
>> 
>> John
>> 
>> From:  Vishnu Patekar <vishnupatekar0...@gmail.com>
>> Reply-To:  "beagleboard@googlegroups.com" <beagleboard@googlegroups.com>
>> Date:  Saturday, July 5, 2014 at 11:01 AM
>> To:  "beagleboard@googlegroups.com" <beagleboard@googlegroups.com>
>> Subject:  Re: [beagleboard] Re: Beaglebone Black Ethernet Phy Not Detected on
>> Boot.
>> 
>>> Hello,
>>> I'm using BBB board A5C, and kernel version 3.15.3-bone3.1.  I also see
>>> ethernet PHY is not detected. Log as below:
>>> Please refer detailed attached log.
>>> 
>>> 
>>> [    3.740457] davinci_mdio 4a101000.mdio: davinci mdio revision 1.6
>>> [    3.746859] davinci_mdio 4a101000.mdio: detected phy mask fffffffe
>>> [    3.754398] libphy: 4a101000.mdio: probed
>>> [    3.758612] davinci_mdio 4a101000.mdio: phy[0]: device 4a101000.mdio:00,
>>> driver unknown
>>> [    3.767567] Detected MACID = 90:59:af:5c:61:78
>>> [    3.773165] drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
>>> [    3.779741] sr_init: No PMIC hook to init smartreflex
>>> [    3.785201] sr_init: platform driver register failed for SR
>>> [    3.794297] VFS: Cannot open root device "nfs" or unknown-block(0,255):
>>> error -6
>>> [    3.802114] Please append a correct "root=" boot option; here are the
>>> available partitions:
>>> [    3.810888] b300         1875968 mmcblk0  driver: mmcblk
>>> [    3.816464]   b301           72261 mmcblk0p1 00000000-01
>>> [    3.822046]   b302         1799280 mmcblk0p2 00000000-02
>>> [    3.827617] b310            1024 mmcblk0boot1  (driver?)
>>> [    3.833197] b308            1024 mmcblk0boot0  (driver?)
>>> [    3.838767] Kernel panic - not syncing: VFS: Unable to mount root fs on
>>> unknown-block(0,255)
>>> [    3.847616] CPU: 0 PID: 1 Comm: swapper Not tainted 3.15.3-bone3.1 #1
>>> [    3.854410] [<c00113f5>] (unwind_backtrace) from [<c000fa37>]
>>> (show_stack+0xb/0xc)
>>> [    3.862356] [<c000fa37>] (show_stack) from [<c054dd05>]
>>> (panic+0x65/0x170)
>>> [    3.869572] [<c054dd05>] (panic) from [<c08a6d0b>]
>>> (mount_block_root+0x1af/0x21c)
>>> [    3.877421] [<c08a6d0b>] (mount_block_root) from [<c08a6eb1>]
>>> (prepare_namespace+0xe9/0x128)
>>> [    3.886271] [<c08a6eb1>] (prepare_namespace) from [<c08a6a93>]
>>> (kernel_init_freeable+0x1ab/0x1b8)
>>> [    3.895574] [<c08a6a93>] (kernel_init_freeable) from [<c054d37b>]
>>> (kernel_init+0xb/0xb4)
>>> [    3.904060] [<c054d37b>] (kernel_init) from [<c000d1f9>]
>>> (ret_from_fork+0x11/0x38)
>>> [    3.911998] drm_kms_helper: panic occurred, switching back to text
>>> console
>>> [    3.919217] ---[ end Kernel panic - not syncing: VFS: Unable to mount
>>> root fs on unknown-block(0,255)
>>> 
>>> 
>>> 
>>> On Sat, Jun 28, 2014 at 2:22 AM, Jay @ Control Module Industries
>>> <cmidr...@gmail.com> wrote:
>>>> I have encountered the same issue(s) on A6A boards.
>>>> 
>>>> I couldn't find a patch,  so I wrote this patch to update the device tree
>>>> in the davinci_mdio driver in the 3.15.1 tree, it seems to correct it. I
>>>> would welcome any input on a different approach.
>>>> 
>>>> diff --git a/drivers/net/ethernet/ti/davinci_mdio.c
>>>> b/drivers/net/ethernet/ti/davinci_mdio.c
>>>> index 0cca9de..e5a9cdc 100644
>>>> --- a/drivers/net/ethernet/ti/davinci_mdio.c
>>>> +++ b/drivers/net/ethernet/ti/davinci_mdio.c
>>>> @@ -39,6 +39,7 @@
>>>>  #include <linux/of.h>
>>>>  #include <linux/of_device.h>
>>>>  #include <linux/pinctrl/consumer.h>
>>>> +#include <linux/phy.h>
>>>>  
>>>>  /*
>>>>   * This timeout definition is a worst-case ultra defensive measure against
>>>> @@ -97,6 +98,10 @@ struct davinci_mdio_data {
>>>>      unsigned long    access_time; /* jiffies */
>>>>  };
>>>>  
>>>> +#if IS_ENABLED(CONFIG_OF)
>>>> +static void davinci_mdio_update_dt_from_phymask(u32 phy_mask);
>>>> +#endif
>>>> +
>>>>  static void __davinci_mdio_reset(struct davinci_mdio_data *data)
>>>>  {
>>>>      u32 mdio_in, div, mdio_out_khz, access_time;
>>>> @@ -150,6 +155,11 @@ static int davinci_mdio_reset(struct mii_bus *bus)
>>>>          /* restrict mdio bus to live phys only */
>>>>          dev_info(data->dev, "detected phy mask %x\n", ~phy_mask);
>>>>          phy_mask = ~phy_mask;
>>>> +
>>>> +        #if IS_ENABLED(CONFIG_OF)
>>>> +        davinci_mdio_update_dt_from_phymask(phy_mask);
>>>> +        #endif
>>>> +
>>>>      } else {
>>>>          /* desperately scan all phys */
>>>>          dev_warn(data->dev, "no live phy, scanning all\n");
>>>> @@ -312,6 +322,79 @@ static int davinci_mdio_probe_dt(struct
>>>> mdio_platform_data *data,
>>>>  }
>>>>  #endif
>>>>  
>>>> +#if IS_ENABLED(CONFIG_OF)
>>>> +static void davinci_mdio_update_dt_from_phymask(u32 phy_mask)
>>>> +{
>>>> +    int i, len;
>>>> +    u32 addr;
>>>> +    __be32 *old_phy_p, *phy_id_p;
>>>> +    struct property *phy_id_property = NULL;
>>>> +    struct device_node *node_p, *slave_p;
>>>> +    
>>>> +    addr = 0;
>>>> +
>>>> +    for (i = 0; i < PHY_MAX_ADDR; i++) {
>>>> +            if ((phy_mask & (1 << i)) == 0) {
>>>> +                    addr = (u32) i;
>>>> +            break;
>>>> +            }
>>>> +     }
>>>> +
>>>> +    for_each_compatible_node(node_p, NULL, "ti,cpsw") {
>>>> +        for_each_node_by_name(slave_p, "slave") {
>>>> +             
>>>> +            old_phy_p = (__be32 *) of_get_property(slave_p, "phy_id",
>>>> &len);
>>>> +            
>>>> +            if (len != (sizeof(__be32 *) * 2))
>>>> +                goto err_out;
>>>> +            
>>>> +            if (old_phy_p) {
>>>> +
>>>> +                phy_id_property = kzalloc(sizeof(*phy_id_property),
>>>> GFP_KERNEL);
>>>> +             
>>>> +                if (! phy_id_property)
>>>> +                    goto err_out;
>>>> +
>>>> +                phy_id_property->length = len;
>>>> +                phy_id_property->name = kstrdup("phy_id", GFP_KERNEL);
>>>> +                phy_id_property->value = kzalloc(len, GFP_KERNEL);
>>>> +             
>>>> +                if (! phy_id_property->name)
>>>> +                    goto err_out;
>>>> +             
>>>> +                if (! phy_id_property->value)
>>>> +                    goto err_out;
>>>> +            
>>>> +                memcpy(phy_id_property->value, old_phy_p, len);
>>>> +             
>>>> +                phy_id_p = (__be32 *) phy_id_property->value + 1;
>>>> +             
>>>> +                *phy_id_p = cpu_to_be32(addr);
>>>> +
>>>> +                of_update_property(slave_p, phy_id_property);
>>>> +             
>>>> +                ++addr;
>>>> +            }
>>>> +        }
>>>> +    }
>>>> +    
>>>> +    return;
>>>> +
>>>> +err_out:
>>>> +    
>>>> +    if (phy_id_property) {
>>>> +        if (phy_id_property->name)
>>>> +            kfree(phy_id_property->name);
>>>> +    
>>>> +        if (phy_id_property->value)
>>>> +            kfree(phy_id_property->value);
>>>> +
>>>> +        if (phy_id_property)
>>>> +            kfree(phy_id_property);
>>>> +    }
>>>> +}
>>>> +#endif
>>>> +
>>>>  static int davinci_mdio_probe(struct platform_device *pdev)
>>>>  {
>>>>      struct mdio_platform_data *pdata = dev_get_platdata(&pdev->dev);
>>>> 
>>>> -- 
>>>> For more options, visit http://beagleboard.org/discuss
>>>> --- 
>>>> You received this message because you are subscribed to the Google Groups
>>>> "BeagleBoard" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send an
>>>> email to beagleboard+unsubscr...@googlegroups.com.
>>>> For more options, visit https://groups.google.com/d/optout.
>>> 
>>> 
>>> -- 
>>> For more options, visit http://beagleboard.org/discuss
>>> --- 
>>> You received this message because you are subscribed to the Google Groups
>>> "BeagleBoard" group.
>>> To unsubscribe from this group and stop receiving emails from it, send an
>>> email to beagleboard+unsubscr...@googlegroups.com.
>>> For more options, visit https://groups.google.com/d/optout.
>> -- 
>> For more options, visit http://beagleboard.org/discuss
>> --- 
>> You received this message because you are subscribed to the Google Groups
>> "BeagleBoard" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to beagleboard+unsubscr...@googlegroups.com.
>> For more options, visit https://groups.google.com/d/optout.
> 
> 
> -- 
> For more options, visit http://beagleboard.org/discuss
> --- 
> You received this message because you are subscribed to the Google Groups
> "BeagleBoard" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to beagleboard+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.


-- 
For more options, visit http://beagleboard.org/discuss
--- 
You received this message because you are subscribed to the Google Groups 
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to beagleboard+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to