It is invalid to call device_add_child() while holding the driver's
mutex. This was previously of no consequence, but a recent change
to device array allocation (f3d3c63442ff) switched the logic to use
M_WAITOK. Now, a LOR warning is printed when the card is inserted.
Fix this by reducing the scope of the device lock in the helper function
to:
- Reading device state (card & child device presence)
- Updating device state (after child added/before removed)