2013/1/14 Matt Dainty <m...@bodgit-n-scarper.com>:
> Attached is a patch that adds soekris(4) which provides access to the
> GPIO and LEDs as implemented by the onboard Xilinx FPGA on the Soekris

Dunno if I am out of my league here, but:

> +void
> +soekris_gpio_write(void *arg, int pin, int value)
> +{
> +       struct soekris_softc *sc = arg;
> +       u_int16_t data;
> +
> +       data = bus_space_read_2(sc->sc_iot, sc->sc_ioh, SOEKRIS_GPIO_INPUT);
> +
> +       if (value == GPIO_PIN_LOW)
> +               data &= ~(1 << pin);
> +       else if (value == GPIO_PIN_HIGH)
> +               data |= (1 << pin);
> +
> +       bus_space_write_2(sc->sc_iot, sc->sc_ioh, SOEKRIS_GPIO_OUTPUT, data);
> +}


> +void
> +soekris_led_write(void *arg, int pin, int value)
> +{
> +       struct soekris_softc *sc = arg;
> +
> +       bus_space_write_1(sc->sc_iot, sc->sc_ioh, soekris_led_offset[pin],
> +           value);

These two (and the read function) don't really seem to prevent me from
writing or reading pin/led 23498324 and have it wander far off into
memory. Then again, that protection may be at the ioctl level, making
my whole comment moot, but at least bus_space_write_N() doesn't check
it afterwards.

-- 
May the most significant bit of your life be positive.

Reply via email to