[U-Boot] [PATCH] Move ICS CLK chip frequenty calculation code into a common board library

Timur Tabi timur.tabi at gmail.com
Fri May 21 17:57:07 CEST 2010


On Fri, May 21, 2010 at 4:18 AM, Kumar Gala <galak at kernel.crashing.org> wrote:

> +#ifdef CONFIG_FSL_NGPIXIS
> +#include "ngpixis.h"
> +#define PIXIS_VSYSCLK0         offsetof(struct ngpixis, sclk[0])
> +#define PIXIS_VSYSCLK1         offsetof(struct ngpixis, sclk[1])
> +#define PIXIS_VSYSCLK2         offsetof(struct ngpixis, sclk[2])
> +#define PIXIS_VDDRCLK0         offsetof(struct ngpixis, dclk[0])
> +#define PIXIS_VDDRCLK1         offsetof(struct ngpixis, dclk[1])
> +#define PIXIS_VDDRCLK2         offsetof(struct ngpixis, dclk[2])
> +#endif

Yuck.  I specifically created the ngpixis_t structure because Wolfgang
objected to the use of macros for offsets.

But I understand why you did it.  It's the easiest way to maintain
compatibility between pixis and ngpixis.

> +/* decode S[0-2] to Output Divider (OD) */
> +static unsigned char ics307_s_to_od[] = {
> +       10, 2, 8, 4, 5, 7, 3, 6
> +};

Can you make this a u8 instead?

> +static unsigned long
> +ics307_clk_freq(unsigned char cw0, unsigned char cw1, unsigned char cw2)

u8's here, also.  You might then be able to make this one line.

> +{
> +       const unsigned long input_freq = CONFIG_ICS307_REFCLK_HZ;
> +       unsigned long VDW = ((cw1 << 1) & 0x1FE) + ((cw2 >> 7) & 1);
> +       unsigned long RDW = cw2 & 0x7F;
> +       unsigned long OD = ics307_s_to_od[cw0 & 0x7];
> +       unsigned long freq;

Wolfgang just asked me not to use camel caps.

> +#ifndef __ASSEMBLY__
> +extern unsigned long get_board_sys_clk(void);
> +extern unsigned long get_board_ddr_clk(void);
> +#endif

I don't think we need the "#ifndef __ASSEMBLY__" here.

-- 
Timur Tabi
Linux kernel developer at Freescale


More information about the U-Boot mailing list