Re: [PATCH 0/3] dtc: Preserve negative integers in yaml and dts output

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



On Fri, Jun 26, 2020 at 10:25 AM Andrei Ziureaev
<andrei.ziureaev@xxxxxxx> wrote:
>
> Currently, in yaml output, negative values are indistinguishable from
> positive ones. Some bindings (for example
> Documentation/devicetree/bindings/iio/accel/lis302.txt) mention negative
> values. If those binding are converted to yaml, dt-schema validation
> wouldn't work with them.
>
> The first patch is a mechanical change and shouldn't affect dtc's
> behaviour.
>
> The second one is the functional change. When applied, dts to dts and
> dts to yaml conversions preserve the '-' sign in front of integers.
>
> For now, in dts parsing, only the unary '-' operator creates negative
> values (the other operators just set the 'is_negative' flag to false),
> but it should be easy to add support for other operators if needed.
>
> One issue is that there are two ways to format an array of bytes in dts:
> '/bits/ 8 <...>' and '[...]'. Only the former supports negative
> integers. But, in dts output, only the latter is used. Therefore, I
> didn't include support for negative 8-bit values in dts output (I did
> add support for them in yaml output). Some possible alternatives are:
>
> - switch to the '/bits/ 8 <>' format in dts output

IMO, we should do this which effectively deprecates the [] syntax.

>
> - only switch to the '/bits/ 8 <>' format if the array contains negative
>   values
>
> - add another marker to differentiate between the two formats
>
> Thanks,
> Andrei.
>
> Andrei Ziureaev (3):
>   dtc: Turn 'uint64_t integer' into a struct
>   dtc: Preserve negative integers in yaml and dts output
>   dtc: Add sign preservation tests
>
>  dtc-lexer.l                           |  10 +-
>  dtc-parser.y                          | 132 +++++++++++++++++++-------
>  dtc.h                                 |  14 +++
>  tests/run_tests.sh                    |   4 +-
>  tests/sign-preservation-bytes.dt.yaml |   5 +
>  tests/sign-preservation-bytes.dts     |   7 ++
>  tests/sign-preservation.dt.yaml       |  20 ++++
>  tests/sign-preservation.dts           |  28 ++++++
>  treesource.c                          |  35 +++++--
>  yamltree.c                            |  32 ++++---
>  10 files changed, 225 insertions(+), 62 deletions(-)
>  create mode 100644 tests/sign-preservation-bytes.dt.yaml
>  create mode 100644 tests/sign-preservation-bytes.dts
>  create mode 100644 tests/sign-preservation.dt.yaml
>  create mode 100644 tests/sign-preservation.dts
>
> --
> 2.17.1
>



[Index of Archives]     [Device Tree]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux