Re: RFC: Alchemy Au1550 SMBus driver on PSC

Izumi Tsutsui <[email protected]>
Newsgroups gmane.os.netbsd.ports.evbmips
Message-ID <[email protected]>
In article <[email protected]>
[email protected] wrote:

>   sys-arch-mips.diff:	diffs for sys/arch/mips from -current.
>   ausmbus_psc.c:	smbus driver.
>   smbusreg.c:		definitions for SMBus registers

Mostly looks good, but I'd suggest some cosmetics again:

> RCS file: /cvsroot/src/sys/arch/mips/alchemy/dev/aupscreg.h,v
 :
> @@ -124,5 +127,6 @@
>  #define	AUPSC_SMBEVNT			0x18	/* R/W */
>  #define	AUPSC_SMBTXRX			0x1c	/* R/W */
>  #define	AUPSC_SMBTMR			0x20	/* R/W */
> +#include <mips/alchemy/dev/smbusreg.h>
>  
>  #endif	/* _MIPS_ALCHEMY_DEV_AUPSCREG_H_ */

This #include is needed here?

> RCS file: /cvsroot/src/sys/arch/mips/conf/files.alchemy,v
>  # On-chip PSC
> -device	aupsc
> +device	aupsc { [addr=-1] }

This should be { [ addr = -1 ] } ?

In ausmbus_psc.c:
> #include <sys/lock.h>

sys/lock.h is still needed?

> 	/* Setup SMBus Protocol Timing register */
> 	v = SMBUS_TMR_TH_SET(0)
> 		| SMBUS_TMR_PS_SET(0xf) | SMBUS_TMR_PU_SET(0xf)
> 		| SMBUS_TMR_SH_SET(0xf) | SMBUS_TMR_SU_SET(0xf)
> 		| SMBUS_TMR_CL_SET(0xf) | SMBUS_TMR_CH_SET(0xf);

Hmm, can't these "0xf" magic numbers be defined in somewhere?

> 	ausmbus_reg_write(sc, AUPSC_SMBTMR, v);
 :
> 	ausmbus_reg_write(sc, AUPSC_SMBMSK, v);
 :
> 	v = ausmbus_reg_read(sc, AUPSC_SMBCFG);
 :
> 	ausmbus_reg_write(sc, AUPSC_SMBCFG, v);
> 	v = ausmbus_reg_read(sc, AUPSC_SMBSTAT);
 :
> static uint32_t
> ausmbus_reg_read(struct ausmbus_softc *sc, int reg)
> {
> 
> 	return bus_space_read_4(sc->sc_ctrl.psc_bust, sc->sc_ctrl.psc_bush,
> 		reg);
> }
> 
> static void
> ausmbus_reg_write(struct ausmbus_softc *sc, int reg, uint32_t val)
> {
> 
> 	bus_space_write_4(sc->sc_ctrl.psc_bust, sc->sc_ctrl.psc_bush,
> 		reg, val);
> }

If ausmbus_reg_{read,write}() are used only here, they should
be macros rather than static functions.

> #if 0
> 	printf("config: 0x%08x\n", ausmbus_reg_read(sc, AUPSC_SMBCFG));
> 	printf("status: 0x%08x\n", ausmbus_reg_read(sc, AUPSC_SMBSTAT));
> 	printf("tmr   : 0x%08x\n", ausmbus_reg_read(sc, AUPSC_SMBTMR));
> 	printf("mask  : 0x%08x\n", ausmbus_reg_read(sc, AUPSC_SMBMSK));
> #endif

If you use these printfs for debug, this could be
#ifdef AUSMBUS_DEBUG or something.
---
Izumi Tsutsui
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.