devices/8139too-2.6.26-ethercat.c
changeset 2589 2b9c78543663
parent 1368 dcfb518d24eb
equal deleted inserted replaced
2415:af21f0bdc7c9 2589:2b9c78543663
   651 	struct delayed_work	thread;
   651 	struct delayed_work	thread;
   652 
   652 
   653 	struct mii_if_info	mii;
   653 	struct mii_if_info	mii;
   654 	unsigned int		regs_len;
   654 	unsigned int		regs_len;
   655 	unsigned long		fifo_copy_timeout;
   655 	unsigned long		fifo_copy_timeout;
   656     
   656 
   657 	ec_device_t *ecdev;
   657 	ec_device_t *ecdev;
   658 };
   658 };
   659 
   659 
   660 MODULE_AUTHOR("Florian Pose <fp@igh-essen.com>");
   660 MODULE_AUTHOR("Florian Pose <fp@igh-essen.com>");
   661 MODULE_DESCRIPTION("RealTek RTL-8139 EtherCAT driver");
   661 MODULE_DESCRIPTION("RealTek RTL-8139 EtherCAT driver");
  1058 	tp->mii.mdio_write = mdio_write;
  1058 	tp->mii.mdio_write = mdio_write;
  1059 	tp->mii.phy_id_mask = 0x3f;
  1059 	tp->mii.phy_id_mask = 0x3f;
  1060 	tp->mii.reg_num_mask = 0x1f;
  1060 	tp->mii.reg_num_mask = 0x1f;
  1061 
  1061 
  1062 	/* dev is fully set up and ready to use now */
  1062 	/* dev is fully set up and ready to use now */
  1063     
  1063 
  1064 	// offer device to EtherCAT master module
  1064 	// offer device to EtherCAT master module
  1065 	tp->ecdev = ecdev_offer(dev, ec_poll, THIS_MODULE);
  1065 	tp->ecdev = ecdev_offer(dev, ec_poll, THIS_MODULE);
  1066 
  1066 
  1067 	if (!tp->ecdev) {
  1067 	if (!tp->ecdev) {
  1068 		DPRINTK("about to register device named %s (%p)...\n", dev->name, dev);
  1068 		DPRINTK("about to register device named %s (%p)...\n", dev->name, dev);
  1137 
  1137 
  1138 	/* Put the chip into low-power mode. */
  1138 	/* Put the chip into low-power mode. */
  1139 	if (rtl_chip_info[tp->chipset].flags & HasHltClk)
  1139 	if (rtl_chip_info[tp->chipset].flags & HasHltClk)
  1140 		RTL_W8 (HltClk, 'H');	/* 'R' would leave the clock running. */
  1140 		RTL_W8 (HltClk, 'H');	/* 'R' would leave the clock running. */
  1141 
  1141 
  1142 	if (tp->ecdev && ecdev_open(tp->ecdev)) {
  1142 	if (tp->ecdev) {
  1143 		ecdev_withdraw(tp->ecdev);
  1143 		i = ecdev_open(tp->ecdev);
  1144 		goto err_out;
  1144 		if (i) {
       
  1145 			ecdev_withdraw(tp->ecdev);
       
  1146 			goto err_out;
       
  1147 		}
  1145 	}
  1148 	}
  1146 
  1149 
  1147 	return 0;
  1150 	return 0;
  1148 
  1151 
  1149 err_out:
  1152 err_out: