1/* SPDX-License-Identifier: GPL-2.0+ */
2/*
3 * Copyright 2023 Arm Limited and/or its affiliates <open-source-office@arm.com>
4 *
5 * Authors:
6 *   Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com>
7 */
8
9#ifndef __DRIVER_NVMXIP_H__
10#define __DRIVER_NVMXIP_H__
11
12#include <blk.h>
13
14#define NVMXIP_BLKDRV_NAME    "nvmxip-blk"
15#define NVMXIP_BLKDEV_NAME_SZ 20
16
17/**
18 * struct nvmxip_plat - the NVMXIP driver plat
19 *
20 * @phys_base:	NVM XIP device base address
21 * @lba_shift:	block size shift count
22 * @lba:	number of blocks
23 *
24 * The NVMXIP information read from the DT.
25 */
26struct nvmxip_plat {
27	phys_addr_t phys_base;
28	u32 lba_shift;
29	lbaint_t lba;
30};
31
32/**
33 * nvmxip_bind() - post binding treatments
34 * @dev:	the NVMXIP device
35 *
36 * Create and probe a child block device.
37 *
38 * Return:
39 *
40 * 0 on success. Otherwise, failure
41 */
42int nvmxip_probe(struct udevice *udev);
43
44#endif /* __DRIVER_NVMXIP_H__ */
45