xref: /titanic_50/usr/src/cmd/hal/tools/sunos/hal-system-lcd-set-brightness-sunos.c (revision d2ec54f7875f7e05edd56195adbeb593c947763f)
1*d2ec54f7Sphitran /***************************************************************************
2*d2ec54f7Sphitran  *
3*d2ec54f7Sphitran  * hal-system-lcd-set-brightness-sunos.c : Set LCD brightness
4*d2ec54f7Sphitran  *
5*d2ec54f7Sphitran  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
6*d2ec54f7Sphitran  * Use is subject to license terms.
7*d2ec54f7Sphitran  *
8*d2ec54f7Sphitran  * Licensed under the Academic Free License version 2.1
9*d2ec54f7Sphitran  *
10*d2ec54f7Sphitran  **************************************************************************/
11*d2ec54f7Sphitran 
12*d2ec54f7Sphitran #pragma ident	"%Z%%M%	%I%	%E% SMI"
13*d2ec54f7Sphitran 
14*d2ec54f7Sphitran #ifdef HAVE_CONFIG_H
15*d2ec54f7Sphitran #include <config.h>
16*d2ec54f7Sphitran #endif
17*d2ec54f7Sphitran 
18*d2ec54f7Sphitran #include <errno.h>
19*d2ec54f7Sphitran #include <string.h>
20*d2ec54f7Sphitran #include <strings.h>
21*d2ec54f7Sphitran #include <ctype.h>
22*d2ec54f7Sphitran #include <stdlib.h>
23*d2ec54f7Sphitran #include <stdio.h>
24*d2ec54f7Sphitran #include <sys/ioctl.h>
25*d2ec54f7Sphitran #include <fcntl.h>
26*d2ec54f7Sphitran #include <unistd.h>
27*d2ec54f7Sphitran #include <sys/acpi_drv.h>
28*d2ec54f7Sphitran #include "../../hald/util.h"
29*d2ec54f7Sphitran 
30*d2ec54f7Sphitran int
main(int argc,char * argv[])31*d2ec54f7Sphitran main(int argc, char *argv[])
32*d2ec54f7Sphitran {
33*d2ec54f7Sphitran 	char arg[10];
34*d2ec54f7Sphitran 	int level;
35*d2ec54f7Sphitran 	int fd = -1;
36*d2ec54f7Sphitran 	char *udi;
37*d2ec54f7Sphitran 	char device_file[HAL_PATH_MAX] = "/devices";
38*d2ec54f7Sphitran 	char *devfs_path;
39*d2ec54f7Sphitran 
40*d2ec54f7Sphitran 	if ((udi = getenv("UDI")) == NULL) {
41*d2ec54f7Sphitran 		return (1);
42*d2ec54f7Sphitran 	}
43*d2ec54f7Sphitran 	if ((devfs_path = getenv("HAL_PROP_SOLARIS_DEVFS_PATH")) == NULL) {
44*d2ec54f7Sphitran 		return (1);
45*d2ec54f7Sphitran 	}
46*d2ec54f7Sphitran 	strlcat(device_file, devfs_path, HAL_PATH_MAX);
47*d2ec54f7Sphitran 	fprintf(stderr, "Setting brightness on %s (udi=%s)",
48*d2ec54f7Sphitran 	    device_file, udi);
49*d2ec54f7Sphitran 
50*d2ec54f7Sphitran 	if ((fd = open(device_file, O_RDONLY | O_NONBLOCK)) < 0) {
51*d2ec54f7Sphitran 		fprintf(stderr, "Cannot open %s: %s", device_file,
52*d2ec54f7Sphitran 		    strerror(errno));
53*d2ec54f7Sphitran 		return (1);
54*d2ec54f7Sphitran 	}
55*d2ec54f7Sphitran 	if (fgets(arg, sizeof (arg), stdin)) {
56*d2ec54f7Sphitran 		level = atoi(arg);
57*d2ec54f7Sphitran 	}
58*d2ec54f7Sphitran 	if (ioctl(fd, ACPI_DRV_IOC_SET_BRIGHTNESS, &level) < 0) {
59*d2ec54f7Sphitran 		close(fd);
60*d2ec54f7Sphitran 		return (1);
61*d2ec54f7Sphitran 	} else {
62*d2ec54f7Sphitran 		close(fd);
63*d2ec54f7Sphitran 		return (0);
64*d2ec54f7Sphitran 	}
65*d2ec54f7Sphitran }
66