root/arch/mips/pmcs-msp71xx/msp_eth.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. msp_eth_setup

   1 /*
   2  * The setup file for ethernet related hardware on PMC-Sierra MSP processors.
   3  *
   4  * Copyright 2010 PMC-Sierra, Inc.
   5  *
   6  *  This program is free software; you can redistribute  it and/or modify it
   7  *  under  the terms of  the GNU General  Public License as published by the
   8  *  Free Software Foundation;  either version 2 of the  License, or (at your
   9  *  option) any later version.
  10  *
  11  *  THIS  SOFTWARE  IS PROVIDED   ``AS  IS'' AND   ANY  EXPRESS OR IMPLIED
  12  *  WARRANTIES,   INCLUDING, BUT NOT  LIMITED  TO, THE IMPLIED WARRANTIES OF
  13  *  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN
  14  *  NO  EVENT  SHALL   THE AUTHOR  BE    LIABLE FOR ANY   DIRECT, INDIRECT,
  15  *  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  16  *  NOT LIMITED   TO, PROCUREMENT OF  SUBSTITUTE GOODS  OR SERVICES; LOSS OF
  17  *  USE, DATA,  OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
  18  *  ANY THEORY OF LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT
  19  *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  20  *  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  21  *
  22  *  You should have received a copy of the  GNU General Public License along
  23  *  with this program; if not, write  to the Free Software Foundation, Inc.,
  24  *  675 Mass Ave, Cambridge, MA 02139, USA.
  25  */
  26 
  27 #include <linux/init.h>
  28 #include <linux/kernel.h>
  29 #include <linux/ioport.h>
  30 #include <linux/platform_device.h>
  31 #include <linux/delay.h>
  32 #include <msp_regs.h>
  33 #include <msp_int.h>
  34 #include <msp_gpio_macros.h>
  35 
  36 
  37 #define MSP_ETHERNET_GPIO0      14
  38 #define MSP_ETHERNET_GPIO1      15
  39 #define MSP_ETHERNET_GPIO2      16
  40 
  41 #define MSP_ETH_ID      "pmc_mspeth"
  42 #define MSP_ETH_SIZE    0xE0
  43 static struct resource msp_eth0_resources[] = {
  44         [0] = {
  45                 .start  = MSP_MAC0_BASE,
  46                 .end    = MSP_MAC0_BASE + MSP_ETH_SIZE - 1,
  47                 .flags  = IORESOURCE_MEM,
  48         },
  49         [1] = {
  50                 .start  = MSP_INT_MAC0,
  51                 .end    = MSP_INT_MAC0,
  52                 .flags  = IORESOURCE_IRQ,
  53         },
  54 };
  55 
  56 static struct resource msp_eth1_resources[] = {
  57         [0] = {
  58                 .start  = MSP_MAC1_BASE,
  59                 .end    = MSP_MAC1_BASE + MSP_ETH_SIZE - 1,
  60                 .flags  = IORESOURCE_MEM,
  61         },
  62         [1] = {
  63                 .start  = MSP_INT_MAC1,
  64                 .end    = MSP_INT_MAC1,
  65                 .flags  = IORESOURCE_IRQ,
  66         },
  67 };
  68 
  69 
  70 
  71 static struct platform_device mspeth_device[] = {
  72         [0] = {
  73                 .name   = MSP_ETH_ID,
  74                 .id     = 0,
  75                 .num_resources = ARRAY_SIZE(msp_eth0_resources),
  76                 .resource = msp_eth0_resources,
  77         },
  78         [1] = {
  79                 .name   = MSP_ETH_ID,
  80                 .id     = 1,
  81                 .num_resources = ARRAY_SIZE(msp_eth1_resources),
  82                 .resource = msp_eth1_resources,
  83         },
  84 
  85 };
  86 #define msp_eth_devs    mspeth_device
  87 
  88 int __init msp_eth_setup(void)
  89 {
  90         int i, ret = 0;
  91 
  92         /* Configure the GPIO and take the ethernet PHY out of reset */
  93         msp_gpio_pin_mode(MSP_GPIO_OUTPUT, MSP_ETHERNET_GPIO0);
  94         msp_gpio_pin_hi(MSP_ETHERNET_GPIO0);
  95 
  96         for (i = 0; i < ARRAY_SIZE(msp_eth_devs); i++) {
  97                 ret = platform_device_register(&msp_eth_devs[i]);
  98                 printk(KERN_INFO "device: %d, return value = %d\n", i, ret);
  99                 if (ret) {
 100                         platform_device_unregister(&msp_eth_devs[i]);
 101                         break;
 102                 }
 103         }
 104 
 105         if (ret)
 106                 printk(KERN_WARNING "Could not initialize "
 107                                                 "MSPETH device structures.\n");
 108 
 109         return ret;
 110 }
 111 subsys_initcall(msp_eth_setup);

/* [<][>][^][v][top][bottom][index][help] */