Skip to content

Commit

Permalink
[ARM] S3C2410: Add sysfs attribute for serial driver clock source
Browse files Browse the repository at this point in the history
Add attribute to show the current clock source for the serial
driver and remove old and annoying debug output.

Note, this only currently shows the current source with a
"* " prefix to indicate that it is the current source. Future
code will list all the clock sources, with the non-selected
one with "  " prefix.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
PATCH FOLLOWS
KernelVersion: 2.6.26-rc3
  • Loading branch information
Ben Dooks committed Jul 3, 2008
1 parent 9cf345e commit ea304e3
Showing 1 changed file with 20 additions and 11 deletions.
31 changes: 20 additions & 11 deletions drivers/serial/s3c2410.c
Original file line number Diff line number Diff line change
Expand Up @@ -685,11 +685,6 @@ static unsigned int s3c24xx_serial_getclk(struct uart_port *port,
int calc_deviation;

for (sptr = res; sptr < resptr; sptr++) {
printk(KERN_DEBUG
"found clk %p (%s) quot %d, calc %d\n",
sptr->clksrc, sptr->clksrc->name,
sptr->quot, sptr->calc);

calc_deviation = baud - sptr->calc;
if (calc_deviation < 0)
calc_deviation = -calc_deviation;
Expand All @@ -699,13 +694,8 @@ static unsigned int s3c24xx_serial_getclk(struct uart_port *port,
deviation = calc_deviation;
}
}

printk(KERN_DEBUG "best %p (deviation %d)\n", best, deviation);
}

printk(KERN_DEBUG "selected clock %p (%s) quot %d, calc %d\n",
best->clksrc, best->clksrc->name, best->quot, best->calc);

/* store results to pass back */

*clksrc = best->clksrc;
Expand Down Expand Up @@ -1058,6 +1048,18 @@ static int s3c24xx_serial_init_port(struct s3c24xx_uart_port *ourport,
return 0;
}

static ssize_t s3c24xx_serial_show_clksrc(struct device *dev,
struct device_attribute *attr,
char *buf)
{
struct uart_port *port = s3c24xx_dev_to_port(dev);
struct s3c24xx_uart_port *ourport = to_ourport(port);

return snprintf(buf, PAGE_SIZE, "* %s\n", ourport->clksrc->name);
}

static DEVICE_ATTR(clock_source, S_IRUGO, s3c24xx_serial_show_clksrc, NULL);

/* Device driver serial port probe */

static int probe_index = 0;
Expand All @@ -1083,6 +1085,11 @@ static int s3c24xx_serial_probe(struct platform_device *dev,
uart_add_one_port(&s3c24xx_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__);
}

return 0;

probe_err:
Expand All @@ -1093,8 +1100,10 @@ static int s3c24xx_serial_remove(struct platform_device *dev)
{
struct uart_port *port = s3c24xx_dev_to_port(&dev->dev);

if (port)
if (port) {
device_remove_file(&dev->dev, &dev_attr_clock_source);
uart_remove_one_port(&s3c24xx_uart_drv, port);
}

return 0;
}
Expand Down

0 comments on commit ea304e3

Please sign in to comment.