예제 #1
0
static int __init tegra_uart_init(void)
{
	int ret;

	ret = uart_register_driver(&tegra_uart_driver);
	if (ret < 0) {
		pr_err("Could not register %s driver\n",
			tegra_uart_driver.driver_name);
		return ret;
	}

	ret = platform_driver_register(&tegra_uart_platform_driver);
	if (ret < 0) {
		pr_err("Uart platform driver register failed, e = %d\n", ret);
		uart_unregister_driver(&tegra_uart_driver);
		return ret;
	}
	return 0;
}
예제 #2
0
static int __init tctuart_init(void)
{
	int ret;
	
	printk("tct_uart: Tct UART driver\n");

	/* configure from hardware setup structures */
	tctuart_driver.nr = 1;
	tx_cts = 1;
	ret = uart_register_driver(&tctuart_driver);
	if( ret < 0 )
		return ret;

	ret = platform_driver_register(&tctuart_serial_driver);
	if( ret < 0 )
		uart_unregister_driver(&tctuart_driver);

	return ret;
}
static int __init msm_serial_init(void)
{
	int ret;

//SW2-5-1-MP-DbgCfgTool-00+[
#ifdef CONFIG_FIH_REMOVE_SERIAL_DYNAMICALLY
    struct clk *uart2_clk;
    if(!fih_read_uart_switch_from_smem()) {
	printk(KERN_INFO "msm_serial: Disable UART clock\n");
	gpio_tlmm_config(GPIO_CFG(51, 0, GPIO_CFG_INPUT, GPIO_CFG_NO_PULL, GPIO_CFG_2MA), GPIO_CFG_DISABLE);
	gpio_tlmm_config(GPIO_CFG(52, 0, GPIO_CFG_INPUT, GPIO_CFG_NO_PULL, GPIO_CFG_2MA), GPIO_CFG_DISABLE);
	uart2_clk = clk_get(&msm_device_uart2.dev, "uart_clk");        
	if(!IS_ERR(uart2_clk)){            
		clk_enable(uart2_clk);   //If clk_enable is not called, calling clk_disable will enter ram dump.            
		clk_disable(uart2_clk);        
	}
	#ifndef CONFIG_FIH_MODEM_REMOVE_UART2_CLK
	  /* Disable console suspend to guarantee there's no buffer copy delay after resume */
	  console_suspend_enabled = 0; //SW2-5-2-MP-DbgCfgTool-08+
	#endif /* CONFIG_FIH_MODEM_REMOVE_UART2_CLK */
	return 0; 
    }
    #ifndef CONFIG_FIH_MODEM_REMOVE_UART2_CLK
    /* Enable suspend console when UART clock is enable, it will buffer the kernel log, and emit it after resume
     * This can make sure DUT can enter suspend mode without interrupt */
    console_suspend_enabled = 1; //SW2-5-2-MP-DbgCfgTool-08+
    #endif /* CONFIG_FIH_MODEM_REMOVE_UART2_CLK */
#endif
//SW2-5-1-MP-DbgCftTool-00+]    

	ret = uart_register_driver(&msm_uart_driver);
	if (unlikely(ret))
		return ret;

	ret = platform_driver_probe(&msm_platform_driver, msm_serial_probe);
	if (unlikely(ret))
		uart_unregister_driver(&msm_uart_driver);

	printk(KERN_INFO "msm_serial: driver initialized\n");

	return ret;
}
예제 #4
0
static int __init pnx8xxx_serial_init(void)
{
	int ret;

#ifdef CONFIG_DEBUG_PRINTK
	printk(KERN_INFO "Serial: PNX8XXX driver\n");
#else
	;
#endif

	pnx8xxx_init_ports();

	ret = uart_register_driver(&pnx8xxx_reg);
	if (ret == 0) {
		ret = platform_driver_register(&pnx8xxx_serial_driver);
		if (ret)
			uart_unregister_driver(&pnx8xxx_reg);
	}
	return ret;
}
static int __init msm_serial_hsl_init(void)
{
	int ret;

	if (!enable)
		msm_hsl_uart_driver.cons = NULL;

	ret = uart_register_driver(&msm_hsl_uart_driver);
	if (unlikely(ret))
		return ret;

	ret = platform_driver_probe(&msm_hsl_platform_driver,
				    msm_serial_hsl_probe);
	if (unlikely(ret))
		uart_unregister_driver(&msm_hsl_uart_driver);

	printk(KERN_INFO "msm_serial_hsl: driver initialized\n");

	return ret;
}
예제 #6
0
static int __init bfin_serial_init(void)
{
	int ret;

	pr_info("Blackfin serial driver\n");

	ret = uart_register_driver(&bfin_serial_reg);
	if (ret) {
		pr_err("failed to register %s:%d\n",
			bfin_serial_reg.driver_name, ret);
	}

	ret = platform_driver_register(&bfin_serial_driver);
	if (ret) {
		pr_err("fail to register bfin uart\n");
		uart_unregister_driver(&bfin_serial_reg);
	}

	return ret;
}
예제 #7
0
static int msm_serial_hsl_init(void)
{
	int ret;

	ret = uart_register_driver(&msm_hsl_uart_driver);
	if (unlikely(ret))
		return ret;

	debug_base = debugfs_create_dir("msm_serial_hsl", NULL);
	if (IS_ERR_OR_NULL(debug_base))
		pr_err("%s():Cannot create debugfs dir\n", __func__);

	ret = platform_driver_register(&msm_hsl_platform_driver);
	if (unlikely(ret))
		uart_unregister_driver(&msm_hsl_uart_driver);

	printk(KERN_INFO "msm_serial_hsl: driver initialized\n");

	return ret;
}
예제 #8
0
static int __init tegra_uart_init(void)
{
	int ret;

	ret = uart_register_driver(&tegra_uart_driver);
	if (unlikely(ret)) {
		pr_err("Could not register %s driver\n",
			tegra_uart_driver.driver_name);
		return ret;
	}

	ret = platform_driver_register(&tegra_uart_platform_driver);
	if (unlikely(ret)) {
		pr_err("Could not register the UART platfrom driver\n");
		uart_unregister_driver(&tegra_uart_driver);
		return ret;
	}

	pr_info("Initialized tegra uart driver\n");
	return 0;
}
예제 #9
0
static int __init nlm_pcix_console_init(void)
{
  int result;

  if(xlr_get_pci_mode() == XLR_PCI_HOST_MODE){
    Message("Xlr Is configured in Host Mode - unloading console_over_pci_dev\n");
    return -EIO;
  }
  if(nlm_common_get_shared_mem_base_dev() == 0){
	ErrorMsg("Get Shared Mem Base Iz Zero");
	return -ENODEV;
  }

  Message ("Tiny serial driver");

  result = uart_register_driver(&nlm_pcix_console_reg);
  if (result){
    ErrorMsg("Cant Register Driver");
    return result;
  }

  result = uart_add_one_port(&nlm_pcix_console_reg, &nlm_pcix_console_port);
		
  if (result){
    ErrorMsg("Cant Add Port");	  
    uart_unregister_driver(&nlm_pcix_console_reg);
  }
  Message("Returning From init_module [%d]",result);

  Message("\nnlm_common_user_cmd @ %#x\n",(u32)nlm_common_user_cmd);
  Message("nlm_common_user_result @ %#x\n",(u32)nlm_common_user_result);
  Message("User_Cmd_Producer [%#x]\n",(u32)nlm_common_user_cmd_producer);
  Message("User_Cmd_Consumer [%#x]\n",(u32)nlm_common_user_cmd_consumer);
  Message("User_Result_Consumer [%#x]\n",(u32)nlm_common_user_result_consumer);
  Message("User_Result_Producer [%#x]\n",(u32)nlm_common_user_result_producer);

  init_waitqueue_head(&user_result_buffer);
  printk("\nConsole Over Pci Driver - Registered\n"); 
  return result;
}
예제 #10
0
파일: uartlite.c 프로젝트: vucan/linux
static int __init ulite_init(void)
{
    int ret;

    pr_debug("uartlite: calling uart_register_driver()\n");
    ret = uart_register_driver(&ulite_uart_driver);
    if (ret)
        goto err_uart;

    pr_debug("uartlite: calling platform_driver_register()\n");
    ret = platform_driver_register(&ulite_platform_driver);
    if (ret)
        goto err_plat;

    return 0;

err_plat:
    uart_unregister_driver(&ulite_uart_driver);
err_uart:
    pr_err("registering uartlite driver failed: err=%i", ret);
    return ret;
}
예제 #11
0
파일: max310x.c 프로젝트: Chong-Li/cse522
static int max310x_remove(struct device *dev)
{
	struct max310x_port *s = dev_get_drvdata(dev);
	int i;

#ifdef CONFIG_GPIOLIB
	gpiochip_remove(&s->gpio);
#endif

	for (i = 0; i < s->uart.nr; i++) {
		cancel_work_sync(&s->p[i].tx_work);
		cancel_work_sync(&s->p[i].md_work);
		uart_remove_one_port(&s->uart, &s->p[i].port);
		s->devtype->power(&s->p[i].port, 0);
	}

	mutex_destroy(&s->mutex);
	uart_unregister_driver(&s->uart);
	clk_disable_unprepare(s->clk);

	return 0;
}
예제 #12
0
static int __init uart00_init(void)
{
	int result;

	printk(KERN_INFO "Serial: UART00 driver $Revision: 1.35 $\n");

	printk(KERN_WARNING "serial_uart00:Using temporary major/minor pairs"
		" - these WILL change in the future\n");

	result = uart_register_driver(&uart00_reg);
	if (result)
		return result;
#ifdef CONFIG_ARCH_CAMELOT
	result = uart_add_one_port(&uart00_reg,&epxa10db_port);
#endif
	if (result)
		uart_unregister_driver(&uart00_reg);

#ifdef  CONFIG_PLD_HOTSWAP
	pldhs_register_driver(&uart00_pldhs_ops);
#endif
	return result;
}
예제 #13
0
/*
 * Register the driver, console driver and ports with the serial
 * core
 */
