diff mbox series

[master/scarthgap,1/4] conf/machine, ti-bsp: add support for multiple BSP providers

Message ID 20240613172254.770920-1-denis@denix.org
State Superseded
Delegated to: Ryan Eatmon
Headers show
Series [master/scarthgap,1/4] conf/machine, ti-bsp: add support for multiple BSP providers | expand

Commit Message

Denys Dmytriyenko June 13, 2024, 5:22 p.m. UTC
From: Denys Dmytriyenko <denys@konsulko.com>

This adds a facility to define multiple supported BSPs with their own
preferences for individual components, as well as lets machine configs
specify conditional configurations for different BSPs.

Signed-off-by: Denys Dmytriyenko <denys@konsulko.com>
---
 meta-ti-bsp/conf/machine/beagleplay-k3r5.conf |   3 -
 meta-ti-bsp/conf/machine/beagleplay.conf      |   5 +-
 meta-ti-bsp/conf/machine/include/am62pxx.inc  |   2 +-
 meta-ti-bsp/conf/machine/include/am62xx.inc   |   2 +-
 meta-ti-bsp/conf/machine/include/am65xx.inc   |   2 +-
 meta-ti-bsp/conf/machine/include/am68.inc     |   2 +-
 meta-ti-bsp/conf/machine/include/am69.inc     |   2 +-
 meta-ti-bsp/conf/machine/include/beagle.inc   |   4 +-
 meta-ti-bsp/conf/machine/include/j721e.inc    |   2 +-
 meta-ti-bsp/conf/machine/include/j721s2.inc   |   2 +-
 meta-ti-bsp/conf/machine/include/j722s.inc    |   2 +-
 meta-ti-bsp/conf/machine/include/j784s4.inc   |   2 +-
 meta-ti-bsp/conf/machine/include/k3.inc       |   4 +-
 meta-ti-bsp/conf/machine/include/k3r5.inc     |   4 +-
 meta-ti-bsp/conf/machine/include/omap-a15.inc |   6 +-
 meta-ti-bsp/conf/machine/include/omapl138.inc |   4 +-
 meta-ti-bsp/conf/machine/include/ti-bsp.inc   | 109 ++++++++++++++++++
 meta-ti-bsp/conf/machine/include/ti-soc.inc   |   3 +-
 meta-ti-bsp/conf/machine/include/ti33x.inc    |   7 +-
 meta-ti-bsp/conf/machine/include/ti43x.inc    |   7 +-
 20 files changed, 131 insertions(+), 43 deletions(-)
 create mode 100644 meta-ti-bsp/conf/machine/include/ti-bsp.inc

Comments

Ryan Eatmon June 13, 2024, 7:29 p.m. UTC | #1
On 6/13/2024 12:22 PM, Denys Dmytriyenko wrote:
> From: Denys Dmytriyenko <denys@konsulko.com>
> 
> This adds a facility to define multiple supported BSPs with their own
> preferences for individual components, as well as lets machine configs
> specify conditional configurations for different BSPs.
> 
> Signed-off-by: Denys Dmytriyenko <denys@konsulko.com>
> ---

<snip>

> +
> +# ==========
> +# ti-6_6
> +# TI staging kernel 6.6, u-boot 2024.04
> +# ==========
> +BSP_KERNEL_PROVIDER:bsp-ti-6_6 = "linux-ti-staging"
> +BSP_KERNEL_VERSION:bsp-ti-6_6 = "6.6%"
> +BSP_BOOTLOADER_PROVIDER:bsp-ti-6_6 = "u-boot-ti-staging"
> +BSP_BOOTLOADER_VERSION:bsp-ti-6_6 = "2024%"
> +
> +# Only Rogue is enabled so far, SGX falls back to SW rendering
> +BSP_ROGUE_DRIVER_PROVIDER:bsp-ti-6_6 = "ti-img-rogue-driver"
> +BSP_ROGUE_DRIVER_VERSION:bsp-ti-6_6 = "24%"
> +BSP_ROGUE_UMLIBS_VERSION:bsp-ti-6_6 = "24%"
> +BSP_MESA_PVR_VERSION:bsp-ti-6_6 = "23%"
> +
> +# ==========
> +# ti-6_1
> +# TI staging kernel 6.1, u-boot 2023.04
> +# ==========
> +BSP_KERNEL_PROVIDER:bsp-ti-6_1 = "linux-ti-staging"
> +BSP_KERNEL_VERSION:bsp-ti-6_1 = "6.1%"
> +BSP_BOOTLOADER_PROVIDER:bsp-ti-6_1 = "u-boot-ti-staging"
> +BSP_BOOTLOADER_VERSION:bsp-ti-6_1 = "2023%"
> +
> +BSP_SGX_DRIVER_PROVIDER:bsp-ti-6_1 = "ti-sgx-ddk-km"
> +BSP_SGX_DRIVER_VERSION:bsp-ti-6_1 = "1.17%"
> +BSP_SGX_UMLIBS_VERSION:bsp-ti-6_1 = "1.17%"
> +BSP_ROGUE_DRIVER_PROVIDER:bsp-ti-6_1 = "ti-img-rogue-driver"
> +BSP_ROGUE_DRIVER_VERSION:bsp-ti-6_1 = "23%"
> +BSP_ROGUE_UMLIBS_VERSION:bsp-ti-6_1 = "23%"
> +BSP_MESA_PVR_VERSION:bsp-ti-6_1 = "22%"

I wonder if I can use this same system to support the upstream 
testing...  After we accept this series I need to look at how the 
upstream testing flow can leverage this concept.
Denys Dmytriyenko June 13, 2024, 7:47 p.m. UTC | #2
On Thu, Jun 13, 2024 at 02:29:34PM -0500, Ryan Eatmon wrote:
> 
> 
> On 6/13/2024 12:22 PM, Denys Dmytriyenko wrote:
> >From: Denys Dmytriyenko <denys@konsulko.com>
> >
> >This adds a facility to define multiple supported BSPs with their own
> >preferences for individual components, as well as lets machine configs
> >specify conditional configurations for different BSPs.
> >
> >Signed-off-by: Denys Dmytriyenko <denys@konsulko.com>
> >---
> 
> <snip>
> 
> >+
> >+# ==========
> >+# ti-6_6
> >+# TI staging kernel 6.6, u-boot 2024.04
> >+# ==========
> >+BSP_KERNEL_PROVIDER:bsp-ti-6_6 = "linux-ti-staging"
> >+BSP_KERNEL_VERSION:bsp-ti-6_6 = "6.6%"
> >+BSP_BOOTLOADER_PROVIDER:bsp-ti-6_6 = "u-boot-ti-staging"
> >+BSP_BOOTLOADER_VERSION:bsp-ti-6_6 = "2024%"
> >+
> >+# Only Rogue is enabled so far, SGX falls back to SW rendering
> >+BSP_ROGUE_DRIVER_PROVIDER:bsp-ti-6_6 = "ti-img-rogue-driver"
> >+BSP_ROGUE_DRIVER_VERSION:bsp-ti-6_6 = "24%"
> >+BSP_ROGUE_UMLIBS_VERSION:bsp-ti-6_6 = "24%"
> >+BSP_MESA_PVR_VERSION:bsp-ti-6_6 = "23%"
> >+
> >+# ==========
> >+# ti-6_1
> >+# TI staging kernel 6.1, u-boot 2023.04
> >+# ==========
> >+BSP_KERNEL_PROVIDER:bsp-ti-6_1 = "linux-ti-staging"
> >+BSP_KERNEL_VERSION:bsp-ti-6_1 = "6.1%"
> >+BSP_BOOTLOADER_PROVIDER:bsp-ti-6_1 = "u-boot-ti-staging"
> >+BSP_BOOTLOADER_VERSION:bsp-ti-6_1 = "2023%"
> >+
> >+BSP_SGX_DRIVER_PROVIDER:bsp-ti-6_1 = "ti-sgx-ddk-km"
> >+BSP_SGX_DRIVER_VERSION:bsp-ti-6_1 = "1.17%"
> >+BSP_SGX_UMLIBS_VERSION:bsp-ti-6_1 = "1.17%"
> >+BSP_ROGUE_DRIVER_PROVIDER:bsp-ti-6_1 = "ti-img-rogue-driver"
> >+BSP_ROGUE_DRIVER_VERSION:bsp-ti-6_1 = "23%"
> >+BSP_ROGUE_UMLIBS_VERSION:bsp-ti-6_1 = "23%"
> >+BSP_MESA_PVR_VERSION:bsp-ti-6_1 = "22%"
> 
> I wonder if I can use this same system to support the upstream
> testing...  After we accept this series I need to look at how the
> upstream testing flow can leverage this concept.

That's the mainline setup...
Ryan Eatmon June 13, 2024, 9:09 p.m. UTC | #3
On 6/13/2024 2:47 PM, Denys Dmytriyenko wrote:
> On Thu, Jun 13, 2024 at 02:29:34PM -0500, Ryan Eatmon wrote:
>>
>>
>> On 6/13/2024 12:22 PM, Denys Dmytriyenko wrote:
>>> From: Denys Dmytriyenko <denys@konsulko.com>
>>>
>>> This adds a facility to define multiple supported BSPs with their own
>>> preferences for individual components, as well as lets machine configs
>>> specify conditional configurations for different BSPs.
>>>
>>> Signed-off-by: Denys Dmytriyenko <denys@konsulko.com>
>>> ---
>>
>> <snip>
>>
>>> +
>>> +# ==========
>>> +# ti-6_6
>>> +# TI staging kernel 6.6, u-boot 2024.04
>>> +# ==========
>>> +BSP_KERNEL_PROVIDER:bsp-ti-6_6 = "linux-ti-staging"
>>> +BSP_KERNEL_VERSION:bsp-ti-6_6 = "6.6%"
>>> +BSP_BOOTLOADER_PROVIDER:bsp-ti-6_6 = "u-boot-ti-staging"
>>> +BSP_BOOTLOADER_VERSION:bsp-ti-6_6 = "2024%"
>>> +
>>> +# Only Rogue is enabled so far, SGX falls back to SW rendering
>>> +BSP_ROGUE_DRIVER_PROVIDER:bsp-ti-6_6 = "ti-img-rogue-driver"
>>> +BSP_ROGUE_DRIVER_VERSION:bsp-ti-6_6 = "24%"
>>> +BSP_ROGUE_UMLIBS_VERSION:bsp-ti-6_6 = "24%"
>>> +BSP_MESA_PVR_VERSION:bsp-ti-6_6 = "23%"
>>> +
>>> +# ==========
>>> +# ti-6_1
>>> +# TI staging kernel 6.1, u-boot 2023.04
>>> +# ==========
>>> +BSP_KERNEL_PROVIDER:bsp-ti-6_1 = "linux-ti-staging"
>>> +BSP_KERNEL_VERSION:bsp-ti-6_1 = "6.1%"
>>> +BSP_BOOTLOADER_PROVIDER:bsp-ti-6_1 = "u-boot-ti-staging"
>>> +BSP_BOOTLOADER_VERSION:bsp-ti-6_1 = "2023%"
>>> +
>>> +BSP_SGX_DRIVER_PROVIDER:bsp-ti-6_1 = "ti-sgx-ddk-km"
>>> +BSP_SGX_DRIVER_VERSION:bsp-ti-6_1 = "1.17%"
>>> +BSP_SGX_UMLIBS_VERSION:bsp-ti-6_1 = "1.17%"
>>> +BSP_ROGUE_DRIVER_PROVIDER:bsp-ti-6_1 = "ti-img-rogue-driver"
>>> +BSP_ROGUE_DRIVER_VERSION:bsp-ti-6_1 = "23%"
>>> +BSP_ROGUE_UMLIBS_VERSION:bsp-ti-6_1 = "23%"
>>> +BSP_MESA_PVR_VERSION:bsp-ti-6_1 = "22%"
>>
>> I wonder if I can use this same system to support the upstream
>> testing...  After we accept this series I need to look at how the
>> upstream testing flow can leverage this concept.
> 
> That's the mainline setup...

For the kernel we use linux-ti-next not mainline.
Ryan Eatmon June 13, 2024, 9:18 p.m. UTC | #4
On 6/13/2024 12:22 PM, Denys Dmytriyenko wrote:
> From: Denys Dmytriyenko <denys@konsulko.com>
> 
> This adds a facility to define multiple supported BSPs with their own
> preferences for individual components, as well as lets machine configs
> specify conditional configurations for different BSPs.
> 
> Signed-off-by: Denys Dmytriyenko <denys@konsulko.com>



> diff --git a/meta-ti-bsp/conf/machine/include/ti-bsp.inc b/meta-ti-bsp/conf/machine/include/ti-bsp.inc
> new file mode 100644
> index 00000000..3bb94a7f
> --- /dev/null
> +++ b/meta-ti-bsp/conf/machine/include/ti-bsp.inc
> @@ -0,0 +1,109 @@
> +# Support multiple BSP providers
> +# The main input is TI_DEFAULT_BSP, which translates into default
> +# preferences for kernel, bootloader and graphics components, as
> +# well as a dedicated machine override.
> +
> +# Supported options are: mainline, ti-6_6, ti-6_1, bb_org
> +TI_DEFAULT_BSP ??= "ti-6_6"

Should this variable be named TI_DEFAULT_BSP?  That implies that this is 
the value of the default for this feature.  But in reality this variable 
is what chooses the TI BSP version.  Should it be something like 
TI_BSP_VERSION instead?
Chirag Shilwant June 14, 2024, 6:27 a.m. UTC | #5
Hi,

On 14/06/24 02:48, Ryan Eatmon via lists.yoctoproject.org wrote:
> On 6/13/2024 12: 22 PM, Denys Dmytriyenko wrote: > From: Denys 
> Dmytriyenko <denys@ konsulko. com> > > This adds a facility to define 
> multiple supported BSPs with their own > preferences for individual 
> components, as well as lets
> ZjQcmQRYFpfptBannerStart
> This message was sent from outside of Texas Instruments.
> Do not click links or open attachments unless you recognize the source 
> of this email and know the content is safe. If you wish to report this 
> message to IT Security, please forward the message as an attachment to 
> phishing@list.ti.com
> ZjQcmQRYFpfptBannerEnd
> On 6/13/2024 12:22 PM, Denys Dmytriyenko wrote:
> > From: Denys Dmytriyenko <denys@konsulko.com>
> > 
> > This adds a facility to define multiple supported BSPs with their own
> > preferences for individual components, as well as lets machine configs
> > specify conditional configurations for different BSPs.
> > 
> > Signed-off-by: Denys Dmytriyenko <denys@konsulko.com>
>
>
>
> > diff --git a/meta-ti-bsp/conf/machine/include/ti-bsp.inc b/meta-ti-bsp/conf/machine/include/ti-bsp.inc
> > new file mode 100644
> > index 00000000..3bb94a7f
> > --- /dev/null
> > +++ b/meta-ti-bsp/conf/machine/include/ti-bsp.inc
> > @@ -0,0 +1,109 @@
> > +# Support multiple BSP providers
> > +# The main input is TI_DEFAULT_BSP, which translates into default
> > +# preferences for kernel, bootloader and graphics components, as
> > +# well as a dedicated machine override.
> > +
> > +# Supported options are: mainline, ti-6_6, ti-6_1, bb_org
> > +TI_DEFAULT_BSP ??= "ti-6_6"
>
> Should this variable be named TI_DEFAULT_BSP?  That implies that this is
> the value of the default for this feature.  But in reality this variable
> is what chooses the TI BSP version.  Should it be something like
> TI_BSP_VERSION instead?



Yeah, I agree with Ryan. TI_BSP_VERSION or evenTI_DEFAULT_BSP_VERSION 
sounds more appropriate.

Regards,
Chirag



>
>
>
> -- 
> Ryan Eatmon                reatmon@ti.com
> -----------------------------------------
> Texas Instruments, Inc.  -  LCPD  -  MGTS
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#17726): https://urldefense.com/v3/__https://lists.yoctoproject.org/g/meta-ti/message/17726__;!!G3vK!U20F4gdpOgKdlGIbMEeQpRYgCKi78PnQ6YHMrbGMH1hlJTtzu_lGfmzbJo65qk3jLSUv9WYdTMcNDNNnyKMh2-VE1HTlFHCXiw$
> Mute This Topic: https://urldefense.com/v3/__https://lists.yoctoproject.org/mt/106655975/7030289__;!!G3vK!U20F4gdpOgKdlGIbMEeQpRYgCKi78PnQ6YHMrbGMH1hlJTtzu_lGfmzbJo65qk3jLSUv9WYdTMcNDNNnyKMh2-VE1HQhq36_xA$
> Group Owner: meta-ti+owner@lists.yoctoproject.org
> Unsubscribe: https://urldefense.com/v3/__https://lists.yoctoproject.org/g/meta-ti/unsub__;!!G3vK!U20F4gdpOgKdlGIbMEeQpRYgCKi78PnQ6YHMrbGMH1hlJTtzu_lGfmzbJo65qk3jLSUv9WYdTMcNDNNnyKMh2-VE1HSRPq9VLw$  [c-shilwant@ti.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Denys Dmytriyenko June 14, 2024, 4:34 p.m. UTC | #6
On Thu, Jun 13, 2024 at 04:18:16PM -0500, Ryan Eatmon wrote:
> 
> 
> On 6/13/2024 12:22 PM, Denys Dmytriyenko wrote:
> >From: Denys Dmytriyenko <denys@konsulko.com>
> >
> >This adds a facility to define multiple supported BSPs with their own
> >preferences for individual components, as well as lets machine configs
> >specify conditional configurations for different BSPs.
> >
> >Signed-off-by: Denys Dmytriyenko <denys@konsulko.com>
> 
> 
> 
> >diff --git a/meta-ti-bsp/conf/machine/include/ti-bsp.inc b/meta-ti-bsp/conf/machine/include/ti-bsp.inc
> >new file mode 100644
> >index 00000000..3bb94a7f
> >--- /dev/null
> >+++ b/meta-ti-bsp/conf/machine/include/ti-bsp.inc
> >@@ -0,0 +1,109 @@
> >+# Support multiple BSP providers
> >+# The main input is TI_DEFAULT_BSP, which translates into default
> >+# preferences for kernel, bootloader and graphics components, as
> >+# well as a dedicated machine override.
> >+
> >+# Supported options are: mainline, ti-6_6, ti-6_1, bb_org
> >+TI_DEFAULT_BSP ??= "ti-6_6"
> 
> Should this variable be named TI_DEFAULT_BSP?  That implies that
> this is the value of the default for this feature.  But in reality
> this variable is what chooses the TI BSP version.  Should it be
> something like TI_BSP_VERSION instead?

It's not just the version, it's entire BSP stack. E.g. "mainline" vs. "bb_org"
Initially I started with only 2 options - "ti" vs. "bb_org", but eventually 
expanded it to support "mainline" and in case of "ti" also different LTS 
versions - "ti-6_1" and "ti-6_6"... Hence the original name stayed. And not 
sure how long both LTS versions will be supported in meta-ti...

Anyway, I'm fine changing it to something else, but I thing calling it 
"version" will be more confusing.
Denys Dmytriyenko June 14, 2024, 5:20 p.m. UTC | #7
On Thu, Jun 13, 2024 at 04:09:46PM -0500, Ryan Eatmon wrote:
> 
> 
> On 6/13/2024 2:47 PM, Denys Dmytriyenko wrote:
> >On Thu, Jun 13, 2024 at 02:29:34PM -0500, Ryan Eatmon wrote:
> >>
> >>
> >>On 6/13/2024 12:22 PM, Denys Dmytriyenko wrote:
> >>>From: Denys Dmytriyenko <denys@konsulko.com>
> >>>
> >>>This adds a facility to define multiple supported BSPs with their own
> >>>preferences for individual components, as well as lets machine configs
> >>>specify conditional configurations for different BSPs.
> >>>
> >>>Signed-off-by: Denys Dmytriyenko <denys@konsulko.com>
> >>>---
> >>
> >><snip>
> >>
> >>>+
> >>>+# ==========
> >>>+# ti-6_6
> >>>+# TI staging kernel 6.6, u-boot 2024.04
> >>>+# ==========
> >>>+BSP_KERNEL_PROVIDER:bsp-ti-6_6 = "linux-ti-staging"
> >>>+BSP_KERNEL_VERSION:bsp-ti-6_6 = "6.6%"
> >>>+BSP_BOOTLOADER_PROVIDER:bsp-ti-6_6 = "u-boot-ti-staging"
> >>>+BSP_BOOTLOADER_VERSION:bsp-ti-6_6 = "2024%"
> >>>+
> >>>+# Only Rogue is enabled so far, SGX falls back to SW rendering
> >>>+BSP_ROGUE_DRIVER_PROVIDER:bsp-ti-6_6 = "ti-img-rogue-driver"
> >>>+BSP_ROGUE_DRIVER_VERSION:bsp-ti-6_6 = "24%"
> >>>+BSP_ROGUE_UMLIBS_VERSION:bsp-ti-6_6 = "24%"
> >>>+BSP_MESA_PVR_VERSION:bsp-ti-6_6 = "23%"
> >>>+
> >>>+# ==========
> >>>+# ti-6_1
> >>>+# TI staging kernel 6.1, u-boot 2023.04
> >>>+# ==========
> >>>+BSP_KERNEL_PROVIDER:bsp-ti-6_1 = "linux-ti-staging"
> >>>+BSP_KERNEL_VERSION:bsp-ti-6_1 = "6.1%"
> >>>+BSP_BOOTLOADER_PROVIDER:bsp-ti-6_1 = "u-boot-ti-staging"
> >>>+BSP_BOOTLOADER_VERSION:bsp-ti-6_1 = "2023%"
> >>>+
> >>>+BSP_SGX_DRIVER_PROVIDER:bsp-ti-6_1 = "ti-sgx-ddk-km"
> >>>+BSP_SGX_DRIVER_VERSION:bsp-ti-6_1 = "1.17%"
> >>>+BSP_SGX_UMLIBS_VERSION:bsp-ti-6_1 = "1.17%"
> >>>+BSP_ROGUE_DRIVER_PROVIDER:bsp-ti-6_1 = "ti-img-rogue-driver"
> >>>+BSP_ROGUE_DRIVER_VERSION:bsp-ti-6_1 = "23%"
> >>>+BSP_ROGUE_UMLIBS_VERSION:bsp-ti-6_1 = "23%"
> >>>+BSP_MESA_PVR_VERSION:bsp-ti-6_1 = "22%"
> >>
> >>I wonder if I can use this same system to support the upstream
> >>testing...  After we accept this series I need to look at how the
> >>upstream testing flow can leverage this concept.
> >
> >That's the mainline setup...
> 
> For the kernel we use linux-ti-next not mainline.

Right, linux-next tree vs. torvalds one. I considered supporting both in 
ti-bsp.inc, but thought that mainline pulling torvalds tree would be more 
useful for 99% of meta-ti users, than pulling ever-changing linux-next.

Other than the kernel tree, the rest is exactly the same as bsp-mainline, 
and it is still possible to overwrite PREFERRED_PROVIDER on top:
https://git.yoctoproject.org/meta-arago/tree/meta-arago-distro/conf/distro/include/branding-next.inc?h=scarthgap-wip

Even w/o meta-arago, all it takes is 2 lines:
TI_DEFAULT_BSP = "mainline"
PREFERRED_PROVIDER_virtual/kernel = "linux-ti-next"

BTW, linux-ti-next and linux-ti-mainline recipes originally were quite 
different, but over time became very similar. I'm thinking these can be 
cleaned up and unified - either one includes another and adjusts SRC_URI, 
or potentially even a single recipe with a switch...
Denys Dmytriyenko June 14, 2024, 6:55 p.m. UTC | #8
On Fri, Jun 14, 2024 at 12:34:23PM -0400, Denys Dmytriyenko wrote:
> On Thu, Jun 13, 2024 at 04:18:16PM -0500, Ryan Eatmon wrote:
> > 
> > 
> > On 6/13/2024 12:22 PM, Denys Dmytriyenko wrote:
> > >From: Denys Dmytriyenko <denys@konsulko.com>
> > >
> > >This adds a facility to define multiple supported BSPs with their own
> > >preferences for individual components, as well as lets machine configs
> > >specify conditional configurations for different BSPs.
> > >
> > >Signed-off-by: Denys Dmytriyenko <denys@konsulko.com>
> > 
> > 
> > 
> > >diff --git a/meta-ti-bsp/conf/machine/include/ti-bsp.inc b/meta-ti-bsp/conf/machine/include/ti-bsp.inc
> > >new file mode 100644
> > >index 00000000..3bb94a7f
> > >--- /dev/null
> > >+++ b/meta-ti-bsp/conf/machine/include/ti-bsp.inc
> > >@@ -0,0 +1,109 @@
> > >+# Support multiple BSP providers
> > >+# The main input is TI_DEFAULT_BSP, which translates into default
> > >+# preferences for kernel, bootloader and graphics components, as
> > >+# well as a dedicated machine override.
> > >+
> > >+# Supported options are: mainline, ti-6_6, ti-6_1, bb_org
> > >+TI_DEFAULT_BSP ??= "ti-6_6"
> > 
> > Should this variable be named TI_DEFAULT_BSP?  That implies that
> > this is the value of the default for this feature.  But in reality
> > this variable is what chooses the TI BSP version.  Should it be
> > something like TI_BSP_VERSION instead?
> 
> It's not just the version, it's entire BSP stack. E.g. "mainline" vs. "bb_org"
> Initially I started with only 2 options - "ti" vs. "bb_org", but eventually 
> expanded it to support "mainline" and in case of "ti" also different LTS 
> versions - "ti-6_1" and "ti-6_6"... Hence the original name stayed. And not 
> sure how long both LTS versions will be supported in meta-ti...
> 
> Anyway, I'm fine changing it to something else, but I thing calling it 
> "version" will be more confusing.

How about TI_PREFERRED_BSP or something along those lines?
Ryan Eatmon June 14, 2024, 7:29 p.m. UTC | #9
On 6/14/2024 1:55 PM, Denys Dmytriyenko wrote:
> On Fri, Jun 14, 2024 at 12:34:23PM -0400, Denys Dmytriyenko wrote:
>> On Thu, Jun 13, 2024 at 04:18:16PM -0500, Ryan Eatmon wrote:
>>>
>>>
>>> On 6/13/2024 12:22 PM, Denys Dmytriyenko wrote:
>>>> From: Denys Dmytriyenko <denys@konsulko.com>
>>>>
>>>> This adds a facility to define multiple supported BSPs with their own
>>>> preferences for individual components, as well as lets machine configs
>>>> specify conditional configurations for different BSPs.
>>>>
>>>> Signed-off-by: Denys Dmytriyenko <denys@konsulko.com>
>>>
>>>
>>>
>>>> diff --git a/meta-ti-bsp/conf/machine/include/ti-bsp.inc b/meta-ti-bsp/conf/machine/include/ti-bsp.inc
>>>> new file mode 100644
>>>> index 00000000..3bb94a7f
>>>> --- /dev/null
>>>> +++ b/meta-ti-bsp/conf/machine/include/ti-bsp.inc
>>>> @@ -0,0 +1,109 @@
>>>> +# Support multiple BSP providers
>>>> +# The main input is TI_DEFAULT_BSP, which translates into default
>>>> +# preferences for kernel, bootloader and graphics components, as
>>>> +# well as a dedicated machine override.
>>>> +
>>>> +# Supported options are: mainline, ti-6_6, ti-6_1, bb_org
>>>> +TI_DEFAULT_BSP ??= "ti-6_6"
>>>
>>> Should this variable be named TI_DEFAULT_BSP?  That implies that
>>> this is the value of the default for this feature.  But in reality
>>> this variable is what chooses the TI BSP version.  Should it be
>>> something like TI_BSP_VERSION instead?
>>
>> It's not just the version, it's entire BSP stack. E.g. "mainline" vs. "bb_org"
>> Initially I started with only 2 options - "ti" vs. "bb_org", but eventually
>> expanded it to support "mainline" and in case of "ti" also different LTS
>> versions - "ti-6_1" and "ti-6_6"... Hence the original name stayed. And not
>> sure how long both LTS versions will be supported in meta-ti...
>>
>> Anyway, I'm fine changing it to something else, but I thing calling it
>> "version" will be more confusing.
> 
> How about TI_PREFERRED_BSP or something along those lines?

I like that.
diff mbox series

Patch

diff --git a/meta-ti-bsp/conf/machine/beagleplay-k3r5.conf b/meta-ti-bsp/conf/machine/beagleplay-k3r5.conf
index 601cbbf7..e38029ff 100644
--- a/meta-ti-bsp/conf/machine/beagleplay-k3r5.conf
+++ b/meta-ti-bsp/conf/machine/beagleplay-k3r5.conf
@@ -4,9 +4,6 @@ 
 
 require conf/machine/include/k3r5.inc
 
-PREFERRED_PROVIDER_virtual/bootloader = "u-boot-bb.org"
-PREFERRED_PROVIDER_u-boot = "u-boot-bb.org"
-
 SYSFW_SOC = "am62x"
 SYSFW_CONFIG = "evm"
 SYSFW_SUFFIX = "gp"
diff --git a/meta-ti-bsp/conf/machine/beagleplay.conf b/meta-ti-bsp/conf/machine/beagleplay.conf
index 02bc6566..a09c0d13 100644
--- a/meta-ti-bsp/conf/machine/beagleplay.conf
+++ b/meta-ti-bsp/conf/machine/beagleplay.conf
@@ -11,7 +11,7 @@  MACHINE_FEATURES += "screen gpu"
 SERIAL_CONSOLES = "115200;ttyS2"
 
 require conf/machine/include/mesa-pvr.inc
-PREFERRED_PROVIDER_virtual/gpudriver ?= "ti-img-rogue-driver"
+PREFERRED_PROVIDER_virtual/gpudriver ?= "${BSP_ROGUE_DRIVER_PROVIDER}"
 
 TFA_BOARD = "lite"
 TFA_K3_SYSTEM_SUSPEND = "1"
@@ -25,9 +25,6 @@  UBOOT_MACHINE = "am62x_evm_a53_defconfig"
 # under meta-ti-bsp/recipes-bsp/u-boot/ for more details.
 UBOOT_CONFIG_FRAGMENTS = "am625_beagleplay_a53.config"
 
-PREFERRED_PROVIDER_virtual/bootloader = "u-boot-bb.org"
-PREFERRED_PROVIDER_u-boot = "u-boot-bb.org"
-
 KERNEL_DEVICETREE_PREFIX = " \
     ti/k3-am625 \
     ti/k3-am62x-sk \
diff --git a/meta-ti-bsp/conf/machine/include/am62pxx.inc b/meta-ti-bsp/conf/machine/include/am62pxx.inc
index 38e35851..a2825905 100644
--- a/meta-ti-bsp/conf/machine/include/am62pxx.inc
+++ b/meta-ti-bsp/conf/machine/include/am62pxx.inc
@@ -4,7 +4,7 @@  SOC_FAMILY:append = ":am62pxx"
 MACHINE_FEATURES += "screen gpu"
 
 require conf/machine/include/mesa-pvr.inc
-PREFERRED_PROVIDER_virtual/gpudriver ?= "ti-img-rogue-driver"
+PREFERRED_PROVIDER_virtual/gpudriver ?= "${BSP_ROGUE_DRIVER_PROVIDER}"
 
 # Default tiboot3.bin on AM62Px is for HS-FS
 IMAGE_BOOT_FILES += "tiboot3-am62px-hs-fs-evm.bin"
diff --git a/meta-ti-bsp/conf/machine/include/am62xx.inc b/meta-ti-bsp/conf/machine/include/am62xx.inc
index a0ec944f..070a691b 100644
--- a/meta-ti-bsp/conf/machine/include/am62xx.inc
+++ b/meta-ti-bsp/conf/machine/include/am62xx.inc
@@ -4,7 +4,7 @@  SOC_FAMILY:append = ":am62xx"
 MACHINE_FEATURES += "screen gpu"
 
 require conf/machine/include/mesa-pvr.inc
-PREFERRED_PROVIDER_virtual/gpudriver ?= "ti-img-rogue-driver"
+PREFERRED_PROVIDER_virtual/gpudriver ?= "${BSP_ROGUE_DRIVER_PROVIDER}"
 
 # Default tiboot3.bin on AM62x is for HS-FS
 IMAGE_BOOT_FILES += "tiboot3-am62x-hs-fs-evm.bin"
diff --git a/meta-ti-bsp/conf/machine/include/am65xx.inc b/meta-ti-bsp/conf/machine/include/am65xx.inc
index 48b89638..e033c09b 100644
--- a/meta-ti-bsp/conf/machine/include/am65xx.inc
+++ b/meta-ti-bsp/conf/machine/include/am65xx.inc
@@ -4,7 +4,7 @@  SOC_FAMILY:append = ":am65xx"
 MACHINE_FEATURES += "screen touchscreen gpu"
 
 require conf/machine/include/mesa-pvr.inc
-PREFERRED_PROVIDER_virtual/gpudriver ?= ""
+PREFERRED_PROVIDER_virtual/gpudriver ?= "${BSP_SGX_DRIVER_PROVIDER}"
 
 KERNEL_DEVICETREE_PREFIX = "ti/k3-am654"
 
diff --git a/meta-ti-bsp/conf/machine/include/am68.inc b/meta-ti-bsp/conf/machine/include/am68.inc
index cb3d1026..327366be 100644
--- a/meta-ti-bsp/conf/machine/include/am68.inc
+++ b/meta-ti-bsp/conf/machine/include/am68.inc
@@ -4,7 +4,7 @@  SOC_FAMILY:append = ":j721s2"
 MACHINE_FEATURES += "screen gpu"
 
 require conf/machine/include/mesa-pvr.inc
-PREFERRED_PROVIDER_virtual/gpudriver ?= "ti-img-rogue-driver"
+PREFERRED_PROVIDER_virtual/gpudriver ?= "${BSP_ROGUE_DRIVER_PROVIDER}"
 
 # Default tiboot3.bin on AM68 is for SR1.0 HS-FS
 IMAGE_BOOT_FILES += "tiboot3-j721s2-hs-fs-evm.bin"
diff --git a/meta-ti-bsp/conf/machine/include/am69.inc b/meta-ti-bsp/conf/machine/include/am69.inc
index 81be1397..488f9c33 100644
--- a/meta-ti-bsp/conf/machine/include/am69.inc
+++ b/meta-ti-bsp/conf/machine/include/am69.inc
@@ -4,7 +4,7 @@  SOC_FAMILY:append = ":j784s4"
 MACHINE_FEATURES += "screen gpu"
 
 require conf/machine/include/mesa-pvr.inc
-PREFERRED_PROVIDER_virtual/gpudriver ?= "ti-img-rogue-driver"
+PREFERRED_PROVIDER_virtual/gpudriver ?= "${BSP_ROGUE_DRIVER_PROVIDER}"
 
 # Default tiboot3.bin on AM69 is for SR1.0 HS-FS
 IMAGE_BOOT_FILES += "tiboot3-j784s4-hs-fs-evm.bin"
diff --git a/meta-ti-bsp/conf/machine/include/beagle.inc b/meta-ti-bsp/conf/machine/include/beagle.inc
index 27e3298d..e5050096 100644
--- a/meta-ti-bsp/conf/machine/include/beagle.inc
+++ b/meta-ti-bsp/conf/machine/include/beagle.inc
@@ -1,3 +1 @@ 
-
-PREFERRED_PROVIDER_virtual/kernel ?= "linux-bb.org"
-
+TI_DEFAULT_BSP ?= "bb_org"
diff --git a/meta-ti-bsp/conf/machine/include/j721e.inc b/meta-ti-bsp/conf/machine/include/j721e.inc
index 6040feb0..a54c3f2f 100644
--- a/meta-ti-bsp/conf/machine/include/j721e.inc
+++ b/meta-ti-bsp/conf/machine/include/j721e.inc
@@ -4,7 +4,7 @@  SOC_FAMILY:append = ":j721e"
 MACHINE_FEATURES += "screen gpu"
 
 require conf/machine/include/mesa-pvr.inc
-PREFERRED_PROVIDER_virtual/gpudriver ?= "ti-img-rogue-driver"
+PREFERRED_PROVIDER_virtual/gpudriver ?= "${BSP_ROGUE_DRIVER_PROVIDER}"
 
 IMAGE_BOOT_FILES += "sysfw.itb"
 
diff --git a/meta-ti-bsp/conf/machine/include/j721s2.inc b/meta-ti-bsp/conf/machine/include/j721s2.inc
index 5289ec5a..9cd88d9b 100644
--- a/meta-ti-bsp/conf/machine/include/j721s2.inc
+++ b/meta-ti-bsp/conf/machine/include/j721s2.inc
@@ -4,7 +4,7 @@  SOC_FAMILY:append = ":j721s2"
 MACHINE_FEATURES += "screen gpu"
 
 require conf/machine/include/mesa-pvr.inc
-PREFERRED_PROVIDER_virtual/gpudriver ?= "ti-img-rogue-driver"
+PREFERRED_PROVIDER_virtual/gpudriver ?= "${BSP_ROGUE_DRIVER_PROVIDER}"
 
 # Default tiboot3.bin on J721S2 is for GP
 IMAGE_BOOT_FILES += "tiboot3-j721s2-gp-evm.bin"
diff --git a/meta-ti-bsp/conf/machine/include/j722s.inc b/meta-ti-bsp/conf/machine/include/j722s.inc
index 3b051f1b..3c0717a0 100644
--- a/meta-ti-bsp/conf/machine/include/j722s.inc
+++ b/meta-ti-bsp/conf/machine/include/j722s.inc
@@ -4,7 +4,7 @@  SOC_FAMILY:append = ":j722s"
 MACHINE_FEATURES += "screen gpu"
 
 require conf/machine/include/mesa-pvr.inc
-PREFERRED_PROVIDER_virtual/gpudriver ?= "ti-img-rogue-driver"
+PREFERRED_PROVIDER_virtual/gpudriver ?= "${BSP_ROGUE_DRIVER_PROVIDER}"
 
 # Default tiboot3.bin on J722S is for HS-FS
 IMAGE_BOOT_FILES += "tiboot3-j722s-hs-fs-evm.bin"
diff --git a/meta-ti-bsp/conf/machine/include/j784s4.inc b/meta-ti-bsp/conf/machine/include/j784s4.inc
index 92062cdf..883c4a6e 100644
--- a/meta-ti-bsp/conf/machine/include/j784s4.inc
+++ b/meta-ti-bsp/conf/machine/include/j784s4.inc
@@ -4,7 +4,7 @@  SOC_FAMILY:append = ":j784s4"
 MACHINE_FEATURES += "screen gpu"
 
 require conf/machine/include/mesa-pvr.inc
-PREFERRED_PROVIDER_virtual/gpudriver ?= "ti-img-rogue-driver"
+PREFERRED_PROVIDER_virtual/gpudriver ?= "${BSP_ROGUE_DRIVER_PROVIDER}"
 
 # Default tiboot3.bin on J784S4 is for GP
 IMAGE_BOOT_FILES += "tiboot3-j784s4-gp-evm.bin"
diff --git a/meta-ti-bsp/conf/machine/include/k3.inc b/meta-ti-bsp/conf/machine/include/k3.inc
index e3da9e12..2b82cb82 100644
--- a/meta-ti-bsp/conf/machine/include/k3.inc
+++ b/meta-ti-bsp/conf/machine/include/k3.inc
@@ -10,9 +10,7 @@  BBMULTICONFIG += "k3r5"
 # Increase this everytime you change something in the kernel
 MACHINE_KERNEL_PR = "r0"
 
-PREFERRED_PROVIDER_virtual/kernel ?= "linux-ti-staging"
-PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot-ti-staging"
-PREFERRED_PROVIDER_u-boot ?= "u-boot-ti-staging"
+require conf/machine/include/ti-bsp.inc
 
 KERNEL_IMAGETYPE = "Image"
 KERNEL_IMAGETYPES = "Image fitImage"
diff --git a/meta-ti-bsp/conf/machine/include/k3r5.inc b/meta-ti-bsp/conf/machine/include/k3r5.inc
index 63267a5e..fcd54254 100644
--- a/meta-ti-bsp/conf/machine/include/k3r5.inc
+++ b/meta-ti-bsp/conf/machine/include/k3r5.inc
@@ -11,9 +11,9 @@  require conf/machine/include/arm/armv7a/tune-cortexa8.inc
 # https://git.ti.com/cgit/ti-u-boot/ti-u-boot/tree/doc/board/ti/j721e_evm.rst
 # https://git.ti.com/cgit/ti-u-boot/ti-u-boot/tree/doc/board/ti/am62x_sk.rst
 # https://git.ti.com/cgit/ti-u-boot/ti-u-boot/tree/doc/board/ti/k3.rst
+
+require conf/machine/include/ti-bsp.inc
 PREFERRED_PROVIDER_virtual/kernel = "linux-dummy"
-PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot-ti-staging"
-PREFERRED_PROVIDER_u-boot ?= "u-boot-ti-staging"
 
 SPL_SUFFIX = "bin"
 SPL_BINARY = "tiboot3-${SYSFW_SOC}-${SYSFW_SUFFIX}-${SYSFW_CONFIG}.${SPL_SUFFIX}"
diff --git a/meta-ti-bsp/conf/machine/include/omap-a15.inc b/meta-ti-bsp/conf/machine/include/omap-a15.inc
index 9ca41403..3637ad0a 100644
--- a/meta-ti-bsp/conf/machine/include/omap-a15.inc
+++ b/meta-ti-bsp/conf/machine/include/omap-a15.inc
@@ -7,13 +7,11 @@  require conf/machine/include/arm/armv7a/tune-cortexa15.inc
 # Increase this everytime you change something in the kernel
 MACHINE_KERNEL_PR = "r7"
 
-PREFERRED_PROVIDER_virtual/kernel ?= "linux-ti-staging"
-PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot-ti-staging"
-PREFERRED_PROVIDER_u-boot ?= "u-boot-ti-staging"
+require conf/machine/include/ti-bsp.inc
 
 # Graphics providers and variables
 require conf/machine/include/mesa-pvr.inc
-PREFERRED_PROVIDER_virtual/gpudriver ?= ""
+PREFERRED_PROVIDER_virtual/gpudriver ?= "${BSP_SGX_DRIVER_PROVIDER}"
 PVR_DISPLAY_CONTROLLER_ALIAS ?= "omapdrm"
 
 KERNEL_IMAGETYPE = "zImage"
diff --git a/meta-ti-bsp/conf/machine/include/omapl138.inc b/meta-ti-bsp/conf/machine/include/omapl138.inc
index 7f8262a5..486de05d 100644
--- a/meta-ti-bsp/conf/machine/include/omapl138.inc
+++ b/meta-ti-bsp/conf/machine/include/omapl138.inc
@@ -5,9 +5,7 @@  require conf/machine/include/arm/armv5/tune-arm926ejs.inc
 
 KERNEL_IMAGETYPE = "zImage"
 
-PREFERRED_PROVIDER_virtual/kernel ?= "linux-ti-staging"
-PREFERRED_PROVIDER_virtual/bootloader = "u-boot-ti-staging"
-PREFERRED_PROVIDER_u-boot = "u-boot-ti-staging"
+require conf/machine/include/ti-bsp.inc
 
 EXTRA_IMAGEDEPENDS += "virtual/bootloader"
 
