Revert to Fedora kernel-2.6.17-1.2187_FC5 patched with vs2.0.2.1; there are too many...
[linux-2.6.git] / arch / ppc / platforms / mpc8272ads_setup.c
index 2a35fe2..abb7154 100644 (file)
@@ -56,51 +56,64 @@ static struct fs_uart_platform_info mpc8272_uart_pdata[] = {
        },
 };
 
-static struct fs_mii_bb_platform_info m82xx_mii_bb_pdata = {
-       .mdio_dat.bit   = 18,
-       .mdio_dir.bit   = 18,
-       .mdc_dat.bit    = 19,
-       .delay          = 1,
+static struct fs_mii_bus_info mii_bus_info = {
+       .method                 = fsmii_bitbang,
+       .id                     = 0,
+       .i.bitbang = {
+               .mdio_port      = fsiop_portc,
+               .mdio_bit       = 18,
+               .mdc_port       = fsiop_portc,
+               .mdc_bit        = 19,
+               .delay          = 1,
+       },
 };
 
-static struct fs_platform_info mpc82xx_enet_pdata[] = {
-       [fsid_fcc1] = {
-               .fs_no          = fsid_fcc1,
-               .cp_page        = CPM_CR_FCC1_PAGE,
-               .cp_block       = CPM_CR_FCC1_SBLOCK,
-
-               .clk_trx        = (PC_F1RXCLK | PC_F1TXCLK),
-               .clk_route      = CMX1_CLK_ROUTE,
-               .clk_mask       = CMX1_CLK_MASK,
-               .init_ioports   = init_fcc1_ioports,
-
-               .mem_offset     = FCC1_MEM_OFFSET,
-
-               .rx_ring        = 32,
-               .tx_ring        = 32,
-               .rx_copybreak   = 240,
-               .use_napi       = 0,
-               .napi_weight    = 17,
-               .bus_id         = "0:00",
-       },
-       [fsid_fcc2] = {
-               .fs_no          = fsid_fcc2,
-               .cp_page        = CPM_CR_FCC2_PAGE,
-               .cp_block       = CPM_CR_FCC2_SBLOCK,
-               .clk_trx        = (PC_F2RXCLK | PC_F2TXCLK),
-               .clk_route      = CMX2_CLK_ROUTE,
-               .clk_mask       = CMX2_CLK_MASK,
-               .init_ioports   = init_fcc2_ioports,
-
-               .mem_offset     = FCC2_MEM_OFFSET,
-
-               .rx_ring        = 32,
-               .tx_ring        = 32,
-               .rx_copybreak   = 240,
-               .use_napi       = 0,
-               .napi_weight    = 17,
-               .bus_id         = "0:03",
-       },
+static struct fs_platform_info mpc82xx_fcc1_pdata = {
+       .fs_no          = fsid_fcc1,
+       .cp_page        = CPM_CR_FCC1_PAGE,
+       .cp_block       = CPM_CR_FCC1_SBLOCK,
+       .clk_trx        = (PC_F1RXCLK | PC_F1TXCLK),
+       .clk_route      = CMX1_CLK_ROUTE,
+       .clk_mask       = CMX1_CLK_MASK,
+       .init_ioports   = init_fcc1_ioports,
+
+       .phy_addr       = 0,
+#ifdef PHY_INTERRUPT
+       .phy_irq        = PHY_INTERRUPT,
+#else
+       .phy_irq        = -1;
+#endif
+       .mem_offset     = FCC1_MEM_OFFSET,
+       .bus_info       = &mii_bus_info,
+       .rx_ring        = 32,
+       .tx_ring        = 32,
+       .rx_copybreak   = 240,
+       .use_napi       = 0,
+       .napi_weight    = 17,
+};
+
+static struct fs_platform_info mpc82xx_fcc2_pdata = {
+       .fs_no          = fsid_fcc2,
+       .cp_page        = CPM_CR_FCC2_PAGE,
+       .cp_block       = CPM_CR_FCC2_SBLOCK,
+       .clk_trx        = (PC_F2RXCLK | PC_F2TXCLK),
+       .clk_route      = CMX2_CLK_ROUTE,
+       .clk_mask       = CMX2_CLK_MASK,
+       .init_ioports   = init_fcc2_ioports,
+
+       .phy_addr       = 3,
+#ifdef PHY_INTERRUPT
+       .phy_irq        = PHY_INTERRUPT,
+#else
+       .phy_irq        = -1;
+#endif
+       .mem_offset     = FCC2_MEM_OFFSET,
+       .bus_info       = &mii_bus_info,
+       .rx_ring        = 32,
+       .tx_ring        = 32,
+       .rx_copybreak   = 240,
+       .use_napi       = 0,
+       .napi_weight    = 17,
 };
 
 static void init_fcc1_ioports(void)
@@ -196,21 +209,20 @@ static void __init mpc8272ads_fixup_enet_pdata(struct platform_device *pdev,
        bd_t* bi = (void*)__res;
        int fs_no = fsid_fcc1+pdev->id-1;
 
-       if(fs_no > ARRAY_SIZE(mpc82xx_enet_pdata)) {
-               return;
+       mpc82xx_fcc1_pdata.dpram_offset = mpc82xx_fcc2_pdata.dpram_offset = (u32)cpm2_immr->im_dprambase;
+       mpc82xx_fcc1_pdata.fcc_regs_c = mpc82xx_fcc2_pdata.fcc_regs_c = (u32)cpm2_immr->im_fcc_c;
+
+       switch(fs_no) {
+               case fsid_fcc1:
+                       memcpy(&mpc82xx_fcc1_pdata.macaddr,bi->bi_enetaddr,6);
+                       pdev->dev.platform_data = &mpc82xx_fcc1_pdata;
+               break;
+               case fsid_fcc2:
+                       memcpy(&mpc82xx_fcc2_pdata.macaddr,bi->bi_enetaddr,6);
+                       mpc82xx_fcc2_pdata.macaddr[5] ^= 1;
+                       pdev->dev.platform_data = &mpc82xx_fcc2_pdata;
+               break;
        }
-
-       mpc82xx_enet_pdata[fs_no].dpram_offset=
-                       (u32)cpm2_immr->im_dprambase;
-       mpc82xx_enet_pdata[fs_no].fcc_regs_c =
-                       (u32)cpm2_immr->im_fcc_c;
-       memcpy(&mpc82xx_enet_pdata[fs_no].macaddr,bi->bi_enetaddr,6);
-
-       /* prevent dup mac */
-       if(fs_no == fsid_fcc2)
-               mpc82xx_enet_pdata[fs_no].macaddr[5] ^= 1;
-
-       pdev->dev.platform_data = &mpc82xx_enet_pdata[fs_no];
 }
 
 static void mpc8272ads_fixup_uart_pdata(struct platform_device *pdev,
@@ -262,29 +274,6 @@ static void init_scc4_uart_ioports(void)
        iounmap(immap);
 }
 
-static void __init mpc8272ads_fixup_mdio_pdata(struct platform_device *pdev,
-                                             int idx)
-{
-       m82xx_mii_bb_pdata.irq[0] = PHY_INTERRUPT;
-       m82xx_mii_bb_pdata.irq[1] = -1;
-       m82xx_mii_bb_pdata.irq[2] = -1;
-       m82xx_mii_bb_pdata.irq[3] = PHY_INTERRUPT;
-       m82xx_mii_bb_pdata.irq[31] = -1;
-
-
-       m82xx_mii_bb_pdata.mdio_dat.offset =
-                               (u32)&cpm2_immr->im_ioport.iop_pdatc;
-
-       m82xx_mii_bb_pdata.mdio_dir.offset =
-                               (u32)&cpm2_immr->im_ioport.iop_pdirc;
-
-       m82xx_mii_bb_pdata.mdc_dat.offset =
-                               (u32)&cpm2_immr->im_ioport.iop_pdatc;
-
-
-       pdev->dev.platform_data = &m82xx_mii_bb_pdata;
-}
-
 static int mpc8272ads_platform_notify(struct device *dev)
 {
        static const struct platform_notify_dev_map dev_map[] = {
@@ -296,10 +285,6 @@ static int mpc8272ads_platform_notify(struct device *dev)
                        .bus_id = "fsl-cpm-scc:uart",
                        .rtn = mpc8272ads_fixup_uart_pdata,
                },
-               {
-                       .bus_id = "fsl-bb-mdio",
-                       .rtn = mpc8272ads_fixup_mdio_pdata,
-               },
                {
                        .bus_id = NULL
                }
@@ -334,7 +319,6 @@ int __init mpc8272ads_init(void)
        ppc_sys_device_enable(MPC82xx_CPM_SCC4);
 #endif
 
-       ppc_sys_device_enable(MPC82xx_MDIO_BB);
 
        return 0;
 }