devices/8139too-2.6.27-ethercat.c
changeset 2589 2b9c78543663
parent 1370 0625902b3904
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");
  1064 	tp->mii.mdio_write = mdio_write;
  1064 	tp->mii.mdio_write = mdio_write;
  1065 	tp->mii.phy_id_mask = 0x3f;
  1065 	tp->mii.phy_id_mask = 0x3f;
  1066 	tp->mii.reg_num_mask = 0x1f;
  1066 	tp->mii.reg_num_mask = 0x1f;
  1067 
  1067 
  1068 	/* dev is fully set up and ready to use now */
  1068 	/* dev is fully set up and ready to use now */
  1069     
  1069 
  1070 	// offer device to EtherCAT master module
  1070 	// offer device to EtherCAT master module
  1071 	tp->ecdev = ecdev_offer(dev, ec_poll, THIS_MODULE);
  1071 	tp->ecdev = ecdev_offer(dev, ec_poll, THIS_MODULE);
  1072 
  1072 
  1073 	if (!tp->ecdev) {
  1073 	if (!tp->ecdev) {
  1074 		DPRINTK("about to register device named %s (%p)...\n", dev->name, dev);
  1074 		DPRINTK("about to register device named %s (%p)...\n", dev->name, dev);
  1143 
  1143 
  1144 	/* Put the chip into low-power mode. */
  1144 	/* Put the chip into low-power mode. */
  1145 	if (rtl_chip_info[tp->chipset].flags & HasHltClk)
  1145 	if (rtl_chip_info[tp->chipset].flags & HasHltClk)
  1146 		RTL_W8 (HltClk, 'H');	/* 'R' would leave the clock running. */
  1146 		RTL_W8 (HltClk, 'H');	/* 'R' would leave the clock running. */
  1147 
  1147 
  1148 	if (tp->ecdev && ecdev_open(tp->ecdev)) {
  1148 	if (tp->ecdev) {
  1149 		ecdev_withdraw(tp->ecdev);
  1149 		i = ecdev_open(tp->ecdev);
  1150 		goto err_out;
  1150 		if (i) {
       
  1151 			ecdev_withdraw(tp->ecdev);
       
  1152 			goto err_out;
       
  1153 		}
  1151 	}
  1154 	}
  1152 
  1155 
  1153 	return 0;
  1156 	return 0;
  1154 
  1157 
  1155 err_out:
  1158 err_out: