On 9/6/24 11:59 PM, Alexandru Ardelean wrote: > On Fri, Sep 6, 2024 at 12:54 AM David Lechner <dlechner@xxxxxxxxxxxx> wrote: >> >> On 9/5/24 3:24 AM, Alexandru Ardelean wrote: ... >>> +patternProperties: >>> + "^channel@[1-8]$": >>> + type: object >>> + $ref: adc.yaml >>> + unevaluatedProperties: false >>> + >>> + properties: >>> + reg: >>> + description: >>> + The channel number, as specified in the datasheet (from 1 to 8). >>> + minimum: 1 >>> + maximum: 8 >>> + >>> + diff-channels: >>> + description: >>> + Each channel can be configured as a differential bipolar channel. >>> + The ADC uses the same positive and negative inputs for this. >>> + This property must be specified as 'reg' (or the channel number) for >>> + both positive and negative inputs (i.e. diff-channels = <reg reg>). >>> + items: >>> + minimum: 1 >>> + maximum: 8 >>> + >>> + bipolar: >>> + description: >>> + Each channel can be configured as a unipolar or bipolar single-ended. >>> + When this property is not specified, it's unipolar, so the ADC will >>> + have only the positive input wired. >>> + For this ADC the 'diff-channels' & 'bipolar' properties are mutually >>> + exclusive. >>> + >>> + required: >>> + - reg >>> + >>> + oneOf: >>> + - required: >>> + - diff-channels >>> + - required: >>> + - bipolar >> >> The datasheet (ad7606c-18.pdf) lists the following combinations: >> >> * Bipolar single-ended >> * Unipolar single-ended >> * Bipolar differential >> >> The logic in the oneOf: doesn't match this. >> >> This I think this would be sufficient: >> >> - if: >> required: [diff-channels] >> then: >> required: [bipolar] > > So here, I am a bit vague. > This makes 'bipolar' mandatory if 'diff-channels' is mandatory, right? > But then 'bipolar' (on its own) becomes optional? > The way I understood the oneOf case is that: > 1. if it's 'diff-channels' then it's specified 'bipolar differential'. diff-channels does not imply bipolar in DT, so we need both properties set to specify "bipolar differential". > 2. if it's 'bipolar' then it's specified as 'bipolar single-ended' > 3. otherwise it's unipolar > 4. oneOf enforces that at least 'diff-channels' or 'bipolar' is > specified if there is a channel node > >