2017-12-27 12:55:14 -06:00
|
|
|
|
2007-05-03 02:38:57 +10:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-06-15 08:32:18 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-05-03 02:38:57 +10:00
|
|
|
|
2007-10-17 21:17:42 -07:00
|
|
|
|
2011-06-21 10:59:34 -06:00
|
|
|
|
2007-05-03 02:38:57 +10:00
|
|
|
|
2010-06-08 07:48:13 -06:00
|
|
|
|
2010-06-08 07:48:20 -06:00
|
|
|
|
2010-06-08 07:48:26 -06:00
|
|
|
|
2007-05-03 02:38:57 +10:00
|
|
|
|
2010-06-08 07:48:26 -06:00
|
|
|
|
2007-05-03 02:38:57 +10:00
|
|
|
|
2010-06-08 07:48:21 -06:00
|
|
|
|
of/platform: Disable sysfb if a simple-framebuffer node is found
Some DT platforms use EFI to boot and in this case the EFI Boot Services
may register a EFI_GRAPHICS_OUTPUT_PROTOCOL handle, that will later be
queried by the Linux EFI stub to fill the global struct screen_info data.
The data is used by the Generic System Framebuffers (sysfb) framework to
add a platform device with platform data about the system framebuffer.
But if there is a "simple-framebuffer" node in the DT, the OF core will
also do the same and add another device for the system framebuffer.
This could lead for example, to two platform devices ("simple-framebuffer"
and "efi-framebuffer") to be added and matched with their corresponding
drivers. So both efifb and simpledrm will be probed, leading to following:
[ 0.055752] efifb: framebuffer at 0xbd58dc000, using 16000k, total 16000k
[ 0.055755] efifb: mode is 2560x1600x32, linelength=10240, pages=1
[ 0.055758] efifb: scrolling: redraw
[ 0.055759] efifb: Truecolor: size=2:10:10:10, shift=30:20:10:0
...
[ 3.295896] simple-framebuffer bd58dc000.framebuffer: [drm] *ERROR*
could not acquire memory range [??? 0xffff79f30a29ee40-0x2a5000001a7
flags 0x0]: -16
[ 3.298018] simple-framebuffer: probe of bd58dc000.framebuffer
failed with error -16
To prevent the issue, make the OF core to disable sysfb if there is a node
with a "simple-framebuffer" compatible. That way only this device will be
registered and sysfb would not attempt to register another one using the
screen_info data even if this has been filled.
This seems the correct thing to do in this case because:
a) On a DT platform, the DTB is the single source of truth since is what
describes the hardware topology. Even if EFI Boot Services are used to
boot the machine.
b) The of_platform_default_populate_init() function is called in the
arch_initcall_sync() initcall level while the sysfb_init() function
is called later in the subsys_initcall() initcall level.
Reported-by: Andrew Worsley <amworsley@gmail.com>
Closes: https://lore.kernel.org/all/20231111042926.52990-2-amworsley@gmail.com
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Link: https://lore.kernel.org/r/20231113085305.1823455-1-javierm@redhat.com
Signed-off-by: Rob Herring <robh@kernel.org>
2023-11-13 09:51:41 +01:00
|
|
|
|
2010-06-08 07:48:21 -06:00
|
|
|
|
2023-07-17 08:37:16 -06:00
|
|
|
|
|
|
|
|
|
2010-07-23 19:19:35 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-11-01 11:53:22 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2021-03-25 10:47:12 -06:00
|
|
|
|
2010-07-23 19:19:35 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2019-07-23 23:18:33 +01:00
|
|
|
|
2010-07-23 19:19:35 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-07-17 08:37:17 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-02-24 14:58:34 -07:00
|
|
|
|
2023-08-22 13:27:22 +05:30
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-06-08 07:48:13 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-06-08 07:48:14 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-07-22 13:59:23 -06:00
|
|
|
|
2010-06-08 07:48:14 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-07-22 13:59:23 -06:00
|
|
|
|
2022-03-16 20:06:33 +00:00
|
|
|
|
2022-10-08 19:56:17 +08:00
|
|
|
|
2010-06-08 07:48:15 -06:00
|
|
|
|
2017-08-25 18:33:13 +03:00
|
|
|
|
2010-10-20 11:45:13 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2022-03-16 20:06:33 +00:00
|
|
|
|
2022-10-08 19:56:17 +08:00
|
|
|
|
2010-06-08 07:48:15 -06:00
|
|
|
|
|
|
|
|
|
2022-03-16 20:06:33 +00:00
|
|
|
|
|
|
|
|
|
2010-10-20 11:45:13 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2022-03-16 20:06:33 +00:00
|
|
|
|
2010-06-08 07:48:15 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-06-08 07:48:14 -06:00
|
|
|
|
2023-06-15 17:52:43 +03:00
|
|
|
|
2023-08-21 10:39:28 +08:00
|
|
|
|
2014-11-04 10:26:26 +00:00
|
|
|
|
2010-06-08 07:48:14 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-06-08 07:48:13 -06:00
|
|
|
|
2011-06-21 10:59:35 -06:00
|
|
|
|
2010-06-08 07:48:13 -06:00
|
|
|
|
|
|
|
|
|
2011-06-21 10:59:35 -06:00
|
|
|
|
2010-06-08 07:48:13 -06:00
|
|
|
|
2011-01-03 15:51:11 -07:00
|
|
|
|
2021-03-25 10:47:12 -06:00
|
|
|
|
2011-01-03 15:51:11 -07:00
|
|
|
|
2010-06-08 07:48:13 -06:00
|
|
|
|
2013-07-01 20:26:52 +01:00
|
|
|
|
2011-06-21 10:59:35 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-06-08 07:48:13 -06:00
|
|
|
|
2010-07-22 13:59:23 -06:00
|
|
|
|
2010-06-08 07:48:13 -06:00
|
|
|
|
2024-02-22 16:31:20 +01:00
|
|
|
|
|
|
|
|
|
2014-05-15 16:55:24 +01:00
|
|
|
|
|
|
|
|
|
2011-01-03 15:51:11 -07:00
|
|
|
|
|
|
|
|
|
2010-06-08 07:48:13 -06:00
|
|
|
|
|
|
|
|
|
2014-05-15 16:55:24 +01:00
|
|
|
|
2010-06-08 07:48:13 -06:00
|
|
|
|
2018-07-27 15:14:15 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-06-08 07:48:21 -06:00
|
|
|
|
2011-06-21 10:59:35 -06:00
|
|
|
|
2015-07-28 14:46:15 +01:00
|
|
|
|
2010-06-08 07:48:13 -06:00
|
|
|
|
2010-10-20 11:45:13 -06:00
|
|
|
|
|
|
|
|
|
2014-05-15 16:55:24 +01:00
|
|
|
|
2010-06-08 07:48:13 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-05-15 16:55:24 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-06-08 07:48:13 -06:00
|
|
|
|
2011-06-21 10:59:35 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2021-03-25 10:47:12 -06:00
|
|
|
|
2011-06-21 10:59:35 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-06-08 07:48:13 -06:00
|
|
|
|
|
|
|
|
|
2011-06-21 10:59:34 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2021-08-23 10:41:43 +01:00
|
|
|
|
2011-06-21 10:59:34 -06:00
|
|
|
|
2017-06-01 15:50:55 -05:00
|
|
|
|
2011-06-21 10:59:34 -06:00
|
|
|
|
2014-05-15 16:55:24 +01:00
|
|
|
|
|
|
|
|
|
2011-06-21 10:59:34 -06:00
|
|
|
|
|
|
|
|
|
2011-12-18 11:45:17 +00:00
|
|
|
|
2016-06-15 08:32:18 -05:00
|
|
|
|
2014-05-15 16:55:24 +01:00
|
|
|
|
2011-06-21 10:59:34 -06:00
|
|
|
|
2018-08-31 16:13:07 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-06-21 10:59:34 -06:00
|
|
|
|
2023-10-06 17:57:31 +03:00
|
|
|
|
2014-11-04 10:26:26 +00:00
|
|
|
|
2011-06-21 10:59:34 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-02-08 17:13:23 -06:00
|
|
|
|
2011-06-21 10:59:34 -06:00
|
|
|
|
|
|
|
|
|
2013-08-30 13:17:29 +02:00
|
|
|
|
2017-06-01 15:50:55 -05:00
|
|
|
|
|
|
|
|
|
2011-06-21 10:59:34 -06:00
|
|
|
|
2013-08-30 13:17:29 +02:00
|
|
|
|
2011-06-21 10:59:34 -06:00
|
|
|
|
2011-12-18 11:45:17 +00:00
|
|
|
|
2013-08-30 13:17:29 +02:00
|
|
|
|
2017-06-01 15:50:55 -05:00
|
|
|
|
|
|
|
|
|
2011-06-21 10:59:34 -06:00
|
|
|
|
2013-08-30 13:17:29 +02:00
|
|
|
|
2011-06-21 10:59:34 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-12-18 11:45:17 +00:00
|
|
|
|
2014-05-15 16:55:24 +01:00
|
|
|
|
|
|
|
|
|
2011-06-21 10:59:34 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2021-03-18 10:40:29 +00:00
|
|
|
|
2020-05-24 23:26:14 +08:00
|
|
|
|
2011-06-21 10:59:35 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
of/platform: Allow secondary compatible match in of_dev_lookup
We currently try to match of_dev_auxdata based on compatible,
IO address, and device name. But in some cases we have multiple
instances of drivers that can use the same auxdata.
Let's add an additional secondary lookup for generic compatible
match for auxdata if no device specific match is found. This does
not change the existing matching, and still allows adding device
specific auxdata.
This simplifies things as specifying the IO address and device
name is prone errors as it requires maintaining an in kernel
database for each SoC.
To specify a generic match, all that is needed is to add a
OF_DEV_AUXDATA entry with no device instance specified:
OF_DEV_AUXDATA("pinctrl-single", 0, NULL, &pcs_pdata),
As the auxdata is already initialized only for the booted SoC,
there's not much of a chance of getting things wrong.
Let's also fix two checkpatch warnings while at it to add a
space before parenthesis in the for loop, and remove a comparison
to NULL by using !auxdata->compatible.
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Tony Lindgren <tony@atomide.com>
2016-04-15 08:45:32 -07:00
|
|
|
|
2011-06-21 10:59:35 -06:00
|
|
|
|
of/platform: Allow secondary compatible match in of_dev_lookup
We currently try to match of_dev_auxdata based on compatible,
IO address, and device name. But in some cases we have multiple
instances of drivers that can use the same auxdata.
Let's add an additional secondary lookup for generic compatible
match for auxdata if no device specific match is found. This does
not change the existing matching, and still allows adding device
specific auxdata.
This simplifies things as specifying the IO address and device
name is prone errors as it requires maintaining an in kernel
database for each SoC.
To specify a generic match, all that is needed is to add a
OF_DEV_AUXDATA entry with no device instance specified:
OF_DEV_AUXDATA("pinctrl-single", 0, NULL, &pcs_pdata),
As the auxdata is already initialized only for the booted SoC,
there's not much of a chance of getting things wrong.
Let's also fix two checkpatch warnings while at it to add a
space before parenthesis in the for loop, and remove a comparison
to NULL by using !auxdata->compatible.
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Tony Lindgren <tony@atomide.com>
2016-04-15 08:45:32 -07:00
|
|
|
|
2011-11-02 22:07:29 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
of/platform: Allow secondary compatible match in of_dev_lookup
We currently try to match of_dev_auxdata based on compatible,
IO address, and device name. But in some cases we have multiple
instances of drivers that can use the same auxdata.
Let's add an additional secondary lookup for generic compatible
match for auxdata if no device specific match is found. This does
not change the existing matching, and still allows adding device
specific auxdata.
This simplifies things as specifying the IO address and device
name is prone errors as it requires maintaining an in kernel
database for each SoC.
To specify a generic match, all that is needed is to add a
OF_DEV_AUXDATA entry with no device instance specified:
OF_DEV_AUXDATA("pinctrl-single", 0, NULL, &pcs_pdata),
As the auxdata is already initialized only for the booted SoC,
there's not much of a chance of getting things wrong.
Let's also fix two checkpatch warnings while at it to add a
space before parenthesis in the for loop, and remove a comparison
to NULL by using !auxdata->compatible.
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Tony Lindgren <tony@atomide.com>
2016-04-15 08:45:32 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-11-02 22:07:29 -07:00
|
|
|
|
of/platform: Allow secondary compatible match in of_dev_lookup
We currently try to match of_dev_auxdata based on compatible,
IO address, and device name. But in some cases we have multiple
instances of drivers that can use the same auxdata.
Let's add an additional secondary lookup for generic compatible
match for auxdata if no device specific match is found. This does
not change the existing matching, and still allows adding device
specific auxdata.
This simplifies things as specifying the IO address and device
name is prone errors as it requires maintaining an in kernel
database for each SoC.
To specify a generic match, all that is needed is to add a
OF_DEV_AUXDATA entry with no device instance specified:
OF_DEV_AUXDATA("pinctrl-single", 0, NULL, &pcs_pdata),
As the auxdata is already initialized only for the booted SoC,
there's not much of a chance of getting things wrong.
Let's also fix two checkpatch warnings while at it to add a
space before parenthesis in the for loop, and remove a comparison
to NULL by using !auxdata->compatible.
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Tony Lindgren <tony@atomide.com>
2016-04-15 08:45:32 -07:00
|
|
|
|
2012-07-05 15:15:36 +01:00
|
|
|
|
of/platform: Allow secondary compatible match in of_dev_lookup
We currently try to match of_dev_auxdata based on compatible,
IO address, and device name. But in some cases we have multiple
instances of drivers that can use the same auxdata.
Let's add an additional secondary lookup for generic compatible
match for auxdata if no device specific match is found. This does
not change the existing matching, and still allows adding device
specific auxdata.
This simplifies things as specifying the IO address and device
name is prone errors as it requires maintaining an in kernel
database for each SoC.
To specify a generic match, all that is needed is to add a
OF_DEV_AUXDATA entry with no device instance specified:
OF_DEV_AUXDATA("pinctrl-single", 0, NULL, &pcs_pdata),
As the auxdata is already initialized only for the booted SoC,
there's not much of a chance of getting things wrong.
Let's also fix two checkpatch warnings while at it to add a
space before parenthesis in the for loop, and remove a comparison
to NULL by using !auxdata->compatible.
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Tony Lindgren <tony@atomide.com>
2016-04-15 08:45:32 -07:00
|
|
|
|
2012-07-05 15:15:36 +01:00
|
|
|
|
2017-06-01 15:50:55 -05:00
|
|
|
|
of/platform: Allow secondary compatible match in of_dev_lookup
We currently try to match of_dev_auxdata based on compatible,
IO address, and device name. But in some cases we have multiple
instances of drivers that can use the same auxdata.
Let's add an additional secondary lookup for generic compatible
match for auxdata if no device specific match is found. This does
not change the existing matching, and still allows adding device
specific auxdata.
This simplifies things as specifying the IO address and device
name is prone errors as it requires maintaining an in kernel
database for each SoC.
To specify a generic match, all that is needed is to add a
OF_DEV_AUXDATA entry with no device instance specified:
OF_DEV_AUXDATA("pinctrl-single", 0, NULL, &pcs_pdata),
As the auxdata is already initialized only for the booted SoC,
there's not much of a chance of getting things wrong.
Let's also fix two checkpatch warnings while at it to add a
space before parenthesis in the for loop, and remove a comparison
to NULL by using !auxdata->compatible.
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Tony Lindgren <tony@atomide.com>
2016-04-15 08:45:32 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2017-06-01 15:50:55 -05:00
|
|
|
|
of/platform: Allow secondary compatible match in of_dev_lookup
We currently try to match of_dev_auxdata based on compatible,
IO address, and device name. But in some cases we have multiple
instances of drivers that can use the same auxdata.
Let's add an additional secondary lookup for generic compatible
match for auxdata if no device specific match is found. This does
not change the existing matching, and still allows adding device
specific auxdata.
This simplifies things as specifying the IO address and device
name is prone errors as it requires maintaining an in kernel
database for each SoC.
To specify a generic match, all that is needed is to add a
OF_DEV_AUXDATA entry with no device instance specified:
OF_DEV_AUXDATA("pinctrl-single", 0, NULL, &pcs_pdata),
As the auxdata is already initialized only for the booted SoC,
there's not much of a chance of getting things wrong.
Let's also fix two checkpatch warnings while at it to add a
space before parenthesis in the for loop, and remove a comparison
to NULL by using !auxdata->compatible.
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Tony Lindgren <tony@atomide.com>
2016-04-15 08:45:32 -07:00
|
|
|
|
|
|
|
|
|
2011-06-21 10:59:35 -06:00
|
|
|
|
2011-11-02 22:07:29 -07:00
|
|
|
|
2011-06-21 10:59:35 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-06-08 07:48:13 -06:00
|
|
|
|
2011-03-18 10:21:28 -06:00
|
|
|
|
2010-06-08 07:48:13 -06:00
|
|
|
|
2011-03-18 10:21:29 -06:00
|
|
|
|
2011-11-02 22:07:29 -07:00
|
|
|
|
2011-03-18 10:21:28 -06:00
|
|
|
|
2011-11-02 22:07:29 -07:00
|
|
|
|
2011-03-18 10:21:28 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-06-08 07:48:13 -06:00
|
|
|
|
2011-03-18 10:21:28 -06:00
|
|
|
|
2010-06-08 07:48:13 -06:00
|
|
|
|
2011-06-21 10:59:35 -06:00
|
|
|
|
2011-06-21 10:59:34 -06:00
|
|
|
|
2010-06-08 07:48:13 -06:00
|
|
|
|
2011-06-21 10:59:35 -06:00
|
|
|
|
2010-07-22 13:59:23 -06:00
|
|
|
|
2011-06-21 10:59:35 -06:00
|
|
|
|
|
|
|
|
|
2010-06-08 07:48:13 -06:00
|
|
|
|
|
|
|
|
|
2011-06-21 10:59:34 -06:00
|
|
|
|
|
|
|
|
|
2017-06-01 15:50:55 -05:00
|
|
|
|
|
|
|
|
|
2011-06-21 10:59:34 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2018-04-17 11:57:34 +05:30
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-06-01 14:52:54 +08:00
|
|
|
|
2017-06-01 15:50:55 -05:00
|
|
|
|
|
|
|
|
|
2016-06-01 14:52:54 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-06-21 10:59:35 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-06-21 10:59:34 -06:00
|
|
|
|
2013-08-30 13:17:29 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-06-21 10:59:35 -06:00
|
|
|
|
2011-06-21 10:59:34 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-06-21 10:59:35 -06:00
|
|
|
|
2011-03-18 10:21:28 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-08-26 14:24:07 +08:00
|
|
|
|
2017-06-01 15:50:55 -05:00
|
|
|
|
2011-06-21 10:59:35 -06:00
|
|
|
|
2024-08-26 14:24:07 +08:00
|
|
|
|
2010-06-08 07:48:13 -06:00
|
|
|
|
|
|
|
|
|
2014-06-24 16:13:47 +01:00
|
|
|
|
2010-06-08 07:48:13 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-03-18 10:21:28 -06:00
|
|
|
|
2010-06-08 07:48:13 -06:00
|
|
|
|
2011-03-18 10:21:29 -06:00
|
|
|
|
2010-06-08 07:48:13 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-03-18 10:21:29 -06:00
|
|
|
|
|
|
|
|
|
2010-06-08 07:48:25 -06:00
|
|
|
|
2010-06-08 07:48:13 -06:00
|
|
|
|
2016-06-01 14:52:54 +08:00
|
|
|
|
2017-06-01 15:50:55 -05:00
|
|
|
|
2010-06-08 07:48:13 -06:00
|
|
|
|
2011-03-18 10:21:29 -06:00
|
|
|
|
2010-06-08 07:48:13 -06:00
|
|
|
|
2011-06-21 10:59:35 -06:00
|
|
|
|
2011-03-18 10:21:28 -06:00
|
|
|
|
2010-06-08 07:48:13 -06:00
|
|
|
|
|
|
|
|
|
2011-06-21 10:59:35 -06:00
|
|
|
|
2015-10-22 11:02:49 +02:00
|
|
|
|
|
|
|
|
|
2010-06-08 07:48:13 -06:00
|
|
|
|
2015-10-22 11:02:49 +02:00
|
|
|
|
2010-06-08 07:48:13 -06:00
|
|
|
|
2011-03-18 10:21:28 -06:00
|
|
|
|
2010-06-08 07:48:13 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-06-21 10:59:34 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-11-23 16:25:08 +00:00
|
|
|
|
2011-06-21 10:59:34 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2021-03-25 10:47:12 -06:00
|
|
|
|
2011-06-21 10:59:34 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-06-21 10:59:35 -06:00
|
|
|
|
2011-06-21 10:59:34 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-06-01 14:52:54 +08:00
|
|
|
|
2017-06-01 15:50:55 -05:00
|
|
|
|
2016-06-01 14:52:54 +08:00
|
|
|
|
2019-09-04 14:11:24 -07:00
|
|
|
|
2024-08-26 14:24:07 +08:00
|
|
|
|
2011-06-21 10:59:35 -06:00
|
|
|
|
2024-08-26 14:24:07 +08:00
|
|
|
|
2011-06-21 10:59:34 -06:00
|
|
|
|
|
|
|
|
|
2019-09-04 14:11:24 -07:00
|
|
|
|
|
|
|
|
|
2014-11-19 22:35:39 +00:00
|
|
|
|
2011-06-21 10:59:34 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-06-07 17:57:36 -06:00
|
|
|
|
2014-05-15 16:55:24 +01:00
|
|
|
|
2015-08-02 19:44:43 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-12-04 11:48:05 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-08-02 19:44:43 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2017-10-10 22:08:53 -07:00
|
|
|
|
2022-04-12 15:53:01 +02:00
|
|
|
|
2017-10-16 13:17:08 -05:00
|
|
|
|
2018-04-10 11:57:23 -06:00
|
|
|
|
2021-09-30 11:21:10 -07:00
|
|
|
|
2017-10-10 22:08:53 -07:00
|
|
|
|
2021-01-29 17:14:29 +00:00
|
|
|
|
2022-01-26 23:12:37 +00:00
|
|
|
|
2017-10-10 22:08:53 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-06-01 14:52:54 +08:00
|
|
|
|
|
|
|
|
|
2016-07-29 18:11:32 -07:00
|
|
|
|
|
|
|
|
|
2019-12-09 11:31:19 -08:00
|
|
|
|
|
|
|
|
|
2022-04-19 12:04:04 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-02-01 10:22:47 -06:00
|
|
|
|
2022-04-19 12:04:04 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-02-09 17:20:43 -06:00
|
|
|
|
2022-04-19 12:04:04 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-07-29 18:11:32 -07:00
|
|
|
|
2022-04-19 12:04:04 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-07-10 11:40:07 -06:00
|
|
|
|
2023-02-01 10:22:47 -06:00
|
|
|
|
2022-04-19 12:04:04 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-02-01 10:22:47 -06:00
|
|
|
|
2022-04-19 12:04:04 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-02-01 10:22:47 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2022-04-19 12:04:04 +02:00
|
|
|
|
|
|
|
|
|
2023-02-01 10:22:47 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2022-04-19 12:04:04 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2017-09-28 11:45:59 +01:00
|
|
|
|
2022-04-19 12:04:04 +02:00
|
|
|
|
of/platform: Disable sysfb if a simple-framebuffer node is found
Some DT platforms use EFI to boot and in this case the EFI Boot Services
may register a EFI_GRAPHICS_OUTPUT_PROTOCOL handle, that will later be
queried by the Linux EFI stub to fill the global struct screen_info data.
The data is used by the Generic System Framebuffers (sysfb) framework to
add a platform device with platform data about the system framebuffer.
But if there is a "simple-framebuffer" node in the DT, the OF core will
also do the same and add another device for the system framebuffer.
This could lead for example, to two platform devices ("simple-framebuffer"
and "efi-framebuffer") to be added and matched with their corresponding
drivers. So both efifb and simpledrm will be probed, leading to following:
[ 0.055752] efifb: framebuffer at 0xbd58dc000, using 16000k, total 16000k
[ 0.055755] efifb: mode is 2560x1600x32, linelength=10240, pages=1
[ 0.055758] efifb: scrolling: redraw
[ 0.055759] efifb: Truecolor: size=2:10:10:10, shift=30:20:10:0
...
[ 3.295896] simple-framebuffer bd58dc000.framebuffer: [drm] *ERROR*
could not acquire memory range [??? 0xffff79f30a29ee40-0x2a5000001a7
flags 0x0]: -16
[ 3.298018] simple-framebuffer: probe of bd58dc000.framebuffer
failed with error -16
To prevent the issue, make the OF core to disable sysfb if there is a node
with a "simple-framebuffer" compatible. That way only this device will be
registered and sysfb would not attempt to register another one using the
screen_info data even if this has been filled.
This seems the correct thing to do in this case because:
a) On a DT platform, the DTB is the single source of truth since is what
describes the hardware topology. Even if EFI Boot Services are used to
boot the machine.
b) The of_platform_default_populate_init() function is called in the
arch_initcall_sync() initcall level while the sysfb_init() function
is called later in the subsys_initcall() initcall level.
Reported-by: Andrew Worsley <amworsley@gmail.com>
Closes: https://lore.kernel.org/all/20231111042926.52990-2-amworsley@gmail.com
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Link: https://lore.kernel.org/r/20231113085305.1823455-1-javierm@redhat.com
Signed-off-by: Rob Herring <robh@kernel.org>
2023-11-13 09:51:41 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-08-21 15:11:35 -04:00
|
|
|
|
of/platform: Disable sysfb if a simple-framebuffer node is found
Some DT platforms use EFI to boot and in this case the EFI Boot Services
may register a EFI_GRAPHICS_OUTPUT_PROTOCOL handle, that will later be
queried by the Linux EFI stub to fill the global struct screen_info data.
The data is used by the Generic System Framebuffers (sysfb) framework to
add a platform device with platform data about the system framebuffer.
But if there is a "simple-framebuffer" node in the DT, the OF core will
also do the same and add another device for the system framebuffer.
This could lead for example, to two platform devices ("simple-framebuffer"
and "efi-framebuffer") to be added and matched with their corresponding
drivers. So both efifb and simpledrm will be probed, leading to following:
[ 0.055752] efifb: framebuffer at 0xbd58dc000, using 16000k, total 16000k
[ 0.055755] efifb: mode is 2560x1600x32, linelength=10240, pages=1
[ 0.055758] efifb: scrolling: redraw
[ 0.055759] efifb: Truecolor: size=2:10:10:10, shift=30:20:10:0
...
[ 3.295896] simple-framebuffer bd58dc000.framebuffer: [drm] *ERROR*
could not acquire memory range [??? 0xffff79f30a29ee40-0x2a5000001a7
flags 0x0]: -16
[ 3.298018] simple-framebuffer: probe of bd58dc000.framebuffer
failed with error -16
To prevent the issue, make the OF core to disable sysfb if there is a node
with a "simple-framebuffer" compatible. That way only this device will be
registered and sysfb would not attempt to register another one using the
screen_info data even if this has been filled.
This seems the correct thing to do in this case because:
a) On a DT platform, the DTB is the single source of truth since is what
describes the hardware topology. Even if EFI Boot Services are used to
boot the machine.
b) The of_platform_default_populate_init() function is called in the
arch_initcall_sync() initcall level while the sysfb_init() function
is called later in the subsys_initcall() initcall level.
Reported-by: Andrew Worsley <amworsley@gmail.com>
Closes: https://lore.kernel.org/all/20231111042926.52990-2-amworsley@gmail.com
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Link: https://lore.kernel.org/r/20231113085305.1823455-1-javierm@redhat.com
Signed-off-by: Rob Herring <robh@kernel.org>
2023-11-13 09:51:41 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2021-12-12 15:24:05 +09:00
|
|
|
|
2022-04-19 12:04:04 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-06-01 14:52:54 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2019-09-04 14:11:24 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2019-12-09 11:31:19 -08:00
|
|
|
|
2019-09-04 14:11:24 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-06-01 14:52:54 +08:00
|
|
|
|
2017-05-22 13:09:20 +02:00
|
|
|
|
2014-05-15 16:55:24 +01:00
|
|
|
|
|
|
|
|
|
2014-06-24 16:13:47 +01:00
|
|
|
|
2014-05-15 16:55:24 +01:00
|
|
|
|
|
|
|
|
|
2014-06-24 16:13:47 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-05-15 16:55:24 +01:00
|
|
|
|
2018-06-04 15:14:08 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-05-15 16:55:24 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2017-05-22 13:09:20 +02:00
|
|
|
|
2014-05-15 16:55:24 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-06-24 16:13:47 +01:00
|
|
|
|
2014-05-15 16:55:24 +01:00
|
|
|
|
|
|
|
|
|
2023-11-17 18:16:28 +01:00
|
|
|
|
2014-05-15 16:55:24 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-06-24 16:13:47 +01:00
|
|
|
|
2014-05-15 16:55:24 +01:00
|
|
|
|
2014-11-19 22:35:39 +00:00
|
|
|
|
2020-08-06 17:36:50 +02:00
|
|
|
|
2014-11-19 22:35:39 +00:00
|
|
|
|
|
|
|
|
|
2014-05-15 16:55:24 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2017-02-24 17:14:33 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2021-03-25 10:47:12 -06:00
|
|
|
|
2017-02-24 17:14:33 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-11-17 18:16:28 +01:00
|
|
|
|
2017-02-24 17:14:33 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-10-28 22:36:01 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-07-18 14:05:00 -07:00
|
|
|
|
2014-10-28 22:36:01 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-07-18 14:05:00 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-10-28 22:36:01 +02:00
|
|
|
|
|
|
|
|
|
2014-12-16 19:45:26 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-03-30 15:26:13 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-10-28 22:36:01 +02:00
|
|
|
|
2024-07-18 14:05:00 -07:00
|
|
|
|
2014-10-28 22:36:01 +02:00
|
|
|
|
|
|
|
|
|
2021-02-11 17:27:44 -06:00
|
|
|
|
2014-10-28 22:36:01 +02:00
|
|
|
|
|
|
|
|
|
2017-06-01 15:50:55 -05:00
|
|
|
|
|
|
|
|
|
2014-10-28 22:36:01 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-12-16 19:45:26 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-10-28 22:36:01 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2021-02-11 17:27:44 -06:00
|
|
|
|
2014-10-28 22:36:01 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-02-24 14:58:34 -07:00
|
|
|
|