Dear Michal Simek, In message <4e5f85da.4080...@monstr.eu> you wrote: > > >> +static void sdma_out_be32(struct ll_priv *priv, u32 offset, u32 val) > >> +{ > >> + if (priv->mode & DCR_BIT) > >> + mtdcr_local(priv->ctrl + offset, val); > >> + else > >> + out_be32((u32 *)(priv->ctrl + offset * 4), val); > >> +} > >> + > >> +static u32 sdma_in_be32(struct ll_priv *priv, u32 offset) > >> +{ > >> + if (priv->mode & DCR_BIT) > >> + return mfdcr_local(priv->ctrl + offset); > >> + > >> + return in_be32((u32 *)(priv->ctrl + offset * 4)); > >> +} > > > > Can we please get rid of these functions? As mentioned many, many > > times before, we discourage all use of "base address plus offset" to > > access any device registers etc. > > > > These functions here re-introduce such accesses, and this is something > > I will not accept. > > Ok. How to do it? > > For bus access it is necessary to use 4B offsets for DCR just 1B > and one system can contains two MACs where the first use 4B offset and the > second > 1B.
I don't think your description here matches the code above. With "1 byte offsets" you would be doing all unaligned bus accesses. I think you should use an array of structs and an index to select the right one. Best regards, Wolfgang Denk -- DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: w...@denx.de "A dirty mind is a joy forever." - Randy Kunkee _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot