Re: [Patch v1] Bluetooth: Add Rfkill driver for Intel Bluetooth controller

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Dmitry,

>>>> We are planning to further implement the followings, kindly please
>>>> provide your suggestions.
>>>> 1. To handle more than 1 Intel BT controller connected to platform,
>>>> will keep list of the objects in "static const struct acpi_device_id
>>>> intel_bt_rfkill_acpi_match[] ". And keep a list of "struct
>>>> intel_bt_rfkill_dev" for each of the acpi object.
>>>> 2.  With this implementation from user space RF kill for the device
>>>> object is achieved, however need to map the rfkill object with the
>>>> corresponding "hdev" so that on error from the controller kernel can
>>>> do the reset through this RF Kill driver.
>>> 
>>> I am confused, why you model a generic chip reset functionality via
>>> RFKill subsystem. As far as I understand, the issue is that you want to
>>> be able to reset the chip when it gets confused and not actually disable
>>> the chip/stop it from emitting RF signals.
>>> 
>>> I believe this functionality should be contained in the driver and you
>>> simply need to come with a way to tie the adapter instance with data in
>>> ACPI, probably based on physical USB connection.
>> 
>> it is impossible to do that in the driver since what the GPIO is doing is to push the USB device off the bus. So you actually see an USB disconnect and a new re-enumeration when it comes back. Meaning the driver knows nothing during that time.
> 
> The driver would know that it is in the middle of resetting the
> device. The fact that the device disappears from the bus is not a big
> deal. You just need to make sure you finish the reset task running
> before finishing teardown of the device in disconnect method.

it is a big deal and it is unpredictable. We can not magically assign resources to a device that is about to go away. And more importantly you have no idea which device goes away.

>> This is a classic soft RFKILL switch like we have seen in the early Thinkpads.
> 
> It is not RFkill as, as far as I understand, it does not guarantee
> that it actually blocks the transmitter. It really is a reset line and
> its purpose is to unwedge the chip, not keep it in the off state. I do
> not think there is a reason to export this as RFkill switch to
> userspace and then build infrastructure to recognize that this is
> special kind of RFkill switch that can be used to work around issues
> in the controller. Have the driver assert and deassert it to kick
> itself off the bus, the USB hotplug will take care of the rest.

It is a RFKILL switch since the device looses power and with also turns RF off. As I said, this is the same as with the old Thinkpads where we have done exactly the same.

Regards

Marcel




[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux