gpio: sandbox: cleanup binding support
Cleanup binding support, use the generic binding by default (test u-class gpio_xlate_offs_flags function) and add specific binding for added value. Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
d15c05b5d0
commit
2c0f782e0f
|
@ -1,5 +1,8 @@
|
|||
/dts-v1/;
|
||||
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/gpio/sandbox-gpio.h>
|
||||
|
||||
/ {
|
||||
model = "sandbox";
|
||||
compatible = "sandbox";
|
||||
|
@ -86,11 +89,14 @@
|
|||
ping-expect = <0>;
|
||||
ping-add = <0>;
|
||||
u-boot,dm-pre-reloc;
|
||||
test-gpios = <&gpio_a 1>, <&gpio_a 4>, <&gpio_b 5 0 3 2 1>,
|
||||
test-gpios = <&gpio_a 1>, <&gpio_a 4>,
|
||||
<&gpio_b 5 GPIO_ACTIVE_HIGH 3 2 1>,
|
||||
<0>, <&gpio_a 12>;
|
||||
test2-gpios = <&gpio_a 1>, <&gpio_a 4>, <&gpio_b 6 1 3 2 1>,
|
||||
<&gpio_b 7 2 3 2 1>, <&gpio_b 8 4 3 2 1>,
|
||||
<&gpio_b 9 0xc 3 2 1>;
|
||||
test2-gpios = <&gpio_a 1>, <&gpio_a 4>,
|
||||
<&gpio_b 6 GPIO_ACTIVE_LOW 3 2 1>,
|
||||
<&gpio_b 7 GPIO_IN 3 2 1>,
|
||||
<&gpio_b 8 GPIO_OUT 3 2 1>,
|
||||
<&gpio_b 9 (GPIO_OUT|GPIO_OUT_ACTIVE) 3 2 1>;
|
||||
int-value = <1234>;
|
||||
uint-value = <(-1234)>;
|
||||
int64-value = /bits/ 64 <0x1111222233334444>;
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
#include <asm/gpio.h>
|
||||
#include <dm/of.h>
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/gpio/sandbox-gpio.h>
|
||||
|
||||
/* Flags for each GPIO */
|
||||
#define GPIOF_OUTPUT (1 << 0) /* Currently set as an output */
|
||||
|
@ -136,13 +137,15 @@ static int sb_gpio_xlate(struct udevice *dev, struct gpio_desc *desc,
|
|||
desc->offset = args->args[0];
|
||||
if (args->args_count < 2)
|
||||
return 0;
|
||||
if (args->args[1] & GPIO_ACTIVE_LOW)
|
||||
desc->flags |= GPIOD_ACTIVE_LOW;
|
||||
if (args->args[1] & 2)
|
||||
/* treat generic binding with gpio uclass */
|
||||
gpio_xlate_offs_flags(dev, desc, args);
|
||||
|
||||
/* sandbox test specific, not defined in gpio.h */
|
||||
if (args->args[1] & GPIO_IN)
|
||||
desc->flags |= GPIOD_IS_IN;
|
||||
if (args->args[1] & 4)
|
||||
if (args->args[1] & GPIO_OUT)
|
||||
desc->flags |= GPIOD_IS_OUT;
|
||||
if (args->args[1] & 8)
|
||||
if (args->args[1] & GPIO_OUT_ACTIVE)
|
||||
desc->flags |= GPIOD_IS_OUT_ACTIVE;
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* This header provides constants for binding sandbox,gpio
|
||||
*
|
||||
*/
|
||||
#ifndef _DT_BINDINGS_GPIO_SANDBOX_GPIO_H
|
||||
#define _DT_BINDINGS_GPIO_SANDBOX_GPIO_H
|
||||
|
||||
/*
|
||||
* Add a specific binding for sandbox gpio.
|
||||
* The value need to be after the generic defines of
|
||||
* dt-bindings/gpio/gpio.h
|
||||
*/
|
||||
|
||||
/* Bit 16 express GPIO input mode */
|
||||
#define GPIO_IN 0x10000
|
||||
|
||||
/* Bit 17 express GPIO output mode */
|
||||
#define GPIO_OUT 0x20000
|
||||
|
||||
/* Bit 18 express GPIO output is active */
|
||||
#define GPIO_OUT_ACTIVE 0x40000
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue