[Concept,0/5] api: Deprecate the API

Message ID 20250905131816.3344908-1-sjg@u-boot.org
Headers
Series api: Deprecate the API |

Message

Simon Glass Sept. 5, 2025, 1:18 p.m. UTC
  From: Simon Glass <sjg@chromium.org>

The existing U-Boot API is quite old and doesn't support driver model.
Adding new functions is a manual process and no one has attempted this in
the 10 years that driver model has been present. Undertaking such a task
would be laborious and would require continued effort to maintain.

A better approach would be to create a library containing all of U-Boot, then
have the API be generated by a script from a list of functions. This would
allow for a more flexible and maintainable interface.

In preparation for this new direction, this series renames the existing API
components to clearly mark them as legacy:

- Rename api/ to legacy_api/
- Rename examples/api/ to examples/legacy_api/
- Rename include/api.h and include/api_public.h to include/legacy_api*.h
- Rename API_BUILD to LEGACY_API_BUILD
- Rename CONFIG_API to CONFIG_LEGACY_API
- Rename api_init() to legacy_api_init()

This provides a clean namespace for implementing the new library-based API
approach while maintaining backward compatibility for existing users of the
legacy interface.

This series also sets a deadline for removal of the legacy API.


Simon Glass (5):
  api: Rename legacy API files and examples
  api: Rename the api/ directory
  Kconfig: Rename API to LEGACY_API
  api: Rename api_init() to legacy_api_init()
  doc: api: Add a migration deadline

 Kconfig                                       |  2 +-
 Makefile                                      |  2 +-
 common/board_r.c                              |  6 ++---
 doc/develop/driver-model/migration.rst        | 12 ++++++++++
 examples/Makefile                             |  2 +-
 examples/{api => legacy_api}/.gitignore       |  0
 examples/{api => legacy_api}/Makefile         |  8 +++----
 examples/{api => legacy_api}/crt0.S           |  0
 examples/{api => legacy_api}/demo.c           |  2 +-
 examples/{api => legacy_api}/glue.c           |  2 +-
 examples/{api => legacy_api}/glue.h           |  0
 examples/{api => legacy_api}/libgenwrap.c     |  2 +-
 include/{api.h => legacy_api.h}               | 10 +++++----
 include/{api_public.h => legacy_api_public.h} |  6 ++---
 include/net-common.h                          |  2 +-
 include/net-legacy.h                          |  2 +-
 {api => legacy_api}/Kconfig                   | 22 +++++++++++--------
 {api => legacy_api}/Makefile                  |  0
 {api => legacy_api}/README                    |  2 +-
 {api => legacy_api}/api.c                     |  4 ++--
 {api => legacy_api}/api_display.c             |  2 +-
 {api => legacy_api}/api_net.c                 |  2 +-
 {api => legacy_api}/api_platform-arm.c        |  2 +-
 {api => legacy_api}/api_platform-mips.c       |  2 +-
 {api => legacy_api}/api_platform-powerpc.c    |  2 +-
 {api => legacy_api}/api_private.h             |  2 +-
 {api => legacy_api}/api_storage.c             |  2 +-
 lib/Makefile                                  |  2 +-
 lib/vsprintf.c                                |  6 ++---
 net/lwip/net-lwip.c                           |  4 ++--
 net/net.c                                     |  4 ++--
 test/common/print.c                           |  2 +-
 test/lib/unicode.c                            |  2 +-
 33 files changed, 69 insertions(+), 51 deletions(-)
 rename examples/{api => legacy_api}/.gitignore (100%)
 rename examples/{api => legacy_api}/Makefile (87%)
 rename examples/{api => legacy_api}/crt0.S (100%)
 rename examples/{api => legacy_api}/demo.c (99%)
 rename examples/{api => legacy_api}/glue.c (99%)
 rename examples/{api => legacy_api}/glue.h (100%)
 rename examples/{api => legacy_api}/libgenwrap.c (96%)
 rename include/{api.h => legacy_api.h} (63%)
 rename include/{api_public.h => legacy_api_public.h} (96%)
 rename {api => legacy_api}/Kconfig (62%)
 rename {api => legacy_api}/Makefile (100%)
 rename {api => legacy_api}/README (98%)
 rename {api => legacy_api}/api.c (99%)
 rename {api => legacy_api}/api_display.c (94%)
 rename {api => legacy_api}/api_net.c (98%)
 rename {api => legacy_api}/api_platform-arm.c (96%)
 rename {api => legacy_api}/api_platform-mips.c (95%)
 rename {api => legacy_api}/api_platform-powerpc.c (97%)
 rename {api => legacy_api}/api_private.h (97%)
 rename {api => legacy_api}/api_storage.c (99%)