Re: [RFC PATCH 0/6] Support ROHM BD96801 scalable PMIC

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

 



On 5/9/24 08:08, Mark Brown wrote:
On Mon, Apr 22, 2024 at 01:52:27PM +0300, Matti Vaittinen wrote:
On 4/5/24 12:19, Matti Vaittinen wrote:
On 4/4/24 16:15, Matti Vaittinen wrote:

I would expect each parent interrupt to show up as a separate remap_irq.

So if we arrange to supply a name when we register multiple domains
things should work fine?

After my latest findings, yes, I think so. How to do this correctly is
beyond me though. The __irq_domain_create() seems to me that the name is
meant to be the dt-node name when the controller is backed by a real
dt-node. Naming of the irq_domain_alloc_named_fwnode() sounds to me like

...

If we wanted to support multiple HWIRQs / regmap-IRQ controller, it would
require us to duplicate almost everything in the struct regmap_irq_chip for
every new parent IRQ. The status/mask register information, IRQ type, etc.
Naturally, it would require also duplicating lot of the data contained in
the struct regmap_irq_chip_data. I am not sure if this could be done so the
change is not reflected in the existing IRQ data initialization macros etc.
Furthermore, some API changes would be required like changes to
regmap_irq_get_domain().

I don't understand what the difficulty is here - we're creating multiple
interrupt controllers so I'd expect to have to have full definitions of
each, and since everything is referenced by name from the root
regmap_irq_chip which gets registered it's just a case of supplying
different names and all the helpers should be fine?

Thus, forcing the regmap-IRQ to support multiple parents instead of having
own regmap-IRQ instance / parent IRQ feels like fitting square item to a
round hole. I am sure fixing all the bugs I caused would give donate a lot
of EXP-points though :rolleyes:

Right, my suggestion is to register multiple regmap_irq instrances - one
per parent - and supply a name that allows all the display/debugfs stuff
that currently uses the dev_name() to deduplicate.  You'd end up
sticking -primary, -secondary or whatever name was supplied onto the
names we currently use.

Another option I see, is trying to think if irq-domain name could be
changed. (This is what the RFC v3 does, [ab]using the
irq_domain_update_bus_token()). I was a bit put off by the idea of
'instantiating' multiple domains (or regmap-IRQ controllers) from a single
node, but more I think of this, more I lean towards it. Besides, this is not

Yes, register mutliple controllers with different names.

Thanks for the guidance Mark. The controller name is not a problem. Problem is that I don't see a (proper) way to supply a name for the IRQ domain which gets registered by regmap-IRQ. IRQ domain code picks the name for the domain by the device-tree node. Both of our IRQ controllers would be instantiated from same node => the IRQ domain will get same name => debugfs will conflict.

My "solution" was simply dropping the ERRB IRQ from the driver (for now at least). I did send that as a series without 'RFC' - but made a mistake and restarted the versioning from v1. I am currently working with 2 other PMICs, one of them does also provide similar setup of two IRQ lines. Thus, I think being able to provide a name (suffix?) for IRQ domain when registering it instead of just using the name of the DT node is something I should look into. It's just nice to know someone else thinks it is valid approach.

Thanks for the input!

Yours,
	-- Matti



--
Matti Vaittinen
Linux kernel developer at ROHM Semiconductors
Oulu Finland

~~ When things go utterly wrong vim users can always type :help! ~~





[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux