public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Ilya Yanok <yanok@emcraft.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 01/10] mx27: basic cpu support
Date: Thu, 14 May 2009 02:54:18 +0400	[thread overview]
Message-ID: <4A0B4F9A.8030503@emcraft.com> (raw)
In-Reply-To: <20090506211604.289C483420E8@gemini.denx.de>

Hi Wolfgang,

Wolfgang Denk wrote:
>> +static ulong clk_in_26m(void)
>> +{
>> +	if (CSCR & CSCR_OSC26M_DIV1P5) {
>> +		/* divide by 1.5 */
>> +		return 26000000 / 1.5;
>>     
>
> We definitely do not allow any FP use in U-Boot.
>   

This will be actually converted to an integer at the compile time.

>> +void imx_gpio_mode(int gpio_mode)
>> +{
>> +	unsigned int pin = gpio_mode & GPIO_PIN_MASK;
>> +	unsigned int port = (gpio_mode & GPIO_PORT_MASK) >> GPIO_PORT_SHIFT;
>> +	unsigned int ocr = (gpio_mode & GPIO_OCR_MASK) >> GPIO_OCR_SHIFT;
>> +	unsigned int aout = (gpio_mode & GPIO_AOUT_MASK) >> GPIO_AOUT_SHIFT;
>> +	unsigned int bout = (gpio_mode & GPIO_BOUT_MASK) >> GPIO_BOUT_SHIFT;
>> +	unsigned int tmp;
>> +
>> +	/* Pullup enable */
>> +	if(gpio_mode & GPIO_PUEN)
>> +		PUEN(port) |= (1 << pin);
>> +	else
>> +		PUEN(port) &= ~(1 << pin);
>>     
>
> This smells as if these were pointer accesses using register offsets
> instead of I/O accessor calls using C structs?
>   

Ok, I really like using accessor calls instead of pointer accesses but I
don't really understand the reason for using C structs here... I
remember I've already asked you about that and you told me that it's for
type safety... But we loose this type-safety when we are using I/O
accessor functions! All pointers are just silently converted to the
needed type... On the other hand Linux uses offsets for registers
definitions so converting them to C structs makes porting and
maintaining ported drivers harder...

> You probably want to use the respective clrbits*() / setbits*() macros
> here?
>   

I can see these macros defined only for ppc arch... And I really prefer
generic writel(readl() | something) here... The reason is the same: to
preserve as much code as it possible in drivers ported from Linux.

>> +#define IMX_IO_BASE		0x10000000
>> +
>> +#define IMX_AIPI1_BASE             (0x00000 + IMX_IO_BASE)
>> +#define IMX_WDT_BASE               (0x02000 + IMX_IO_BASE)
>> +#define IMX_TIM1_BASE              (0x03000 + IMX_IO_BASE)
>> +#define IMX_TIM2_BASE              (0x04000 + IMX_IO_BASE)
>> +#define IMX_TIM3_BASE              (0x05000 + IMX_IO_BASE)
>> +#define IMX_UART1_BASE             (0x0a000 + IMX_IO_BASE)
>> +#define IMX_UART2_BASE             (0x0b000 + IMX_IO_BASE)
>> +#define IMX_UART3_BASE             (0x0c000 + IMX_IO_BASE)
>> +#define IMX_UART4_BASE             (0x0d000 + IMX_IO_BASE)
>> +#define IMX_I2C1_BASE              (0x12000 + IMX_IO_BASE)
>> +#define IMX_GPIO_BASE              (0x15000 + IMX_IO_BASE)
>> +#define IMX_TIM4_BASE              (0x19000 + IMX_IO_BASE)
>> +#define IMX_TIM5_BASE              (0x1a000 + IMX_IO_BASE)
>> +#define IMX_UART5_BASE             (0x1b000 + IMX_IO_BASE)
>> +#define IMX_UART6_BASE             (0x1c000 + IMX_IO_BASE)
>> +#define IMX_I2C2_BASE              (0x1D000 + IMX_IO_BASE)
>> +#define IMX_TIM6_BASE              (0x1f000 + IMX_IO_BASE)
>> +#define IMX_AIPI2_BASE             (0x20000 + IMX_IO_BASE)
>> +#define IMX_PLL_BASE               (0x27000 + IMX_IO_BASE)
>> +#define IMX_SYSTEM_CTL_BASE        (0x27800 + IMX_IO_BASE)
>> +#define IMX_IIM_BASE               (0x28000 + IMX_IO_BASE)
>> +#define IMX_FEC_BASE               (0x2b000 + IMX_IO_BASE)
>>     
>
> NAK. We do not accept device I/O through pointers; please use C
> structs to describe the hardware and use I/O accessor calls.
>   

These are actually base addresses. I don't think we can make use of C
structs here.

Regards, Ilya.

  reply	other threads:[~2009-05-13 22:54 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-05-06 18:30 [U-Boot] [PATCH 00/10] Support for LogicPD i.MX27-LITEKIT development board Ilya Yanok
2009-05-06 18:30 ` [U-Boot] [PATCH 01/10] mx27: basic cpu support Ilya Yanok
2009-05-06 20:30   ` Magnus Lilja
2009-05-06 21:16   ` Wolfgang Denk
2009-05-13 22:54     ` Ilya Yanok [this message]
2009-05-14  8:10       ` Wolfgang Denk
2009-05-14  9:23         ` Ilya Yanok
2009-05-14  9:42           ` Wolfgang Denk
2009-05-14 10:26             ` Ilya Yanok
2009-05-14 12:33               ` Wolfgang Denk
2009-05-18 16:59             ` Magnus Lilja
2009-05-18 17:34               ` Scott Wood
2009-05-18 18:42               ` Wolfgang Denk
2009-05-14 13:40         ` Sascha Hauer
2009-05-14 13:56           ` Wolfgang Denk
2009-05-06 18:30 ` [U-Boot] [PATCH 02/10] serial_mx31: allow it to work with mx27 too Ilya Yanok
2009-05-06 21:16   ` Wolfgang Denk
2009-05-06 18:30 ` [U-Boot] [PATCH 03/10] fec_imx27: driver for FEC ethernet controller on i.MX27 Ilya Yanok
2009-05-06 19:51   ` Ben Warren
2009-05-06 21:20   ` Wolfgang Denk
2009-05-06 18:30 ` [U-Boot] [PATCH 04/10] mxc_nand: add nand driver for MX2/MX3 Ilya Yanok
2009-05-06 20:31   ` Magnus Lilja
2009-05-06 21:25   ` Wolfgang Denk
2009-05-08  8:39   ` Ivo Clarysse
2009-05-08  8:58     ` Magnus Lilja
2009-05-06 18:30 ` [U-Boot] [PATCH 05/10] mxc-mmc: sdhc host driver for MX2 and MX3 proccessor Ilya Yanok
2009-05-08  0:26   ` alfred steele
2009-05-13 21:50   ` alfred steele
2009-05-06 18:30 ` [U-Boot] [PATCH 06/10] arm: add support for CONFIG_GENERIC_MMC Ilya Yanok
2009-05-06 18:30 ` [U-Boot] [PATCH 07/10] mmc: use lldiv() for 64-bit division Ilya Yanok
2009-05-06 20:32   ` Magnus Lilja
2009-05-08 22:42   ` Andy Fleming
2009-05-06 18:30 ` [U-Boot] [PATCH 08/10] mmc: some endianess fixes for generic mmc subsystem Ilya Yanok
2009-05-08 22:43   ` Andy Fleming
2009-05-06 18:30 ` [U-Boot] [PATCH 09/10] mmc: fix mmcinfo command Ilya Yanok
2009-05-08 22:43   ` Andy Fleming
2009-05-06 18:30 ` [U-Boot] [PATCH 10/10] imx27lite: add support for imx27lite board from LogicPD Ilya Yanok
2009-05-06 20:34   ` Magnus Lilja
2009-05-08 18:19     ` Magnus Lilja
2009-05-06 21:29   ` Wolfgang Denk
2009-05-19 16:17   ` Paul Thomas
2009-05-20 18:49     ` Ilya Yanok
2009-05-20 19:49       ` Paul Thomas
2009-05-28 19:46       ` Paul Thomas
2009-05-28 21:45         ` Wolfgang Denk
2009-05-28 21:51           ` Paul Thomas
2009-06-11 22:38           ` Paul Thomas
2009-06-13 23:04             ` Paul Thomas
2009-05-06 21:26 ` [U-Boot] [PATCH 00/10] Support for LogicPD i.MX27-LITEKIT development board Wolfgang Denk

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4A0B4F9A.8030503@emcraft.com \
    --to=yanok@emcraft.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox