Michael Williamson <[email protected]> writes:

> For the MityDSP-L138/MityARM-1808 SOMS, read the factory assigned
> MAC address from the onboard I2C EPROM and assign it to the emac
> device during platform initialization.
>
> Signed-off-by: Michael Williamson <[email protected]>

Hi Michael,

A couple minor comments below...

Also, the right address for the linux-arm-kernel mailing list is
[email protected].  Please CC that one.  Thanks.

> ---
>  arch/arm/mach-davinci/board-mityomapl138.c |   55 
> ++++++++++++++++++++++++++++
>  1 files changed, 55 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/mach-davinci/board-mityomapl138.c 
> b/arch/arm/mach-davinci/board-mityomapl138.c
> index e872fcc..e1cffb8 100644
> --- a/arch/arm/mach-davinci/board-mityomapl138.c
> +++ b/arch/arm/mach-davinci/board-mityomapl138.c
> @@ -15,6 +15,7 @@
>  #include <linux/mtd/partitions.h>
>  #include <linux/regulator/machine.h>
>  #include <linux/i2c.h>
> +#include <linux/i2c/at24.h>
>  
>  #include <asm/mach-types.h>
>  #include <asm/mach/arch.h>
> @@ -24,6 +25,59 @@
>  #include <mach/nand.h>
>  #include <mach/mux.h>
>  
> +#define FACTORY_CONFIG_MAGIC 0x012C0138
> +#define FACTORY_CONFIG_VERSION       0x00010001
> +
> +/* Data Held in On-Board I2C device */
> +struct factory_config {
> +     uint32_t        magic;
> +     uint32_t        version;
> +     uint8_t         mac[6];
> +     uint32_t        fpga_type;
> +     uint32_t        spare;
> +     uint32_t        serialnumber;

u32 and u8 are more customary here.

> +     char            partnum[32];
> +};
> +
> +static struct factory_config factory_config;
> +
> +static void read_factory_config(struct memory_accessor *a, void *context)
> +{
> +     int ret;
> +     struct davinci_soc_info *soc_info = &davinci_soc_info;
> +
> +     ret = a->read(a, (char *)&factory_config, 0, sizeof(factory_config));
> +     if (ret != sizeof(struct factory_config)) {
> +             pr_warning("Read Factory Config Failed: %d\n", ret);
> +             return;
> +     }
> +
> +     if (factory_config.magic != FACTORY_CONFIG_MAGIC) {
> +             pr_warning("Factory Config Magic Wrong (%X)\n",
> +                             factory_config.magic);
> +             return;
> +     }
> +
> +     if (factory_config.version != FACTORY_CONFIG_VERSION) {
> +             pr_warning("Factory Config Version Wrong (%X)\n",
> +                             factory_config.version);
> +             return;
> +     }
> +
> +     pr_info("Found MAC = %pM\n", factory_config.mac);
> +     pr_info("Part Number = %s\n", factory_config.partnum);

Might be nice to prefix these prings with 'MityOMAPL138' or something
similar.

> +     memcpy(&soc_info->emac_pdata->mac_addr[0],
> +             &factory_config.mac[0], 6);

Rather than '6', use ETH_ALEN (from #include <linux/etherdevice.h>)

Also, for some extra sanity, you might want to test the MAC using
is_valid_ether_addr() (from the same header) and warn if it's not a
valid MAC.

Kevin

> +}
> +
> +static struct at24_platform_data mityomapl138_fd_chip = {
> +     .byte_len       = 256,
> +     .page_size      = 8,
> +     .flags          = AT24_FLAG_READONLY | AT24_FLAG_IRUGO,
> +     .setup          = read_factory_config,
> +     .context        = NULL,
> +};
> +
>  static struct davinci_i2c_platform_data mityomap_i2c_0_pdata = {
>       .bus_freq       = 100,  /* kHz */
>       .bus_delay      = 0,    /* usec */
> @@ -150,6 +204,7 @@ static struct i2c_board_info __initdata 
> mityomap_tps65023_info[] = {
>       },
>       {
>               I2C_BOARD_INFO("24c02", 0x50),
> +             .platform_data = &mityomapl138_fd_chip,
>       },
>  };
_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to