[En-Nut-Discussion] Bit banging drivers broken?

Uwe Bonnes bon at elektron.ikp.physik.tu-darmstadt.de
Thu Oct 4 19:15:20 CEST 2012


>>>>> "Harald" == Harald Kipp <harald.kipp at egnite.de> writes:

    Harald> Hello Uwe, r4683 changed

    Harald>  #undef GPIO_ID #define GPIO_ID MMC_CLK_PIO_ID #include
    Harald> <cfg/arch/porttran.h> static INLINE void MMC_CLK_LO(void) {
    Harald> GPIO_SET_LO(MMC_CLK_PIO_BIT); }

    Harald> to

    Harald>  static INLINE void MMC_CLK_LO(void) { GpioPinSetLow
    Harald> (MMC_CLK_PIO_ID, MMC_CLK_PIO_BIT); }

    Harald> That doesn't look correct to me, because according to
    Harald> conf/dev/dev.nut MMC_CLK_PIO_ID is

    Harald>  "Port ID of the clock line."

    Harald> not the port address. I think this had been done to support

    Harald>  SbiMmcIfcInit()

    Harald> which requires the ID to enable the PIO clock in PMC_PCER.

With an implemented NutGpio Api for that architecture, we wouldn't need the
clock argument as NutGpioPinConfigf would care.

    Harald> I think the same problem exists for dev/jtag_gpio0.c, where

    Harald> #define JTAG0_TDO_PIO_ID PIO_ID

    Harald> is defined in include/arch/arm/board/ethernut3.h and then used
    Harald> in dev/jtag_gpio0.c

    Harald> static INLINE int JTAG0_TDO_IS_ON(void) { return
    Harald> GpioPinGet(JTAG0_TDO_PIO_ID, JTAG0_TDO_PIO_BIT); }

    Harald> finally translated to

    Harald> inr(PIO_ID + PIO_PDSR_OFF) & _BV(bit) ? 1 : 0

    Harald> in include/dev/gpio_at91.h. For the AT91X40

    Harald> #define PIO_ID 8 #define PIO_PDSR_OFF 0x0000003C

    Harald> I'm not sure about the AVR32 and the Freescale branch.

Okay, you got me. I cared for AVR and STM, but not the rest. How to proceed?
I think the NutGpio Api has clear advantage so reverting would be a step
back. And adding #if isn't appelling too. But I don't feel like I can
complete the NutGpio functions for all architecture. So perhaps split off
the old file before my change with a similar name, but some addition to mark
it as transitory. Architectures with incomplete NutGpio Api should reference
the old file, but the new file when NutGpio is fixed. However this will
cause problems with architecture independant examples. Or perhaps some
header could define something to mark NutGpio incomplete for these
architecture and the example could evaluate.

Is that okay?

Bye

-- 
Uwe Bonnes                bon at elektron.ikp.physik.tu-darmstadt.de

Institut fuer Kernphysik  Schlossgartenstrasse 9  64289 Darmstadt
--------- Tel. 06151 162516 -------- Fax. 06151 164321 ----------


More information about the En-Nut-Discussion mailing list