I have a sd card which is connected on a microchip usb224x controller on im6qp processor based board.
SD signals are going to be converted in a USB dp and dm signal.
Now there are two use cases,
use case1: SD card is already inserted before power on,
sd 0:0:0:0: [sda] 249737216 512-byte logical blocks: (128 GB/119 GiB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] No Caching mode page found
sd 0:0:0:0: [sda] Assuming drive cache: write through
sd 0:0:0:0: [sda] Attached SCSI removable disk
Now if I remove SD card I don't get any kernel print which says that card is removed.
usecase2: SD card is inserted at running kernel.
No print comes that says that SD card is detected as sda.
In case 1, I can mount this SD card and access its contents.In case2 I cannot.
I have this question/confusion
1. Is user space responsible such as udev to tell if a device is present or not? I tried putting prints in many usb core files and none prints anything. However at the same time I am able to get interrupts on touch device that is using same usb bus but another channel.
I tried getting prints in usb functions in drivers/usb,storage and scsi subsysystem, but no observable prints came.
I tried enabling debugfs prints but I am getting no log even then and thats another issue which I am unable to resolve.
Main problem is I am getting no idea how and who initiates this change of removal and insertion, is it a low level kernel driver which looks for an interrupt and initiate the whole thing or udev such as /sbin/hotplug?
Kindly help as I am getting no clue and clarity here of prerequisites to make it work. Any debug pointers will be helpful.