+ spin_lock_irq(&vrc4173_cmu_lock);
+
+ switch (clock) {
+ case VRC4173_PIU_CLOCK:
+ vrc4173_cmuclkmsk |= MSKPIU;
+ break;
+ case VRC4173_KIU_CLOCK:
+ vrc4173_cmuclkmsk |= MSKKIU;
+ break;
+ case VRC4173_AIU_CLOCK:
+ vrc4173_cmuclkmsk |= MSKAIU;
+ break;
+ case VRC4173_PS2_CH1_CLOCK:
+ vrc4173_cmuclkmsk |= MSKPS2CH1;
+ break;
+ case VRC4173_PS2_CH2_CLOCK:
+ vrc4173_cmuclkmsk |= MSKPS2CH2;
+ break;
+ case VRC4173_USBU_PCI_CLOCK:
+ set_cmusrst(USBRST);
+ vrc4173_cmuclkmsk |= MSKUSB;
+ break;
+ case VRC4173_CARDU1_PCI_CLOCK:
+ set_cmusrst(CARD1RST);
+ vrc4173_cmuclkmsk |= MSKCARD1;
+ break;
+ case VRC4173_CARDU2_PCI_CLOCK:
+ set_cmusrst(CARD2RST);
+ vrc4173_cmuclkmsk |= MSKCARD2;
+ break;
+ case VRC4173_AC97U_PCI_CLOCK:
+ set_cmusrst(AC97RST);
+ vrc4173_cmuclkmsk |= MSKAC97;
+ break;
+ case VRC4173_USBU_48MHz_CLOCK:
+ set_cmusrst(USBRST);
+ vrc4173_cmuclkmsk |= MSK48MUSB;
+ break;
+ case VRC4173_EXT_48MHz_CLOCK:
+ if (vrc4173_cmuclkmsk & MSK48MOSC)
+ vrc4173_cmuclkmsk |= MSK48MPIN;
+ else
+ printk(KERN_WARNING
+ "vrc4173_supply_clock: "
+ "Please supply VRC4173_48MHz_CLOCK first "
+ "rather than VRC4173_EXT_48MHz_CLOCK.\n");
+ break;
+ case VRC4173_48MHz_CLOCK:
+ vrc4173_cmuclkmsk |= MSK48MOSC;
+ break;
+ default:
+ printk(KERN_WARNING
+ "vrc4173_supply_clock: Invalid CLOCK value %u\n", clock);
+ break;
+ }
+