On 11/19/2012 10:54 PM, [email protected] wrote:
> From: Kyuho Choi <[email protected]>
> 
> This patch add support for Insignal ORIGEN4QUAD board.
> ORIGEN4QUAD board based on Samsung Exynos4412 SoC.
> 
> Signed-off-by: Kyuho Choi <[email protected]>
> ---
>  arch/arm/mach-exynos/Kconfig       |    1 +
>  arch/arm/mach-exynos/mach-origen.c |   74 +++++++++++++++++++++++++++--------
>  2 files changed, 58 insertions(+), 17 deletions(-)
> 

Since Origen and Origen4Quad boards have different peripherals
(different pmic chip, touch/audio on different I2C bus etc.), how do you
plan to add them to mach-origen.c?


> diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig
> index bb3b09a..0b8ccd3 100644
> --- a/arch/arm/mach-exynos/Kconfig
> +++ b/arch/arm/mach-exynos/Kconfig
> @@ -324,6 +324,7 @@ config MACH_NURI
>  config MACH_ORIGEN
>       bool "ORIGEN"
>       select CPU_EXYNOS4210
> +     select SOC_EXYNOS4412
>       select EXYNOS4_DEV_USB_OHCI
>       select EXYNOS4_SETUP_FIMD0
>       select EXYNOS4_SETUP_SDHCI
> diff --git a/arch/arm/mach-exynos/mach-origen.c 
> b/arch/arm/mach-exynos/mach-origen.c
> index e6f4191..2839724 100644
> --- a/arch/arm/mach-exynos/mach-origen.c
> +++ b/arch/arm/mach-exynos/mach-origen.c
> @@ -1,6 +1,6 @@
>  /* linux/arch/arm/mach-exynos4/mach-origen.c
>   *
> - * Copyright (c) 2011 Insignal Co., Ltd.
> + * Copyright (c) 2011-2012 Insignal Co., Ltd.
>   *           http://www.insignal.co.kr/
>   *
>   * This program is free software; you can redistribute it and/or modify
> @@ -771,19 +771,36 @@ static void __init origen_reserve(void)
>       s5p_mfc_reserve_mem(0x43000000, 8 << 20, 0x51000000, 8 << 20);
>  }
>  
> -static void __init origen_machine_init(void)
> +static int __init origen4quad_i2c_init(void)
>  {
> -     origen_power_init();
> +     /*
> +      * Origen4Quad has weaknees drive strength in i2c channel 3.
> +      * thus here setup i2c3's drvstr for Origen4Quad.
> +      */
> +     s5p_gpio_set_drvstr(EXYNOS4_GPA1(2), 3);
> +     s5p_gpio_set_drvstr(EXYNOS4_GPA1(3), 3);
> +     return 0;
> +}
>  
> -     s3c_i2c0_set_platdata(NULL);
> -     i2c_register_board_info(0, i2c0_devs, ARRAY_SIZE(i2c0_devs));
> +static int __init origen4quad_usb_init(void)
> +{
> +     /* USB HUB controller's hub reset pin setup for Origen4Quad. */
> +     gpio_request(EXYNOS4_GPX3(5), "GPX3");
> +     gpio_direction_output(EXYNOS4_GPX3(5), 1);
> +     gpio_set_value(EXYNOS4_GPX3(5), S3C_GPIO_PULL_UP);
> +     gpio_free(EXYNOS4_GPX3(5));
> +     return 0;
> +}
>  
> +static void __init origen_machine_init(void)
> +{
>       /*
> -      * Since sdhci instance 2 can contain a bootable media,
> -      * sdhci instance 0 is registered after instance 2.
> +      * Common initialize code for ORIGEN and Origen4Quad.
>        */
> +     s3c_i2c0_set_platdata(NULL);
> +     i2c_register_board_info(0, i2c0_devs, ARRAY_SIZE(i2c0_devs));
> +
>       s3c_sdhci2_set_platdata(&origen_hsmmc2_pdata);
> -     s3c_sdhci0_set_platdata(&origen_hsmmc0_pdata);
>  
>       origen_ehci_init();
>       origen_ohci_init();
> @@ -793,22 +810,45 @@ static void __init origen_machine_init(void)
>       s5p_i2c_hdmiphy_set_platdata(NULL);
>       s5p_hdmi_set_platdata(&hdmiphy_info, NULL, 0);
>  
> -#ifdef CONFIG_DRM_EXYNOS
> -     s5p_device_fimd0.dev.platform_data = &drm_fimd_pdata;
> -     exynos4_fimd0_gpio_setup_24bpp();
> -#else
> -     s5p_fimd0_set_platdata(&origen_lcd_pdata);
> -#endif
> +     pwm_add_table(origen_pwm_lookup, ARRAY_SIZE(origen_pwm_lookup));
>  
>       platform_add_devices(origen_devices, ARRAY_SIZE(origen_devices));
>  
> -     pwm_add_table(origen_pwm_lookup, ARRAY_SIZE(origen_pwm_lookup));
> -     samsung_bl_set(&origen_bl_gpio_info, &origen_bl_data);
> +     if (!soc_is_exynos4210()) {
> +             /*
> +              * In case of soc_is_4210(),
> +              * Machine initialize for Origen.
> +              */
>  
> -     origen_bt_setup();
> +             origen_power_init();
> +
> +             /*
> +              * Since sdhci instance 2 can contain a bootable media,
> +              * sdhci instance 0 is registered after instance 2.
> +              */
> +             s3c_sdhci0_set_platdata(&origen_hsmmc0_pdata);
> +
> +#ifdef CONFIG_DRM_EXYNOS
> +             s5p_device_fimd0.dev.platform_data = &drm_fimd_pdata;
> +             exynos4_fimd0_gpio_setup_24bpp();
> +#else
> +             s5p_fimd0_set_platdata(&origen_lcd_pdata);
> +#endif
> +             samsung_bl_set(&origen_bl_gpio_info, &origen_bl_data);
> +
> +             origen_bt_setup();
> +     } else{
> +             /*
> +              * In case of soc_is_4412(),
> +              * Machine initialize for Origen4Quad.
> +              */
> +             origen4quad_i2c_init();
> +             origen4quad_usb_init();
> +     }
>  }
>  
>  MACHINE_START(ORIGEN, "ORIGEN")
> +     /* Maintainer: Kyuho Choi <[email protected]> */
>       /* Maintainer: JeongHyeon Kim <[email protected]> */
>       .atag_offset    = 0x100,
>       .smp            = smp_ops(exynos_smp_ops),
> 


-- 
Tushar Behera
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to