Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 5 Jun 2020 00:01:22 +0530
From:      Rajesh Kumar <rajfbsd@gmail.com>
To:        Warner Losh <imp@bsdimp.com>
Cc:        Andriy Gapon <avg@freebsd.org>, freebsd-drivers@freebsd.org,  FreeBSD Hackers <freebsd-hackers@freebsd.org>
Subject:   Re: Can we hook a device as device to two different parent devices?
Message-ID:  <CAAO%2BANOQfY3AUy5o9BP22O5Uxp83crAXNhFrOeMcmsStkk4Y-w@mail.gmail.com>
In-Reply-To: <CANCZdfpF%2BaiZYLRHo-NOizZcAuBz%2BXhsqYvXTazHrMVz_%2Bh=3w@mail.gmail.com>
References:  <CAAO%2BANOB8m6OjRY-FOVVHQi3vdcCEnHdjE2s3xoHdh0rjaTruQ@mail.gmail.com> <c1b611bc-4fa7-7975-da3f-e7c68a26e92b@FreeBSD.org> <CANCZdfpF%2BaiZYLRHo-NOizZcAuBz%2BXhsqYvXTazHrMVz_%2Bh=3w@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Thanks Warner and Andriy for your answers.

Having said they are two separate instances, if the child driver calls the
interface of two parents as below
device1_interface(child_dev), then  device_get_parent(child_dev) in the
device1 interface will return device1 reference
device2_interface(child_dev), then  device_get_parent(child_dev) in the
device2 interface will return device2 reference

Is that right?

Thanks,
Rajesh.


On Wed, Jun 3, 2020 at 8:59 PM Warner Losh <imp@bsdimp.com> wrote:

>
>
> On Wed, Jun 3, 2020, 8:29 AM Andriy Gapon <avg@freebsd.org> wrote:
>
>> On 03/06/2020 14:20, Rajesh Kumar wrote:
>> > Hi,
>> >
>> > Is it really possible to declare a module with two parents? Like the
>> > following declarations in the same driver.
>> >
>> > devclass_t test_dev_devclass;
>> > static DEFINE_CLASS_0(test_dev, test_dev_driver, test_dev_methods,
>> > sizeof(struct test_dev_ctx));
>> > DRIVER_MODULE(test_dev, *device1*, test_dev_driver, test_dev_devclass,
>> > NULL, NULL);
>> > DRIVER_MODULE(test_dev, *device2*, test_dev_driver, test_dev_devclass,
>> > NULL, NULL);
>> >
>> > I see similar references in other drivers attaching to both simpleus and
>> > ofwbus. So, If it's possible, how to get the reference for both the
>> > parents?  device_get_parent(test_dev) will give reference of one parent
>> > only right, so how to get the reference of the desired parent?
>>
>> A device can have only one parent.
>> The declaration you quoted describes a _driver_ that can attach to devices
>> hanging off two different buses.  They would still be different devices.
>>
>
> Yes. You can have a driver attach to multiple bus types, but each instance
> has a unique parent one exactly on of them.
>
> If you need to talk to other devices, you'll need to find them by name or
> other means.
>
> Warner
>
>
>
>> --
>> Andriy Gapon
>> _______________________________________________
>> freebsd-drivers@freebsd.org mailing list
>> https://lists.freebsd.org/mailman/listinfo/freebsd-drivers
>> To unsubscribe, send any mail to "freebsd-drivers-unsubscribe@freebsd.org
>> "
>>
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAAO%2BANOQfY3AUy5o9BP22O5Uxp83crAXNhFrOeMcmsStkk4Y-w>