Hi Rob,

On Thu, Jun 18, 2015 at 7:19 PM, Rob Landley <r...@landley.net> wrote:
> New files for Open Processor Foundation j2 (superh sh2 compatible open
> hardware) FPGA board, with enough drivers to boot initramfs to a shell
> prompt on serial console. See http://0pf.org for details.

Thanks for your patch!

>
> --- /dev/null   2015-06-06 04:15:40.702718005 -0500
> +++ linux/arch/sh/boards/board-0pf.c    2015-06-17 21:20:05.825356382 -0500
> @@ -0,0 +1,270 @@

> +static inline void shj_enable_irq(struct irq_data *data)
> +{
> +       unsigned int irq = data->irq;
> +       volatile unsigned int vui;
> +
> +//     printk("%s: IRQ %d (0x%x)\n", __func__, irq, irq);

Please no C++ style comments, nor commented-out code.

> +       switch (irq) {
> +       case PIT_IRQ:
> +               //AQ_PIO = 0x0BB;
> +               /* enable, lvl 2, vector 64 */
> +               AQ_SYS = (1 << 26) |    /* enable PIT */
> +                   (0x02 << 20) |      /* interrupt level 2 */
> +                   (PIT_IRQ << 12) |   /* vector 64 */

Magic numbers need #defines.

> +                   1;          /* turn off interval timer */
> +               break;
> +
> +       case Irq_UART0:
> +               vui = *(volatile unsigned int *)(sys_SYS_BASE + Sys_IntPri);

volatile considered harmful, writel()? (more below)

> +static void __init shj_irq_init(void)
> +{
> +       int c;

unsigned int

> +
> +       printk(KERN_INFO "0PF FPGA interrupt controller...\n");

pr_info()

> +
> +       for (c = 0; c < NR_IRQS; c++) {
> +               //irq_desc[c].action = NULL;
> +               //irq_desc[c].depth = 1;
> +               irq_set_chip_and_handler_name(c, &shj_irq_chip,
> +                                             handle_simple_irq, "simple");
> +       }
> +}
> +
> +#ifdef CONFIG_ARCH_USES_GETTIMEOFFSET
> +// Commit 7b1f62076 switched this to a pointer

Please don't refer to git commits in comments.

> +static struct sh_machine_vector mv_se __initmv = {
> +       .mv_name = "0PF_FPGA",
> +       //.mv_nr_irqs = 256,

No commented-out code/data

> +static void __init start_pit(void)
> +{
> +       if (request_irq
> +           (PIT_IRQ, timer_interrupt, IRQF_TIMER, "pit", NULL))
> +               printk("irq_desc[%p] : fail to register\n", 
> &irq_desc[PIT_IRQ]);

pr_err()

> --- /dev/null   2015-06-06 04:15:40.702718005 -0500
> +++ linux/arch/sh/include/asm/board-0pf.h       2015-06-17 21:20:05.825356382 
> -0500
> @@ -0,0 +1,247 @@
> +#ifndef SGM_BOARD_H
> +#define SGM_BOARD_H

Strange include guard name, not matching file name.

> +#define sys_IntTable (*(unsigned*)0x0)

NULL? Besides, it seems unused?

> +#define SIC_ENMI       ((unsigned int) 0x1<<31)        /* Emulate NMI */

"BIT(31)" (more below)

> +#if 0

No #ifdef'ed-out definitions please

> --- /dev/null   2015-06-06 04:15:40.702718005 -0500
> +++ linux/arch/sh/kernel/cpu/sh2/clock-0pf.c    2015-06-17 21:20:05.825356382 
> -0500
> @@ -0,0 +1,80 @@

> +int __init arch_clk_init()
> +{
> +       int ret;
> +
> +       printk("%s(): 0PF Clock init...\n", __func__);

pr_debug()?

> --- /dev/null   2015-06-06 04:15:40.702718005 -0500
> +++ linux/arch/sh/kernel/cpu/sh2/setup-0pf.c    2015-06-17 21:20:05.825356382 
> -0500
> @@ -0,0 +1,82 @@

> +#if defined(CONFIG_SERIAL_UARTLITE_0PF)
> +static struct resource shj_uartlite_resources[] = {
> +       [0] = DEFINE_RES_MEM(0xABCD0100, 16),
> +       [1] = DEFINE_RES_IRQ(0x12),
> +
> +       [2] = DEFINE_RES_MEM(0xABCD0300, 16),
> +       [3] = DEFINE_RES_IRQ(0x17),
> +
> +       [4] = DEFINE_RES_MEM(0xABCD0400, 16),
> +       [5] = DEFINE_RES_IRQ(0x13),
> +};
> +
> +static struct platform_device shj_uartlite_device[] = {
> +       [0] = { .name = "uartlite", .id = 0 },
> +       [1] = { .name = "uartlite", .id = 1 },
> +       [2] = { .name = "uartlite", .id = 2 },
> +};

Typically we have only the driver depend on CONFIG_XXX, not the
platform code that creates the platform device.

> +#endif
> +
> +/*****************************************************************************
> + *  0PF FPGA platform devices
> + 
> ****************************************************************************/
> +static struct platform_device *shj_devices[] __initdata = {
> +#if defined(CONFIG_SERIAL_UARTLITE_0PF)

Idem ditto

> +       shj_uartlite_device,
> +       shj_uartlite_device + 1,
> +       shj_uartlite_device + 2,
> +#endif
> +};
> +
> +static int __init shj_devices_setup(void)
> +{
> +       int i;
> +       pr_info("%s(): registering device resources\n", __func__);
> +
> +#if defined(CONFIG_SERIAL_UARTLITE_0PF)

idem ditto

> +       for (i = 0; i < ARRAY_SIZE(shj_uartlite_device); i++) {
> +               printk("Register UARTLITE resources %d\n", i);
> +               if (platform_device_add_resources(
> +                               shj_uartlite_device + i,
> +                               shj_uartlite_resources + 2 * i,
> +                               2))
> +                       pr_err("Failed to set uartlite %d IRQ and MEM\n", i);
> +
> +       }
> +#endif
> +       platform_add_devices(shj_devices, ARRAY_SIZE(shj_devices));
> +
> +       return 0;
> +}

> --- /dev/null   2015-06-06 04:15:40.702718005 -0500
> +++ linux/arch/sh/configs/0pf_defconfig 2015-06-17 21:47:46.869366542 -0500
> @@ -0,0 +1,945 @@

I may be mistaken, but this doesn't look like a minimal defconfig as
created by "make savedefconfig".

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to