mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2025-09-20 05:11:30 +02:00
In order to help setup pin configuration for special pins (UFS, SDCard), introduce the msm_special_pin_data struct largely inspired from the Linux conterpart but with only U-Boot required fields. This struct is added to the pins_data to allow specifying the special pins data for each SoC. Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
50 lines
934 B
C
50 lines
934 B
C
/* SPDX-License-Identifier: GPL-2.0+ */
|
|
/*
|
|
* Qualcomm common pin control data.
|
|
*
|
|
* Copyright (C) 2023 Linaro Ltd.
|
|
*/
|
|
#ifndef _QCOM_GPIO_H_
|
|
#define _QCOM_GPIO_H_
|
|
|
|
#include <asm/types.h>
|
|
#include <stdbool.h>
|
|
|
|
struct msm_special_pin_data {
|
|
char *name;
|
|
|
|
u32 ctl_reg;
|
|
u32 io_reg;
|
|
|
|
unsigned pull_bit:5;
|
|
unsigned drv_bit:5;
|
|
|
|
unsigned oe_bit:5;
|
|
unsigned in_bit:5;
|
|
unsigned out_bit:5;
|
|
};
|
|
|
|
struct msm_pin_data {
|
|
int pin_count;
|
|
const unsigned int *pin_offsets;
|
|
unsigned int special_pins_start;
|
|
const struct msm_special_pin_data *special_pins_data;
|
|
};
|
|
|
|
static inline u32 qcom_pin_offset(const unsigned int *offs, unsigned int selector)
|
|
{
|
|
u32 out = (selector * 0x1000);
|
|
|
|
if (offs)
|
|
return out + offs[selector];
|
|
|
|
return out;
|
|
}
|
|
|
|
static inline bool qcom_is_special_pin(const struct msm_pin_data *pindata, unsigned int pin)
|
|
{
|
|
return pindata->special_pins_start && pin >= pindata->special_pins_start;
|
|
}
|
|
|
|
#endif /* _QCOM_GPIO_H_ */
|