diff mbox series

[v2,1/3] of: Move simple-framebuffer device handling from simplefb to of

Message ID 20211207072943.121961-2-marcan@marcan.st (mailing list archive)
State New, archived
Headers show
Series drm/simpledrm: Apple M1 / DT platform support fixes | expand

Commit Message

Hector Martin Dec. 7, 2021, 7:29 a.m. UTC
This code is required for both simplefb and simpledrm, so let's move it
into the OF core instead of having it as an ad-hoc initcall in the
drivers.

Signed-off-by: Hector Martin <marcan@marcan.st>
---
 drivers/of/platform.c          |  5 +++++
 drivers/video/fbdev/simplefb.c | 21 +--------------------
 2 files changed, 6 insertions(+), 20 deletions(-)

Comments

Thomas Zimmermann Dec. 7, 2021, 9:02 a.m. UTC | #1
Hi

Am 07.12.21 um 08:29 schrieb Hector Martin:
> This code is required for both simplefb and simpledrm, so let's move it
> into the OF core instead of having it as an ad-hoc initcall in the
> drivers.
> 
> Signed-off-by: Hector Martin <marcan@marcan.st>

Acked-by: Thomas Zimmermann <tzimmermann@suse.de>

This looks much better than before. Thank you.

> ---
>   drivers/of/platform.c          |  5 +++++
>   drivers/video/fbdev/simplefb.c | 21 +--------------------
>   2 files changed, 6 insertions(+), 20 deletions(-)
> 
> diff --git a/drivers/of/platform.c b/drivers/of/platform.c
> index b3faf89744aa..e097f40b03c0 100644
> --- a/drivers/of/platform.c
> +++ b/drivers/of/platform.c
> @@ -540,6 +540,11 @@ static int __init of_platform_default_populate_init(void)
>   		of_node_put(node);
>   	}
>   
> +	for_each_child_of_node(of_chosen, node) {
> +		if (of_device_is_compatible(node, "simple-framebuffer"))
> +			of_platform_device_create(node, NULL, NULL);
> +	}
> +
>   	/* Populate everything else. */
>   	of_platform_default_populate(NULL, NULL, NULL);
>   
> diff --git a/drivers/video/fbdev/simplefb.c b/drivers/video/fbdev/simplefb.c
> index b63074fd892e..57541887188b 100644
> --- a/drivers/video/fbdev/simplefb.c
> +++ b/drivers/video/fbdev/simplefb.c
> @@ -541,26 +541,7 @@ static struct platform_driver simplefb_driver = {
>   	.remove = simplefb_remove,
>   };
>   
> -static int __init simplefb_init(void)
> -{
> -	int ret;
> -	struct device_node *np;
> -
> -	ret = platform_driver_register(&simplefb_driver);
> -	if (ret)
> -		return ret;
> -
> -	if (IS_ENABLED(CONFIG_OF_ADDRESS) && of_chosen) {
> -		for_each_child_of_node(of_chosen, np) {
> -			if (of_device_is_compatible(np, "simple-framebuffer"))
> -				of_platform_device_create(np, NULL, NULL);
> -		}
> -	}
> -
> -	return 0;
> -}
> -
> -fs_initcall(simplefb_init);
> +module_platform_driver(simplefb_driver);
>   
>   MODULE_AUTHOR("Stephen Warren <swarren@wwwdotorg.org>");
>   MODULE_DESCRIPTION("Simple framebuffer driver");
>
Thomas Zimmermann Dec. 7, 2021, 9:03 a.m. UTC | #2
Am 07.12.21 um 10:02 schrieb Thomas Zimmermann:
> Hi
> 
> Am 07.12.21 um 08:29 schrieb Hector Martin:
>> This code is required for both simplefb and simpledrm, so let's move it
>> into the OF core instead of having it as an ad-hoc initcall in the
>> drivers.
>>
>> Signed-off-by: Hector Martin <marcan@marcan.st>
> 
> Acked-by: Thomas Zimmermann <tzimmermann@suse.de>

Well, please don't take this as a review. :)

