int __init dalmore_panel_init(void) { int err = 0; struct resource __maybe_unused *res; struct platform_device *phost1x; sd_settings = dalmore_sd_settings; dalmore_panel_select(); #ifdef CONFIG_TEGRA_NVMAP dalmore_carveouts[1].base = tegra_carveout_start; dalmore_carveouts[1].size = tegra_carveout_size; dalmore_carveouts[2].base = tegra_vpr_start; dalmore_carveouts[2].size = tegra_vpr_size; err = platform_device_register(&dalmore_nvmap_device); if (err) { pr_err("nvmap device registration failed\n"); return err; } #endif phost1x = dalmore_host1x_init(); if (!phost1x) { pr_err("host1x devices registration failed\n"); return -EINVAL; } gpio_request(dalmore_hdmi_hpd, "hdmi_hpd"); gpio_direction_input(dalmore_hdmi_hpd); res = platform_get_resource_byname(&dalmore_disp1_device, IORESOURCE_MEM, "fbmem"); res->start = tegra_fb_start; res->end = tegra_fb_start + tegra_fb_size - 1; /* Copy the bootloader fb to the fb. */ __tegra_move_framebuffer(&dalmore_nvmap_device, tegra_fb_start, tegra_bootloader_fb_start, min(tegra_fb_size, tegra_bootloader_fb_size)); /* * If the bootloader fb2 is valid, copy it to the fb2, or else * clear fb2 to avoid garbage on dispaly2. */ if (tegra_bootloader_fb2_size) tegra_move_framebuffer(tegra_fb2_start, tegra_bootloader_fb2_start, min(tegra_fb2_size, tegra_bootloader_fb2_size)); else tegra_clear_framebuffer(tegra_fb2_start, tegra_fb2_size); res = platform_get_resource_byname(&dalmore_disp2_device, IORESOURCE_MEM, "fbmem"); res->start = tegra_fb2_start; res->end = tegra_fb2_start + tegra_fb2_size - 1; dalmore_disp1_device.dev.parent = &phost1x->dev; err = platform_device_register(&dalmore_disp1_device); if (err) { pr_err("disp1 device registration failed\n"); return err; } dalmore_disp2_device.dev.parent = &phost1x->dev; err = platform_device_register(&dalmore_disp2_device); if (err) { pr_err("disp2 device registration failed\n"); return err; } #ifdef CONFIG_TEGRA_NVAVP nvavp_device.dev.parent = &phost1x->dev; err = platform_device_register(&nvavp_device); if (err) { pr_err("nvavp device registration failed\n"); return err; } #endif return err; }
int __init pluto_panel_init(void) { int err = 0; struct resource __maybe_unused *res; struct platform_device *phost1x; sd_settings = pluto_sd_settings; #ifdef CONFIG_BACKLIGHT_1_WIRE_MODE tps61165_pin_init(); #endif pluto_panel_select(); err = gpio_request(pluto_LCD_1V8_EN, "LCD_1V8EN"); if(err < 0){ pr_err("[shangzhi]panel LCD 1v8 enable gpio request failed\n"); } gpio_direction_output(pluto_LCD_1V8_EN,1); #ifdef CONFIG_TEGRA_NVMAP pluto_carveouts[1].base = tegra_carveout_start; pluto_carveouts[1].size = tegra_carveout_size; pluto_carveouts[2].base = tegra_vpr_start; pluto_carveouts[2].size = tegra_vpr_size; err = platform_device_register(&pluto_nvmap_device); if (err) { pr_err("nvmap device registration failed\n"); return err; } #endif gpio_request(pluto_hdmi_hpd, "hdmi_hpd"); gpio_direction_input(pluto_hdmi_hpd); phost1x = pluto_host1x_init(); if (!phost1x) { pr_err("host1x devices registration failed\n"); return -EINVAL; } res = platform_get_resource_byname(&pluto_disp1_device, IORESOURCE_MEM, "fbmem"); res->start = tegra_fb_start; res->end = tegra_fb_start + tegra_fb_size - 1; /* Copy the bootloader fb to the fb. */ __tegra_move_framebuffer(&pluto_nvmap_device, tegra_fb_start, tegra_bootloader_fb_start, min(tegra_fb_size, tegra_bootloader_fb_size)); /* * If the bootloader fb2 is valid, copy it to the fb2, or else * clear fb2 to avoid garbage on dispaly2. */ if (tegra_bootloader_fb2_size) tegra_move_framebuffer(tegra_fb2_start, tegra_bootloader_fb2_start, min(tegra_fb2_size, tegra_bootloader_fb2_size)); else tegra_clear_framebuffer(tegra_fb2_start, tegra_fb2_size); res = platform_get_resource_byname(&pluto_disp2_device, IORESOURCE_MEM, "fbmem"); res->start = tegra_fb2_start; res->end = tegra_fb2_start + tegra_fb2_size - 1; pluto_disp1_device.dev.parent = &phost1x->dev; err = platform_device_register(&pluto_disp1_device); if (err) { pr_err("disp1 device registration failed\n"); return err; } pluto_disp2_device.dev.parent = &phost1x->dev; #if 0 err = platform_device_register(&pluto_disp2_device); if (err) { pr_err("disp2 device registration failed\n"); return err; } #endif #if CONFIG_ESD_READ_TE gpio_request(TEGRA_GPIO_PR6, "TE-irq"); gpio_direction_input(TEGRA_GPIO_PR6); if (request_irq(gpio_to_irq(TEGRA_GPIO_PR6), te_signal_irq_handler, IRQF_TRIGGER_RISING, "TE-Signal", NULL) < 0) { printk("Failed to request TE IRQ!\n"); } setup_timer(&te_watchdog_timer, te_watchdog_timeout, 0); mod_timer(&te_watchdog_timer, jiffies + msecs_to_jiffies(30000)); #endif #if defined(CONFIG_LEDS_PWM) err = platform_device_register(&tegra_pwfm0_device); if (err) { pr_err("led pwm device registration failed"); return err; } #endif #ifdef CONFIG_TEGRA_NVAVP nvavp_device.dev.parent = &phost1x->dev; err = platform_device_register(&nvavp_device); if (err) { pr_err("nvavp device registration failed\n"); return err; } #endif return err; }