cdc_ether: add usb id for Ericsson F3507g
[safe/jmp/linux-2.6] / drivers / net / fs_enet / fs_enet.h
index 1105543..85a4bab 100644 (file)
@@ -4,15 +4,20 @@
 #include <linux/mii.h>
 #include <linux/netdevice.h>
 #include <linux/types.h>
-#include <linux/version.h>
 #include <linux/list.h>
+#include <linux/phy.h>
+#include <linux/dma-mapping.h>
 
 #include <linux/fs_enet_pd.h>
-
-#include <asm/dma-mapping.h>
+#include <asm/fs_pd.h>
 
 #ifdef CONFIG_CPM1
-#include <asm/commproc.h>
+#include <asm/cpm1.h>
+
+struct fec_info {
+       fec_t __iomem *fecp;
+       u32 mii_speed;
+};
 #endif
 
 #ifdef CONFIG_CPM2
@@ -26,10 +31,9 @@ struct fs_ops {
        void (*free_bd)(struct net_device *dev);
        void (*cleanup_data)(struct net_device *dev);
        void (*set_multicast_list)(struct net_device *dev);
+       void (*adjust_link)(struct net_device *dev);
        void (*restart)(struct net_device *dev);
        void (*stop)(struct net_device *dev);
-       void (*pre_request_irq)(struct net_device *dev, int irq);
-       void (*post_free_irq)(struct net_device *dev, int irq);
        void (*napi_clear_rx_event)(struct net_device *dev);
        void (*napi_enable_rx)(struct net_device *dev);
        void (*napi_disable_rx)(struct net_device *dev);
@@ -63,64 +67,27 @@ struct phy_info {
 /* Must be a multiple of 32 (to cover both FEC & FCC) */
 #define PKT_MAXBLR_SIZE                ((PKT_MAXBUF_SIZE + 31) & ~31)
 /* This is needed so that invalidate_xxx wont invalidate too much */
-#define ENET_RX_FRSIZE         L1_CACHE_ALIGN(PKT_MAXBUF_SIZE)
-
-struct fs_enet_mii_bus {
-       struct list_head list;
-       spinlock_t mii_lock;
-       const struct fs_mii_bus_info *bus_info;
-       int refs;
-       u32 usage_map;
-
-       int (*mii_read)(struct fs_enet_mii_bus *bus,
-                       int phy_id, int location);
-
-       void (*mii_write)(struct fs_enet_mii_bus *bus,
-                       int phy_id, int location, int value);
-
-       union {
-               struct {
-                       unsigned int mii_speed;
-                       void *fecp;
-               } fec;
-
-               struct {
-                       /* note that the actual port size may */
-                       /* be different; cpm(s) handle it OK  */
-                       u8 mdio_msk;
-                       u8 *mdio_dir;
-                       u8 *mdio_dat;
-                       u8 mdc_msk;
-                       u8 *mdc_dir;
-                       u8 *mdc_dat;
-               } bitbang;
-
-               struct {
-                       u16 lpa;
-               } fixed;
-       };
-};
-
-int fs_mii_bitbang_init(struct fs_enet_mii_bus *bus);
-int fs_mii_fixed_init(struct fs_enet_mii_bus *bus);
-int fs_mii_fec_init(struct fs_enet_mii_bus *bus);
+#define ENET_RX_ALIGN  16
+#define ENET_RX_FRSIZE L1_CACHE_ALIGN(PKT_MAXBUF_SIZE + ENET_RX_ALIGN - 1)
 
 struct fs_enet_private {
+       struct napi_struct napi;
        struct device *dev;     /* pointer back to the device (must be initialized first) */
+       struct net_device *ndev;
        spinlock_t lock;        /* during all ops except TX pckt processing */
        spinlock_t tx_lock;     /* during fs_start_xmit and fs_tx         */
-       const struct fs_platform_info *fpi;
+       struct fs_platform_info *fpi;
        const struct fs_ops *ops;
        int rx_ring, tx_ring;
        dma_addr_t ring_mem_addr;
-       void *ring_base;
+       void __iomem *ring_base;
        struct sk_buff **rx_skbuff;
        struct sk_buff **tx_skbuff;
-       cbd_t *rx_bd_base;      /* Address of Rx and Tx buffers.    */
-       cbd_t *tx_bd_base;
-       cbd_t *dirty_tx;        /* ring entries to be free()ed.     */
-       cbd_t *cur_rx;
-       cbd_t *cur_tx;
+       cbd_t __iomem *rx_bd_base;      /* Address of Rx and Tx buffers.    */
+       cbd_t __iomem *tx_bd_base;
+       cbd_t __iomem *dirty_tx;        /* ring entries to be free()ed.     */
+       cbd_t __iomem *cur_rx;
+       cbd_t __iomem *cur_tx;
        int tx_free;
        struct net_device_stats stats;
        struct timer_list phy_timer_list;
@@ -128,10 +95,10 @@ struct fs_enet_private {
        u32 msg_enable;
        struct mii_if_info mii_if;
        unsigned int last_mii_status;
-       struct fs_enet_mii_bus *mii_bus;
        int interrupt;
 
-       int duplex, speed;      /* current settings */
+       struct phy_device *phydev;
+       int oldduplex, oldspeed, oldlink;       /* current settings */
 
        /* event masks */
        u32 ev_napi_rx;         /* mask of NAPI rx events */
@@ -145,23 +112,23 @@ struct fs_enet_private {
        union {
                struct {
                        int idx;                /* FEC1 = 0, FEC2 = 1  */
-                       void *fecp;             /* hw registers        */
+                       void __iomem *fecp;     /* hw registers        */
                        u32 hthi, htlo;         /* state for multicast */
                } fec;
 
                struct {
                        int idx;                /* FCC1-3 = 0-2        */
-                       void *fccp;             /* hw registers        */
-                       void *ep;               /* parameter ram       */
-                       void *fcccp;            /* hw registers cont.  */
-                       void *mem;              /* FCC DPRAM */
+                       void __iomem *fccp;     /* hw registers        */
+                       void __iomem *ep;       /* parameter ram       */
+                       void __iomem *fcccp;    /* hw registers cont.  */
+                       void __iomem *mem;      /* FCC DPRAM */
                        u32 gaddrh, gaddrl;     /* group address       */
                } fcc;
 
                struct {
                        int idx;                /* FEC1 = 0, FEC2 = 1  */
-                       void *sccp;             /* hw registers        */
-                       void *ep;               /* parameter ram       */
+                       void __iomem *sccp;     /* hw registers        */
+                       void __iomem *ep;       /* parameter ram       */
                        u32 hthi, htlo;         /* state for multicast */
                } scc;
 
@@ -170,15 +137,6 @@ struct fs_enet_private {
 
 /***************************************************************************/
 
-int fs_mii_read(struct net_device *dev, int phy_id, int location);
-void fs_mii_write(struct net_device *dev, int phy_id, int location, int value);
-
-void fs_mii_startup(struct net_device *dev);
-void fs_mii_shutdown(struct net_device *dev);
-void fs_mii_ack_int(struct net_device *dev);
-
-void fs_mii_link_status_change_check(struct net_device *dev, int init_media);
-
 void fs_init_bds(struct net_device *dev);
 void fs_cleanup_bds(struct net_device *dev);
 
@@ -195,7 +153,6 @@ int fs_enet_platform_init(void);
 void fs_enet_platform_cleanup(void);
 
 /***************************************************************************/
-
 /* buffer descriptor access macros */
 
 /* access macros */
@@ -238,7 +195,7 @@ extern const struct fs_ops fs_scc_ops;
 /*******************************************************************/
 
 /* handy pointer to the immap */
-extern void *fs_enet_immap;
+extern void __iomem *fs_enet_immap;
 
 /*******************************************************************/