static int s3c_serial_probe(struct device_d *dev) { struct resource *iores; struct s3c_uart *priv; struct console_device *cdev; priv = xzalloc(sizeof(struct s3c_uart)); cdev = &priv->cdev; iores = dev_request_mem_resource(dev, 0); if (IS_ERR(iores)) return PTR_ERR(iores); priv->regs = IOMEM(iores->start); dev->priv = priv; cdev->dev = dev; cdev->tstc = s3c_serial_tstc; cdev->putc = s3c_serial_putc; cdev->getc = s3c_serial_getc; cdev->flush = s3c_serial_flush; cdev->setbrg = s3c_serial_setbaudrate; s3c_serial_init_port(cdev); /* Enable UART */ console_register(cdev); return 0; }
int s3c_serial_probe(struct platform_device *dev, struct s3c_uart_info *info) { struct s3c_uart_port *ourport; int ret; dbg("s3c_serial_probe(%p, %p) %d\n", dev, info, probe_index); ourport = &s3c_serial_ports[probe_index]; probe_index++; dbg("%s: initialising port %p...\n", __func__, ourport); ret = s3c_serial_init_port(ourport, info, dev); if (ret < 0) goto probe_err; dbg("%s: adding port\n", __func__); uart_add_one_port(&s3c_uart_drv, &ourport->port); platform_set_drvdata(dev, &ourport->port); ret = device_create_file(&dev->dev, &dev_attr_clock_source); if (ret < 0) printk(KERN_ERR "%s: failed to add clksrc attr.\n", __func__); ret = s3c_serial_cpufreq_register(ourport); if (ret < 0) dev_err(&dev->dev, "failed to add cpufreq notifier\n"); return 0; probe_err: return ret; }
static int s3c6400_serial_probe(struct platform_device *dev, struct s3c_uart_info *info) { struct s3c_uart_port *ourport; int ret; dbg("s3c_serial_probe(%p) %d\n", dev, probe_index); ourport = &s3c_serial_ports[probe_index]; probe_index++; dbg("%s: initialising port %p...\n", __FUNCTION__, ourport); //ret = s3c_serial_init_port(ourport, &s3c_uart_inf, dev); ret = s3c_serial_init_port(ourport, info, dev); if (ret < 0) goto probe_err; dbg("%s: adding port\n", __FUNCTION__); uart_add_one_port(&s3c_uart_drv, &ourport->port); platform_set_drvdata(dev, &ourport->port); return 0; probe_err: return ret; }
static int s3c_serial_init_ports(struct s3c_uart_info *info) { struct s3c_uart_port *ptr = s3c_serial_ports; struct platform_device **platdev_ptr; int i; dbg("s3c_serial_init_ports: initialising ports...\n"); platdev_ptr = s3c_uart_devs; for (i = 0; i < CONFIG_SERIAL_SAMSUNG_UARTS; i++, ptr++, platdev_ptr++) { s3c_serial_init_port(ptr, info, *platdev_ptr); } return 0; }