static int __init merisc_init(void) { detect_merisc_board_id(); printk(KERN_NOTICE "BOARD: Merisc %s revision %s\n", merisc_model(), merisc_revision()); /* Reserve pins for SDRAM */ at32_reserve_pin(GPIO_PIOE_BASE, ATMEL_EBI_PE_DATA_ALL | (1 << 26)); if (merisc_board_id >= 1) at32_map_usart(2, 2, 0); at32_add_device_usart(0); at32_add_device_usart(1); if (merisc_board_id >= 1) at32_add_device_usart(2); at32_add_device_usart(3); set_hw_addr(at32_add_device_eth(0, ð_data[0])); /* ADS7846 PENIRQ */ if (merisc_board_id == 0) { ads7846_data.get_pendown_state = ads7846_get_pendown_state_PB26; at32_select_periph(GPIO_PIOB_BASE, 1 << 26, GPIO_PERIPH_A, AT32_GPIOF_PULLUP); spi0_board_info[0].irq = AT32_EXTINT(1); } else { ads7846_data.get_pendown_state = ads7846_get_pendown_state_PB28; at32_select_periph(GPIO_PIOB_BASE, 1 << 28, GPIO_PERIPH_A, AT32_GPIOF_PULLUP); spi0_board_info[0].irq = AT32_EXTINT(3); } /* ADS7846 busy pin */ at32_select_gpio(GPIO_PIN_PA(4), AT32_GPIOF_PULLUP); at32_add_device_spi(0, spi0_board_info, ARRAY_SIZE(spi0_board_info)); at32_add_device_mci(0, &mci0_data); #ifdef CONFIG_LEDS_ATMEL_PWM at32_add_device_pwm((1 << 0) | (1 << 2)); platform_device_register(&stk_pwm_led_dev); #else at32_add_device_pwm((1 << 2)); #endif at32_select_gpio(i2c_gpio_data.sda_pin, AT32_GPIOF_MULTIDRV | AT32_GPIOF_OUTPUT | AT32_GPIOF_HIGH); at32_select_gpio(i2c_gpio_data.scl_pin, AT32_GPIOF_MULTIDRV | AT32_GPIOF_OUTPUT | AT32_GPIOF_HIGH); platform_device_register(&i2c_gpio_device); i2c_register_board_info(0, i2c_info, ARRAY_SIZE(i2c_info)); return 0; }
static int __init hammerhead_init(void) { /* * Hammerhead uses 32-bit SDRAM interface. Reserve the * SDRAM-specific pins so that nobody messes with them. */ at32_reserve_pin(GPIO_PIOE_BASE, ATMEL_EBI_PE_DATA_ALL); at32_add_device_usart(0); /* Reserve PB29 (GCLK3). This pin is used as clock source * for ETH PHY (25MHz). GCLK3 setup is done by U-Boot. */ at32_reserve_pin(GPIO_PIOB_BASE, (1<<29)); /* * Hammerhead uses only one ethernet port, so we don't set * address of second port */ set_hw_addr(at32_add_device_eth(0, ð_data[0])); #ifdef CONFIG_BOARD_HAMMERHEAD_FPGA at32_add_device_hh_fpga(); #endif at32_add_device_mci(0, &mci0_data); #ifdef CONFIG_BOARD_HAMMERHEAD_USB at32_add_device_usba(0, NULL); #endif #ifdef CONFIG_BOARD_HAMMERHEAD_LCD at32_add_device_lcdc(0, &hammerhead_lcdc_data, fbmem_start, fbmem_size, ATMEL_LCDC_PRI_24BIT); #endif at32_select_gpio(i2c_gpio_data.sda_pin, AT32_GPIOF_MULTIDRV | AT32_GPIOF_OUTPUT | AT32_GPIOF_HIGH); at32_select_gpio(i2c_gpio_data.scl_pin, AT32_GPIOF_MULTIDRV | AT32_GPIOF_OUTPUT | AT32_GPIOF_HIGH); platform_device_register(&i2c_gpio_device); i2c_register_board_info(0, i2c_info, ARRAY_SIZE(i2c_info)); #ifdef CONFIG_BOARD_HAMMERHEAD_SND at32_add_device_ac97c(0, &ac97c_data, AC97C_BOTH); #endif /* Select the Touchscreen interrupt pin mode */ at32_select_periph(GPIO_PIOB_BASE, 0x08000000, GPIO_PERIPH_A, 0); return 0; }
static int dallas_controller_init(void) { struct pbrc_initparam_t s_initparam; struct net_device *dev; printk("Dallas controller initializing, using device %s.\n", dallas_uni); if(0 != dallas_controller_init_device()) { printk("Failed to init device.\n"); return(-1); } #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)) { extern struct net init_net; //linux global variable dev = (struct net_device *) dev_get_by_name(&init_net, dallas_uni); } #else dev = dev_get_by_name(dallas_uni); #endif memset(s_initparam.dev_string,0,10); memcpy(s_initparam.dev_string, dallas_uni, strlen(dallas_uni)); memcpy(s_initparam.local_mac, dev->dev_addr, sizeof(dev->dev_addr)); /*MAC address of local network device*/ if (set_hw_addr(s_initparam.dallas_mac, dallas_mac)) { /*MAC address of Dallas device*/ return(-1); } /* pbrc protocol kernel thread */ if(pbrc_init(&s_initparam)) { printk("Failed to init PBRC protocol!\n"); dallas_controller_shutdown_device(); return(-1); } return 0; }