Remove the legacy extension board implementation now that all boards have been converted to use the new UCLASS-based framework. This eliminates lines of legacy code while preserving functionality through the modern driver model approach. Update the bootstd tests, due to the removal of extension hunter. Signed-off-by: Kory Maincent (TI.com) <kory.maincent@bootlin.com>
102 lines
2.6 KiB
C
102 lines
2.6 KiB
C
/* SPDX-License-Identifier: GPL-2.0+ */
|
|
/*
|
|
* (C) Copyright 2021
|
|
* Köry Maincent, Bootlin, <kory.maincent@bootlin.com>
|
|
*/
|
|
|
|
#ifndef __EXTENSION_SUPPORT_H
|
|
#define __EXTENSION_SUPPORT_H
|
|
|
|
#include <alist.h>
|
|
#include <dm/device.h>
|
|
#include <linux/list.h>
|
|
#include <dm/platdata.h>
|
|
|
|
extern struct list_head extension_list;
|
|
|
|
/**
|
|
* extension_get_list - Get the extension list
|
|
* Return: The extension alist pointer, or NULL if no such list exists.
|
|
*
|
|
* The caller must not free the list.
|
|
*/
|
|
struct alist *extension_get_list(void);
|
|
|
|
/**
|
|
* extension_probe - Probe extension device
|
|
* @dev: Extension device that needs to be probed
|
|
* Return: Zero on success, negative on failure.
|
|
*/
|
|
int extension_probe(struct udevice *dev);
|
|
|
|
/**
|
|
* extension_remove - Remove extension device
|
|
* @dev: Extension device that needs to be removed
|
|
* Return: Zero on success, negative on failure.
|
|
*/
|
|
int extension_remove(struct udevice *dev);
|
|
|
|
/**
|
|
* extension_scan - Scan extension boards available.
|
|
* Return: Zero on success, negative on failure.
|
|
*/
|
|
int extension_scan(void);
|
|
|
|
/**
|
|
* extension_apply - Apply extension board overlay to the devicetree
|
|
* @extension_num: Extension number to be applied
|
|
* Return: Zero on success, negative on failure.
|
|
*/
|
|
int extension_apply(int extension_num);
|
|
|
|
/**
|
|
* extension_apply_all - Apply all extension board overlays to the
|
|
* devicetree
|
|
* Return: Zero on success, negative on failure.
|
|
*/
|
|
int extension_apply_all(void);
|
|
|
|
/**
|
|
* extension - Description fields of an extension board
|
|
* @name: Name of the extension
|
|
* @owner: Owner of the extension
|
|
* @version: Version of the extension
|
|
* @overlay: Devicetree overlay name to be loaded for this extension
|
|
* @other: Other information of this extension
|
|
*/
|
|
struct extension {
|
|
char name[32];
|
|
char owner[32];
|
|
char version[32];
|
|
char overlay[64];
|
|
char other[32];
|
|
};
|
|
|
|
struct extension_ops {
|
|
/**
|
|
* scan - Add system-specific function to scan extension boards.
|
|
* @dev: extension device
|
|
* @extension_list: alist of extension to expand
|
|
* Return: The number of extension or a negative value in case of
|
|
* error.
|
|
*/
|
|
int (*scan)(struct udevice *dev, struct alist *extension_list);
|
|
};
|
|
|
|
#define extension_get_ops(dev) ((struct extension_ops *)(dev)->driver->ops)
|
|
|
|
/* Currently, only one extension driver enabled at a time is supported */
|
|
#define U_BOOT_EXTENSION(_name, _scan_func) \
|
|
U_BOOT_DRIVER(_name) = { \
|
|
.name = #_name, \
|
|
.id = UCLASS_EXTENSION, \
|
|
.probe = extension_probe, \
|
|
.remove = extension_remove, \
|
|
.ops = &(struct extension_ops) { \
|
|
.scan = _scan_func, \
|
|
}, \
|
|
.priv_auto = sizeof(struct alist), \
|
|
}
|
|
|
|
#endif /* __EXTENSION_SUPPORT_H */
|