Re: how to perform i2c transaction with disabled irq?

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

 



They are afraid that some peripheral device will report interrupt and after board reset the peripheral device will be in some transient state if handling of interrupt from peripheral device will be somewhere in the middle interrupted by board reset. However in this case this is probably uboot task to initialize peripheral devices from the beginning, switch them and release from reset. Or another way is to shutdown peripheral devices before reset, disable interrupts in their internal registers - at least when /sbin/reboot is executed we see that before reset shutdown procedure is running.

On Thu, Apr 30, 2020 at 1:20 PM Greg KH <greg@xxxxxxxxx> wrote:
On Thu, Apr 30, 2020 at 01:11:06PM +0200, Tomek The Messenger wrote:
> Hi
> If I don't have disabled irqs I can use API i2c_smbus_write_byte in order
> to perform i2c transaction.
> But how to make i2c transaction if I have disabled irq? Is any built-in
> function which lets such operation, where there is some polling implemented?
> The background is that I do i2c transaction in restart handler (some i2c
> transaction to hot swap controller) in order to reset board.  And linux
> before entering restart handler list disable interrupts. There is a
> function to enable back interrupts but in company in which I am working
> engineers reviewed it and said "it is not allowed, restart must be
> performed when interrupts are disabled".

Ask the engineers how you are supposed to use an interrupt driven device
with interrupts disabled.

good luck!

greg k-h
_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]

  Powered by Linux