On 2020-08-08 1:50 PM, Andy Shevchenko wrote:
On Fri, Aug 07, 2020 at 01:06:37PM +0200, Cezary Rojewski wrote:
Declare base structures, registers and device routines for the catpt solution. Catpt deprecates and is a direct replacement for sound/soc/intel/haswell. Supports Lynxpoint and Wildcat Point both.
...
+struct catpt_mregion {
- u32 start;
- u32 end;
- bool busy;
- struct list_head node;
+};
I'm wondering if struct resource can be used instead.
You know that you may introduce a new type of resource if you want to.
+static inline size_t catpt_mregion_size(const struct catpt_mregion *reg) +{
- return reg->end - reg->start + 1;
+}
+/* True if region r1 intersects region r2 */ +static inline bool catpt_mregion_intersects(struct catpt_mregion *r1,
struct catpt_mregion *r2)
+{
- return (r1->start >= r2->start && r1->start <= r2->end) ||
(r1->end >= r2->start && r1->end <= r2->end);
+}
+static inline bool catpt_mregion_intersecting(struct catpt_mregion *r1,
struct catpt_mregion *r2,
struct catpt_mregion *ret)
+{
- if (!catpt_mregion_intersects(r1, r2))
return false;
- ret->start = max(r1->start, r2->start);
- ret->end = min(r1->end, r2->end);
- return true;
+}
Yeah, it reminds the existing resource infrastructure. Why to repeat it?
As mentioned in the followup message: https://www.spinics.net/lists/alsa-devel/msg113563.html (Resource management section)
I opted out of 'struct resource' usage due to differences in its layout and preferred usage. Perhaps I shouldn't have.
I've embraced 'struct resource' fully in v2. Your suggestion cascaded into several other changes and some things were made redundant with removal of struct catpt_mbank and catpt_mregion. Change log has been added in v2 cover-letter describing consequences of said change.
Thanks, Czarek