static int __init pmz_register(void)
{
	int i, rc;
	
	pmz_uart_reg.nr = pmz_ports_count;
	pmz_uart_reg.cons = PMACZILOG_CONSOLE;
	pmz_uart_reg.minor = 64;

	/*
	 * Register this driver with the serial core
	 */
	rc = uart_register_driver(&pmz_uart_reg);
	if (rc)
		return rc;

	/*
	 * Register each port with the serial core
	 */
	for (i = 0; i < pmz_ports_count; i++) {
		struct uart_pmac_port *uport = &pmz_ports[i];
		/* NULL node may happen on wallstreet */
		if (uport->node != NULL)
			rc = uart_add_one_port(&pmz_uart_reg, &uport->port);
		if (rc)
			goto err_out;
	}

	return 0;
err_out:
	while (i-- > 0) {
		struct uart_pmac_port *uport = &pmz_ports[i];
		uart_remove_one_port(&pmz_uart_reg, &uport->port);
	}
	uart_unregister_driver(&pmz_uart_reg);
	return rc;
}
예제 #14
0
static int __init msm_serial_hsl_init(void)
{
	int ret;

	/* Switch uartdebug by kernelflag */
	if (get_kernel_flag() & BIT1)
		msm_serial_hsl_enable = 1;

	if (!msm_serial_hsl_enable)
		msm_hsl_uart_driver.cons = NULL;

	ret = uart_register_driver(&msm_hsl_uart_driver);
	if (unlikely(ret))
		return ret;

	ret = platform_driver_probe(&msm_hsl_platform_driver,
				    msm_serial_hsl_probe);
	if (unlikely(ret))
		uart_unregister_driver(&msm_hsl_uart_driver);

	printk(KERN_INFO "msm_serial_hsl: driver initialized\n");

	return ret;
}
예제 #15
0
static void __exit cpm_uart_exit(void)
{
	of_unregister_platform_driver(&cpm_uart_driver);
	uart_unregister_driver(&cpm_reg);
}
예제 #16
0
static void __exit serial_omap_exit(void)
{
	platform_driver_unregister(&serial_omap_driver);
	uart_unregister_driver(&serial_omap_reg);
}
예제 #17
0
static void __exit mcf_exit(void)
{
	platform_driver_unregister(&mcf_platform_driver);
	uart_unregister_driver(&mcf_driver);
}
예제 #18
0
static void __exit etraxfs_uart_exit(void)
{
	platform_driver_unregister(&etraxfs_uart_platform_driver);
	uart_unregister_driver(&etraxfs_uart_driver);
}
예제 #19
0
static void __exit sa1100_serial_exit(void)
{
	platform_driver_unregister(&sa11x0_serial_driver);
	uart_unregister_driver(&sa1100_reg);
}
static void __exit stmp_appuart_exit()
{
	platform_driver_unregister(&stmp_appuart_driver);
	uart_unregister_driver(&stmp_appuart_uart);
}
예제 #21
0
static void __exit plser_exit(void)
{
    uart_unregister_driver(&plser_reg);
}
static void __exit mxs_auart_exit(void)
{
	platform_driver_unregister(&mxs_auart_driver);
	uart_unregister_driver(&auart_driver);
}
예제 #23
0
static void __exit cpm_uart_exit(void)
{
	driver_unregister(&cpm_scc_uart_driver);
	driver_unregister(&cpm_smc_uart_driver);
	uart_unregister_driver(&cpm_reg);
}
예제 #24
0
파일: serial-tegra.c 프로젝트: Lyude/linux
static void __exit tegra_uart_exit(void)
{
	pr_info("Unloading tegra uart driver\n");
	platform_driver_unregister(&tegra_uart_platform_driver);
	uart_unregister_driver(&tegra_uart_driver);
}
예제 #25
0
파일: uartlite.c 프로젝트: vucan/linux
static void __exit ulite_exit(void)
{
    platform_driver_unregister(&ulite_platform_driver);
    uart_unregister_driver(&ulite_uart_driver);
}
예제 #26
0
static void __exit s3c24xx_serial_modexit(void)
{
    uart_unregister_driver(&s3c24xx_uart_drv);
}
예제 #27
0
static void __exit pl010_exit(void)
{
	amba_driver_unregister(&pl010_driver);
	uart_unregister_driver(&amba_reg);
}
예제 #28
0
파일: st-asc.c 프로젝트: AlexShiLucky/linux
static void __exit asc_exit(void)
{
	platform_driver_unregister(&asc_serial_driver);
	uart_unregister_driver(&asc_uart_driver);
}
예제 #29
0
static void __exit jsm_exit_module(void)
{
	pci_unregister_driver(&jsm_driver);
	uart_unregister_driver(&jsm_uart_driver);
}
예제 #30
0
static int timbuart_probe(struct platform_device *dev)
{
	int err, irq;
	struct timbuart_port *uart;
	struct resource *iomem;

	dev_dbg(&dev->dev, "%s\n", __func__);

	uart = kzalloc(sizeof(*uart), GFP_KERNEL);
	if (!uart) {
		err = -EINVAL;
		goto err_mem;
	}

	uart->usedma = 0;

	uart->port.uartclk = 3250000 * 16;
	uart->port.fifosize  = TIMBUART_FIFO_SIZE;
	uart->port.regshift  = 2;
	uart->port.iotype  = UPIO_MEM;
	uart->port.ops = &timbuart_ops;
	uart->port.irq = 0;
	uart->port.flags = UPF_BOOT_AUTOCONF | UPF_IOREMAP;
	uart->port.line  = 0;
	uart->port.dev	= &dev->dev;

	iomem = platform_get_resource(dev, IORESOURCE_MEM, 0);
	if (!iomem) {
		err = -ENOMEM;
		goto err_register;
	}
	uart->port.mapbase = iomem->start;
	uart->port.membase = NULL;

	irq = platform_get_irq(dev, 0);
	if (irq < 0) {
		err = -EINVAL;
		goto err_register;
	}
	uart->port.irq = irq;

	tasklet_init(&uart->tasklet, timbuart_tasklet, (unsigned long)uart);

	err = uart_register_driver(&timbuart_driver);
	if (err)
		goto err_register;

	err = uart_add_one_port(&timbuart_driver, &uart->port);
	if (err)
		goto err_add_port;

	platform_set_drvdata(dev, uart);

	return 0;

err_add_port:
	uart_unregister_driver(&timbuart_driver);
err_register:
	kfree(uart);
err_mem:
	printk(KERN_ERR "timberdale: Failed to register Timberdale UART: %d\n",
		err);

	return err;
}