Mini210/kernel

Page last edited 3,086 days ago
From FriendlyARM
Jump to navigation Jump to search

Introduction[edit | edit source]

The original kernel delivered by FriendlyARM comes with some modules to handle peripherals. I decided to get rid of those modules, especially if they are closed source.

How to add LEDs support in the kernel[edit | edit source]

BSP file modification[edit | edit source]

The original BSP provided by FriendlyARM comes with no LEDs support. LEDs are handled by a kernel module instead. I decided to add LEDs support to the BSP to be able to get HeartBeat, NAND and MMC triggers light the LEDs. I took board-omap4panda.c from PandaBoard as an example, and also looked at how it was done on Pengutronix BSP.

You have to declare the LEDs and affect them to the GPIO pins.

...
#if defined(CONFIG_S5PV210_SETUP_IDE)
static struct s3c_ide_platdata mini210_ide_pdata __initdata = {
               .setup_gpio		= s5pv210_ide_setup_gpio,
};
#endif
/* GPIO LED */
#if defined(CONFIG_LEDS_GPIO) || defined(CONFIG_LEDS_GPIO_MODULE)
#include <linux/leds.h>
static struct gpio_led mini210_leds[] = {
       {
               .name = "led1",
               .default_trigger = "heartbeat",
               .gpio = S5PV210_GPJ2(0),
               .active_low = 1,
       },
       {
               .name = "led2",
               .default_trigger = "nand-disk",
               .gpio = S5PV210_GPJ2(1),
               .active_low = 1,
       },
       {
               .name = "led3",
               .default_trigger = "mmc0",
               .gpio = S5PV210_GPJ2(2),
               .active_low = 1,
       },
       {
               .name = "led4",
               .default_trigger = "",
               .gpio = S5PV210_GPJ2(3),
               .active_low = 1,
       },
};
static struct gpio_led_platform_data mini210_leds_info = {
       .num_leds	= ARRAY_SIZE(mini210_leds),
       .leds		= mini210_leds,
};
static struct platform_device leds_mini210 = {
       .name		= "leds-gpio",
       .id		= -1,
       .dev		= {
       .platform_data	= &mini210_leds_info,
       },
};
#endif /* CONFIG_LEDS_GPIO */
#ifdef CONFIG_KEYBOARD_GPIO
static struct gpio_keys_button gpio_buttons[] = {
       {
               .gpio		= S5PV210_GPH2(0),
...
...
...
static struct platform_device *mini210_devices[] __initdata = {
       &s3c_device_adc,
       &s3c_device_cfcon,
       ...
       ...
	&s5p_device_hpd,
    #endif
    #if defined(CONFIG_LEDS_GPIO) || defined(CONFIG_LEDS_GPIO_MODULE)
	&leds_mini210,
    #endif
};
#ifdef CONFIG_VIDEO_S5K4EA
/* Set for MIPI-CSI Camera module Power Enable */
static int mini210_mipi_cam_pwr_en(int enabled)
{
     ...

Kernel configuration[edit | edit source]

Then you have to enable LEDs handling in the kernel configuration, and also activate the corresponding triggers.

How to use LEDs from userspace[edit | edit source]

How to add backlight support to the kernel[edit | edit source]

How to add GPIO support to the kernel[edit | edit source]

How to replace closed source NAND driver by Reggie's opensource one[edit | edit source]

How to get Marvell 8686 WiFi working with opensource drivers[edit | edit source]

How to get WM8960 audio codec working[edit | edit source]

How to get capacitive touchscreen working with opensource drivers[edit | edit source]

How to add CAN support[edit | edit source]

How to add ADXL345 support[edit | edit source]

Video rotator[edit | edit source]

I2C[edit | edit source]

Camera[edit | edit source]

Add a new screen[edit | edit source]

DS18B20[edit | edit source]

1 wire Resistive touchscreen[edit | edit source]

Samsung resistive touchscreen[edit | edit source]

friendlyArm ftp site (FTP) If you haven't burnt superboot.bin to your SD card, [http://armworks.cc/index.php?title=Mini210S_Burn_rootfs_to_Nand#Burning_...