diff --git a/meta-ti-bsp/conf/machine/include/ti-bsp.inc b/meta-ti-bsp/conf/machine/include/ti-bsp.inc
new file mode 100644
index 00000000..3bb94a7f
--- /dev/null
+++ b/meta-ti-bsp/conf/machine/include/ti-bsp.inc
@@ -0,0 +1,109 @@ 
+# Support multiple BSP providers
+# The main input is TI_DEFAULT_BSP, which translates into default
+# preferences for kernel, bootloader and graphics components, as
+# well as a dedicated machine override.
+
+# Supported options are: mainline, ti-6_6, ti-6_1, bb_org
+TI_DEFAULT_BSP ??= "ti-6_6"
+
+# Use bsp-* namespace for overrides
+MACHINEOVERRIDES =. "bsp-${TI_DEFAULT_BSP}:"
+
+# ==========
+# mainline
+# latest upstream/mainline kernel, u-boot
+# ==========
+BSP_KERNEL_PROVIDER:bsp-mainline = "linux-ti-mainline"
+BSP_KERNEL_VERSION:bsp-mainline = "%"
+BSP_BOOTLOADER_PROVIDER:bsp-mainline = "u-boot-ti-mainline"
+BSP_BOOTLOADER_VERSION:bsp-mainline = "%"
+
+# GPU support requires out-of-tree SGX and Rogue drivers not available
+# in mainline, usually present in TI staging or derivative like BB.org
+MACHINE_FEATURES:remove:bsp-mainline = "gpu"
+
+# ==========
+# ti-6_6
+# TI staging kernel 6.6, u-boot 2024.04
+# ==========
+BSP_KERNEL_PROVIDER:bsp-ti-6_6 = "linux-ti-staging"
+BSP_KERNEL_VERSION:bsp-ti-6_6 = "6.6%"
+BSP_BOOTLOADER_PROVIDER:bsp-ti-6_6 = "u-boot-ti-staging"
+BSP_BOOTLOADER_VERSION:bsp-ti-6_6 = "2024%"
+
+# Only Rogue is enabled so far, SGX falls back to SW rendering
+BSP_ROGUE_DRIVER_PROVIDER:bsp-ti-6_6 = "ti-img-rogue-driver"
+BSP_ROGUE_DRIVER_VERSION:bsp-ti-6_6 = "24%"
+BSP_ROGUE_UMLIBS_VERSION:bsp-ti-6_6 = "24%"
+BSP_MESA_PVR_VERSION:bsp-ti-6_6 = "23%"
+
+# ==========
+# ti-6_1
+# TI staging kernel 6.1, u-boot 2023.04
+# ==========
+BSP_KERNEL_PROVIDER:bsp-ti-6_1 = "linux-ti-staging"
+BSP_KERNEL_VERSION:bsp-ti-6_1 = "6.1%"
+BSP_BOOTLOADER_PROVIDER:bsp-ti-6_1 = "u-boot-ti-staging"
+BSP_BOOTLOADER_VERSION:bsp-ti-6_1 = "2023%"
+
+BSP_SGX_DRIVER_PROVIDER:bsp-ti-6_1 = "ti-sgx-ddk-km"
+BSP_SGX_DRIVER_VERSION:bsp-ti-6_1 = "1.17%"
+BSP_SGX_UMLIBS_VERSION:bsp-ti-6_1 = "1.17%"
+BSP_ROGUE_DRIVER_PROVIDER:bsp-ti-6_1 = "ti-img-rogue-driver"
+BSP_ROGUE_DRIVER_VERSION:bsp-ti-6_1 = "23%"
+BSP_ROGUE_UMLIBS_VERSION:bsp-ti-6_1 = "23%"
+BSP_MESA_PVR_VERSION:bsp-ti-6_1 = "22%"
+
+# ==========
+# bb_org
+# BeagleBoard.org kernel 6.1, u-boot 2023.04
+# based on TI staging trees with extra Beagle-specific features
+# but may not be up-to-date with TI version
+# ==========
+BSP_KERNEL_PROVIDER:bsp-bb_org = "linux-bb.org"
+BSP_KERNEL_VERSION:bsp-bb_org = "%"
+BSP_BOOTLOADER_PROVIDER:bsp-bb_org = "u-boot-bb.org"
+BSP_BOOTLOADER_VERSION:bsp-bb_org = "%"
+
+BSP_SGX_DRIVER_PROVIDER:bsp-bb_org = "ti-sgx-ddk-km"
+BSP_SGX_DRIVER_VERSION:bsp-bb_org = "1.17%"
+BSP_SGX_UMLIBS_VERSION:bsp-bb_org = "1.17%"
+BSP_ROGUE_DRIVER_PROVIDER:bsp-bb_org = "ti-img-rogue-driver"
+BSP_ROGUE_DRIVER_VERSION:bsp-bb_org = "23%"
+BSP_ROGUE_UMLIBS_VERSION:bsp-bb_org = "23%"
+BSP_MESA_PVR_VERSION:bsp-bb_org = "22%"
+
+# ==========
+# sane fallback defaults
+# if specific values are not defined or bsp is set incorrectly
+# use default preference TI staging and SW-rendering graphics
+# ==========
+BSP_KERNEL_PROVIDER ?= "linux-ti-staging"
+BSP_KERNEL_VERSION ?= "%"
+BSP_BOOTLOADER_PROVIDER ?= "u-boot-ti-staging"
+BSP_BOOTLOADER_VERSION ?= "%"
+
+BSP_SGX_DRIVER_PROVIDER ?= ""
+BSP_SGX_DRIVER_VERSION ?= ""
+BSP_ROGUE_DRIVER_PROVIDER ?= ""
+BSP_ROGUE_DRIVER_VERSION ?= ""
+BSP_SGX_UMLIBS_VERSION ?= ""
+BSP_ROGUE_UMLIBS_VERSION ?= ""
+BSP_MESA_PVR_VERSION ?= ""
+
+# ==========
+# global preferences
+# ==========
+PREFERRED_PROVIDER_virtual/kernel ?= "${BSP_KERNEL_PROVIDER}"
+PREFERRED_VERSION_${BSP_KERNEL_PROVIDER} ?= "${BSP_KERNEL_VERSION}"
+PREFERRED_PROVIDER_virtual/bootloader ?= "${BSP_BOOTLOADER_PROVIDER}"
+PREFERRED_PROVIDER_u-boot ?= "${BSP_BOOTLOADER_PROVIDER}"
+PREFERRED_VERSION_${BSP_BOOTLOADER_PROVIDER} ?= "${BSP_BOOTLOADER_VERSION}"
+
+# GPU provider gets set in machine configs, as some machines are headless
+# Select default preferred versions here
+PREFERRED_VERSION_ti-sgx-ddk-km ?= "${BSP_SGX_DRIVER_VERSION}"
+PREFERRED_VERSION_ti-sgx-ddk-um ?= "${BSP_SGX_UMLIBS_VERSION}"
+PREFERRED_VERSION_ti-img-rogue-driver ?= "${BSP_ROGUE_DRIVER_VERSION}"
+PREFERRED_VERSION_ti-img-rogue-umlibs ?= "${BSP_ROGUE_UMLIBS_VERSION}"
+PREFERRED_VERSION_mesa-pvr ?= "${BSP_MESA_PVR_VERSION}"
diff --git a/meta-ti-bsp/conf/machine/include/ti-soc.inc b/meta-ti-bsp/conf/machine/include/ti-soc.inc
index a1fd3cbf..5d77e719 100644
--- a/meta-ti-bsp/conf/machine/include/ti-soc.inc
+++ b/meta-ti-bsp/conf/machine/include/ti-soc.inc
@@ -1,9 +1,8 @@ 
 # This is a generic TI SOC family. It is a superset of all other SOCs
 # and platforms defined in meta-ti to allow BSP-level overrides.
 SOC_FAMILY = "ti-soc"
+require conf/machine/include/soc-family.inc
 
 # TI platforms all use devicetrees with overlays
 MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "kernel-devicetree"
 KERNEL_DTB_OVERLAY_SUPPORT ?= "1"
-
-require conf/machine/include/soc-family.inc
diff --git a/meta-ti-bsp/conf/machine/include/ti33x.inc b/meta-ti-bsp/conf/machine/include/ti33x.inc
index 6fd65b2d..45934aa0 100644
--- a/meta-ti-bsp/conf/machine/include/ti33x.inc
+++ b/meta-ti-bsp/conf/machine/include/ti33x.inc
@@ -7,14 +7,11 @@  require conf/machine/include/arm/armv7a/tune-cortexa8.inc
 # Increase this everytime you change something in the kernel
 MACHINE_KERNEL_PR = "r22"
 
-# Default providers, may need to override for specific machines
-PREFERRED_PROVIDER_virtual/kernel ?= "linux-ti-staging"
-PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot-ti-staging"
-PREFERRED_PROVIDER_u-boot ?= "u-boot-ti-staging"
+require conf/machine/include/ti-bsp.inc
 
 # Graphics providers and variables
 require conf/machine/include/mesa-pvr.inc
-PREFERRED_PROVIDER_virtual/gpudriver ?= ""
+PREFERRED_PROVIDER_virtual/gpudriver ?= "${BSP_SGX_DRIVER_PROVIDER}"
 PVR_DISPLAY_CONTROLLER_ALIAS ?= "tilcdc"
 
 KERNEL_IMAGETYPE = "zImage"
diff --git a/meta-ti-bsp/conf/machine/include/ti43x.inc b/meta-ti-bsp/conf/machine/include/ti43x.inc
index 0a3ef4c3..c6a3c510 100644
--- a/meta-ti-bsp/conf/machine/include/ti43x.inc
+++ b/meta-ti-bsp/conf/machine/include/ti43x.inc
@@ -7,14 +7,11 @@  require conf/machine/include/arm/armv7a/tune-cortexa9.inc
 # Increase this everytime you change something in the kernel
 MACHINE_KERNEL_PR = "r3"
 
-# Default providers, may need to override for specific machines
-PREFERRED_PROVIDER_virtual/kernel ?= "linux-ti-staging"
-PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot-ti-staging"
-PREFERRED_PROVIDER_u-boot ?= "u-boot-ti-staging"
+require conf/machine/include/ti-bsp.inc
 
 # Graphics providers and variables
 require conf/machine/include/mesa-pvr.inc
-PREFERRED_PROVIDER_virtual/gpudriver ?= ""
+PREFERRED_PROVIDER_virtual/gpudriver ?= "${BSP_SGX_DRIVER_PROVIDER}"
 PVR_DISPLAY_CONTROLLER_ALIAS ?= "omapdrm"
 
 KERNEL_IMAGETYPE = "zImage"