> 
> This looks much better than before. Thank you.
> 
>> ---
>>   drivers/of/platform.c          |  5 +++++
>>   drivers/video/fbdev/simplefb.c | 21 +--------------------
>>   2 files changed, 6 insertions(+), 20 deletions(-)
>>
>> diff --git a/drivers/of/platform.c b/drivers/of/platform.c
>> index b3faf89744aa..e097f40b03c0 100644
>> --- a/drivers/of/platform.c
>> +++ b/drivers/of/platform.c
>> @@ -540,6 +540,11 @@ static int __init 
>> of_platform_default_populate_init(void)
>>           of_node_put(node);
>>       }
>> +    for_each_child_of_node(of_chosen, node) {
>> +        if (of_device_is_compatible(node, "simple-framebuffer"))
>> +            of_platform_device_create(node, NULL, NULL);
>> +    }
>> +
>>       /* Populate everything else. */
>>       of_platform_default_populate(NULL, NULL, NULL);
>> diff --git a/drivers/video/fbdev/simplefb.c 
>> b/drivers/video/fbdev/simplefb.c
>> index b63074fd892e..57541887188b 100644
>> --- a/drivers/video/fbdev/simplefb.c
>> +++ b/drivers/video/fbdev/simplefb.c
>> @@ -541,26 +541,7 @@ static struct platform_driver simplefb_driver = {
>>       .remove = simplefb_remove,
>>   };
>> -static int __init simplefb_init(void)
>> -{
>> -    int ret;
>> -    struct device_node *np;
>> -
>> -    ret = platform_driver_register(&simplefb_driver);
>> -    if (ret)
>> -        return ret;
>> -
>> -    if (IS_ENABLED(CONFIG_OF_ADDRESS) && of_chosen) {
>> -        for_each_child_of_node(of_chosen, np) {
>> -            if (of_device_is_compatible(np, "simple-framebuffer"))
>> -                of_platform_device_create(np, NULL, NULL);
>> -        }
>> -    }
>> -
>> -    return 0;
>> -}
>> -
>> -fs_initcall(simplefb_init);
>> +module_platform_driver(simplefb_driver);
>>   MODULE_AUTHOR("Stephen Warren <swarren@wwwdotorg.org>");
>>   MODULE_DESCRIPTION("Simple framebuffer driver");
>>
>
Rob Herring Dec. 8, 2021, 5:49 p.m. UTC | #3
On Tue, Dec 7, 2021 at 1:31 AM Hector Martin <marcan@marcan.st> wrote:
>
> This code is required for both simplefb and simpledrm, so let's move it
> into the OF core instead of having it as an ad-hoc initcall in the
> drivers.
>
> Signed-off-by: Hector Martin <marcan@marcan.st>
> ---
>  drivers/of/platform.c          |  5 +++++
>  drivers/video/fbdev/simplefb.c | 21 +--------------------
>  2 files changed, 6 insertions(+), 20 deletions(-)
>
> diff --git a/drivers/of/platform.c b/drivers/of/platform.c
> index b3faf89744aa..e097f40b03c0 100644
> --- a/drivers/of/platform.c
> +++ b/drivers/of/platform.c
> @@ -540,6 +540,11 @@ static int __init of_platform_default_populate_init(void)
>                 of_node_put(node);
>         }
>
> +       for_each_child_of_node(of_chosen, node) {
> +               if (of_device_is_compatible(node, "simple-framebuffer"))

node = of_get_compatible_child(of_chosen, "simple-framebuffer");
of_platform_device_create(node, NULL, NULL);
of_node_put(node);

Please Cc the DT list. Looks like this patch can be applied
independently. (Better get the other 2 into drm-misc soon or it will
miss 5.17).

Rob
Thomas Zimmermann Dec. 9, 2021, 10:17 a.m. UTC | #4
Hi

Am 08.12.21 um 18:49 schrieb Rob Herring:
> On Tue, Dec 7, 2021 at 1:31 AM Hector Martin <marcan@marcan.st> wrote:
>>
>> This code is required for both simplefb and simpledrm, so let's move it
>> into the OF core instead of having it as an ad-hoc initcall in the
>> drivers.
>>
>> Signed-off-by: Hector Martin <marcan@marcan.st>
>> ---
>>   drivers/of/platform.c          |  5 +++++
>>   drivers/video/fbdev/simplefb.c | 21 +--------------------
>>   2 files changed, 6 insertions(+), 20 deletions(-)
>>
>> diff --git a/drivers/of/platform.c b/drivers/of/platform.c
>> index b3faf89744aa..e097f40b03c0 100644
>> --- a/drivers/of/platform.c
>> +++ b/drivers/of/platform.c
>> @@ -540,6 +540,11 @@ static int __init of_platform_default_populate_init(void)
>>                  of_node_put(node);
>>          }
>>
>> +       for_each_child_of_node(of_chosen, node) {
>> +               if (of_device_is_compatible(node, "simple-framebuffer"))
> 
> node = of_get_compatible_child(of_chosen, "simple-framebuffer");
> of_platform_device_create(node, NULL, NULL);
> of_node_put(node);
> 
> Please Cc the DT list. Looks like this patch can be applied
> independently. (Better get the other 2 into drm-misc soon or it will
> miss 5.17).

Can we merge the whole patchset through drm-misc? Patches 2 and 3 are 
useless without the first one.

Best regards
Thomas

> 
> Rob
>
diff mbox series

Patch

diff --git a/drivers/of/platform.c b/drivers/of/platform.c
index b3faf89744aa..e097f40b03c0 100644
--- a/drivers/of/platform.c
+++ b/drivers/of/platform.c
@@ -540,6 +540,11 @@  static int __init of_platform_default_populate_init(void)
 		of_node_put(node);
 	}
 
+	for_each_child_of_node(of_chosen, node) {
+		if (of_device_is_compatible(node, "simple-framebuffer"))
+			of_platform_device_create(node, NULL, NULL);
+	}
+
 	/* Populate everything else. */
 	of_platform_default_populate(NULL, NULL, NULL);
 
diff --git a/drivers/video/fbdev/simplefb.c b/drivers/video/fbdev/simplefb.c
index b63074fd892e..57541887188b 100644
--- a/drivers/video/fbdev/simplefb.c
+++ b/drivers/video/fbdev/simplefb.c
@@ -541,26 +541,7 @@  static struct platform_driver simplefb_driver = {
 	.remove = simplefb_remove,
 };
 
-static int __init simplefb_init(void)
-{
-	int ret;
-	struct device_node *np;
-
-	ret = platform_driver_register(&simplefb_driver);
-	if (ret)
-		return ret;
-
-	if (IS_ENABLED(CONFIG_OF_ADDRESS) && of_chosen) {
-		for_each_child_of_node(of_chosen, np) {
-			if (of_device_is_compatible(np, "simple-framebuffer"))
-				of_platform_device_create(np, NULL, NULL);
-		}
-	}
-
-	return 0;
-}
-
-fs_initcall(simplefb_init);
+module_platform_driver(simplefb_driver);
 
 MODULE_AUTHOR("Stephen Warren <swarren@wwwdotorg.org>");
 MODULE_DESCRIPTION("Simple framebuffer driver");