Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  1 /*
  2  * drivers/net/ibm_newemac/rgmii.h
  3  *
  4  * Driver for PowerPC 4xx on-chip ethernet controller, RGMII bridge support.
  5  *
  6  * Copyright 2007 Benjamin Herrenschmidt, IBM Corp.
  7  *                <benh@kernel.crashing.org>
  8  *
  9  * Based on the arch/ppc version of the driver:
 10  *
 11  * Based on ocp_zmii.h/ibm_emac_zmii.h
 12  * Armin Kuster akuster@mvista.com
 13  *
 14  * Copyright 2004 MontaVista Software, Inc.
 15  * Matt Porter <mporter@kernel.crashing.org>
 16  *
 17  * Copyright (c) 2004, 2005 Zultys Technologies.
 18  * Eugene Surovegin <eugene.surovegin@zultys.com> or <ebs@ebshome.net>
 19  *
 20  * This program is free software; you can redistribute  it and/or modify it
 21  * under  the terms of  the GNU General  Public License as published by the
 22  * Free Software Foundation;  either version 2 of the  License, or (at your
 23  * option) any later version.
 24  */
 25 
 26 #ifndef __IBM_NEWEMAC_RGMII_H
 27 #define __IBM_NEWEMAC_RGMII_H
 28 
 29 /* RGMII bridge type */
 30 #define RGMII_STANDARD          0
 31 #define RGMII_AXON              1
 32 
 33 /* RGMII bridge */
 34 struct rgmii_regs {
 35         u32 fer;                /* Function enable register */
 36         u32 ssr;                /* Speed select register */
 37 };
 38 
 39 /* RGMII device */
 40 struct rgmii_instance {
 41         struct rgmii_regs __iomem       *base;
 42 
 43         /* RGMII bridge flags */
 44         int                             flags;
 45 #define EMAC_RGMII_FLAG_HAS_MDIO        0x00000001
 46 
 47         /* Only one EMAC whacks us at a time */
 48         struct mutex                    lock;
 49 
 50         /* number of EMACs using this RGMII bridge */
 51         int                             users;
 52 
 53         /* OF device instance */
 54         struct of_device                *ofdev;
 55 };
 56 
 57 #ifdef CONFIG_IBM_NEW_EMAC_RGMII
 58 
 59 extern int rgmii_init(void);
 60 extern void rgmii_exit(void);
 61 extern int rgmii_attach(struct of_device *ofdev, int input, int mode);
 62 extern void rgmii_detach(struct of_device *ofdev, int input);
 63 extern void rgmii_get_mdio(struct of_device *ofdev, int input);
 64 extern void rgmii_put_mdio(struct of_device *ofdev, int input);
 65 extern void rgmii_set_speed(struct of_device *ofdev, int input, int speed);
 66 extern int rgmii_get_regs_len(struct of_device *ofdev);
 67 extern void *rgmii_dump_regs(struct of_device *ofdev, void *buf);
 68 
 69 #else
 70 
 71 # define rgmii_init()           0
 72 # define rgmii_exit()           do { } while(0)
 73 # define rgmii_attach(x,y,z)    (-ENXIO)
 74 # define rgmii_detach(x,y)      do { } while(0)
 75 # define rgmii_get_mdio(o,i)    do { } while (0)
 76 # define rgmii_put_mdio(o,i)    do { } while (0)
 77 # define rgmii_set_speed(x,y,z) do { } while(0)
 78 # define rgmii_get_regs_len(x)  0
 79 # define rgmii_dump_regs(x,buf) (buf)
 80 #endif                          /* !CONFIG_IBM_NEW_EMAC_RGMII */
 81 
 82 #endif /* __IBM_NEWEMAC_RGMII_H */
 83 
  This page was automatically generated by the LXR engine.