devices/8139too-2.6.19-ethercat.c
changeset 2589 2b9c78543663
parent 1363 11c0b2caa253
equal deleted inserted replaced
2415:af21f0bdc7c9 2589:2b9c78543663
   642 	struct work_struct thread;
   642 	struct work_struct thread;
   643 
   643 
   644 	struct mii_if_info mii;
   644 	struct mii_if_info mii;
   645 	unsigned int regs_len;
   645 	unsigned int regs_len;
   646 	unsigned long fifo_copy_timeout;
   646 	unsigned long fifo_copy_timeout;
   647     
   647 
   648 	ec_device_t *ecdev;
   648 	ec_device_t *ecdev;
   649 };
   649 };
   650 
   650 
   651 MODULE_AUTHOR("Florian Pose <fp@igh-essen.com>");
   651 MODULE_AUTHOR("Florian Pose <fp@igh-essen.com>");
   652 MODULE_DESCRIPTION("RealTek RTL-8139 EtherCAT driver");
   652 MODULE_DESCRIPTION("RealTek RTL-8139 EtherCAT driver");
  1065 	tp->mii.mdio_write = mdio_write;
  1065 	tp->mii.mdio_write = mdio_write;
  1066 	tp->mii.phy_id_mask = 0x3f;
  1066 	tp->mii.phy_id_mask = 0x3f;
  1067 	tp->mii.reg_num_mask = 0x1f;
  1067 	tp->mii.reg_num_mask = 0x1f;
  1068 
  1068 
  1069 	/* dev is fully set up and ready to use now */
  1069 	/* dev is fully set up and ready to use now */
  1070     
  1070 
  1071 	// offer device to EtherCAT master module
  1071 	// offer device to EtherCAT master module
  1072 	tp->ecdev = ecdev_offer(dev, ec_poll, THIS_MODULE);
  1072 	tp->ecdev = ecdev_offer(dev, ec_poll, THIS_MODULE);
  1073 
  1073 
  1074 	if (!tp->ecdev) {
  1074 	if (!tp->ecdev) {
  1075 		DPRINTK("about to register device named %s (%p)...\n", dev->name, dev);
  1075 		DPRINTK("about to register device named %s (%p)...\n", dev->name, dev);
  1147 
  1147 
  1148 	/* Put the chip into low-power mode. */
  1148 	/* Put the chip into low-power mode. */
  1149 	if (rtl_chip_info[tp->chipset].flags & HasHltClk)
  1149 	if (rtl_chip_info[tp->chipset].flags & HasHltClk)
  1150 		RTL_W8 (HltClk, 'H');	/* 'R' would leave the clock running. */
  1150 		RTL_W8 (HltClk, 'H');	/* 'R' would leave the clock running. */
  1151 
  1151 
  1152 	if (tp->ecdev && ecdev_open(tp->ecdev)) {
  1152 	if (tp->ecdev) {
  1153 		ecdev_withdraw(tp->ecdev);
  1153 		i = ecdev_open(tp->ecdev);
  1154 		goto err_out;
  1154 		if (i) {
       
  1155 			ecdev_withdraw(tp->ecdev);
       
  1156 			goto err_out;
       
  1157 		}
  1155 	}
  1158 	}
  1156 
  1159 
  1157 	return 0;
  1160 	return 0;
  1158 
  1161 
  1159 err_out:
  1162 err_out: