Hi I have a problem, I have been tring to configure the EMAC for the
Hawkboard, is is based on board -da850-evm.c but I can't make it
works. The files system boots but give me this error

Setting up IP spoofing protection: rp_filter.
Configuring network interfaces... ifconfig: SIOCGIFFLAGS: No such device
done.
hwclock: can't open '/dev/misc/rtc': No such file or directory
Tue Apr 14 20:24:00 UTC 2009
hwclock: can't open '/dev/misc/rtc': No such file or directory
INIT: Entering runlevel: 5
Starting telnet daemon.
Starting syslogd/klogd: done


when i do the ifconfig


r...@hawkboard:~# ifconfig
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)


So the EMAC is not working

The code ( patch ) is the next:


#include <mach/mux.h>

#define DA850_EVM_PHY_ID                "0:00 << 7"

/* I look for in the datasheet of the LAN chip and said that the  PHY
ID Number is 0007 */

#define DA850_MII_MDIO_CLKEN_PIN        GPIO_TO_PIN(2, 6)


#ifdef CONFIG_DA850_UI_RMII
static inline void omapl138_hawk_setup_emac_rmii(int rmii_sel)
{
        struct davinci_soc_info *soc_info = &davinci_soc_info;

        soc_info->emac_pdata->rmii_en = 1;
        gpio_set_value(rmii_sel, 0);
}
#else
static inline void omapl138_hawk_setup_emac_rmii(int rmii_sel) { }
#endif


static const short hawk_mii_pins[] = {
        DA850_MII_TXEN, DA850_MII_TXCLK, DA850_MII_COL, DA850_MII_TXD_3,
        DA850_MII_TXD_2, DA850_MII_TXD_1, DA850_MII_TXD_0, DA850_MII_RXER,
        DA850_MII_CRS, DA850_MII_RXCLK, DA850_MII_RXDV, DA850_MII_RXD_3,
        DA850_MII_RXD_2, DA850_MII_RXD_1, DA850_MII_RXD_0, DA850_MDIO_CLK,
        DA850_MDIO_D,
        -1
};

static const short hawk_rmii_pins[] = {
        DA850_RMII_TXD_0, DA850_RMII_TXD_1, DA850_RMII_TXEN,
        DA850_RMII_CRS_DV, DA850_RMII_RXD_0, DA850_RMII_RXD_1,
        DA850_RMII_RXER, DA850_RMII_MHZ_50_CLK, DA850_MDIO_CLK,
        DA850_MDIO_D,
        -1
};


static int __init omapl138_hawk_config_emac(void)
{
        void __iomem *cfg_chip3_base;
        int ret;
        u32 val;
        struct davinci_soc_info *soc_info = &davinci_soc_info;
        u8 rmii_en = soc_info->emac_pdata->rmii_en;

        if (!machine_is_davinci_da850_evm())
                return 0;       

        cfg_chip3_base = DA8XX_SYSCFG0_VIRT(DA8XX_CFGCHIP3_REG);

        val = __raw_readl(cfg_chip3_base);

        //val &= ~BIT(8);
        if (rmii_en) {
                val |= BIT(8);
                ret = davinci_cfg_reg_list(hawk_rmii_pins);
                //ret = davinci_cfg_reg_list(da850_cpgmac_pins);
                pr_info("EMAC: RMII PHY configured, MII PHY will not be"
                                                        " functional\n");
        } else {
                val &= ~BIT(8);
                ret = davinci_cfg_reg_list(hawk_rmii_pins);
                //ret = davinci_cfg_reg_list(da850_cpgmac_pins);
                pr_info("EMAC: MII PHY configured, RMII PHY will not be"
                                                        " functional\n");
        }

        if (ret)
                pr_warning("hawk_init: cpgmac/rmii mux setup failed: %d\n",
                        ret);

        /* configure the CFGCHIP3 register for RMII or MII */
        __raw_writel(val, cfg_chip3_base);

        ret = davinci_cfg_reg(DA850_GPIO2_6);
        if (ret)
                pr_warning("hawk_init:GPIO(2,6) mux setup" "failed\n");

        ret = gpio_request(DA850_MII_MDIO_CLKEN_PIN, "mdio_clk_en");
        if (ret) {
                pr_warning("Cannot open GPIO %d\n",
                                        DA850_MII_MDIO_CLKEN_PIN);
                return ret;
        }

        /* Enable/Disable MII MDIO clock */

        gpio_direction_output(DA850_MII_MDIO_CLKEN_PIN, rmii_en);

        soc_info->emac_pdata->phy_id = DA850_EVM_PHY_ID;

        ret = da8xx_register_emac();
        if (ret)
                pr_warning("hawk_init: emac registration failed: %d\n",
                                ret);
        return 0;
}
device_initcall(omapl138_hawk_config_emac);


Thanks for all your help

Victor Rodriguez
_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to