提交 2c0f782e 编写于 作者: P Patrick Delaunay 提交者: Tom Rini

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: NPatrick Delaunay <patrick.delaunay@st.com>
Reviewed-by: NSimon Glass <sjg@chromium.org>
上级 d15c05b5
/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;
......
/* 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
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册