- vdev->divisor = ids->divisor;
- result = __vlynq_enable_device(vdev);
- if (result == 0) {
- id = vlynq_reg_read(vdev->remote->chip);
- ops->off(vdev);
- if (ids->id == id) {
- vlynq_set_drvdata(vdev, ids);
- return 1;
- }
+ flag = 0;
+ if (ids->divisor != vlynq_div_auto
+ && vdev->divisor == vlynq_div_auto) {
+ flag = 1;
+ vdev->divisor = ids->divisor;
+ result = __vlynq_enable_device(vdev);
+ if (result == 0) {
+ id = vlynq_reg_read(vdev->remote->chip);
+ vlynq_reg_write(vdev->local->control, 0);
+ vlynq_reg_write(vdev->remote->control, 0);
+ ops->off(vdev);
+ } else
+ id = vdev->dev_id;
+ } else
+ id = vdev->dev_id;
+ if (ids->id == id) {
+ vdev->dev_id = id;
+ vlynq_set_drvdata(vdev, ids);
+ printk(KERN_INFO "Driver found for VLYNQ " \
+ "device: %08x\n", id);
+ return 1;