Hi all,
Im trying to develop a driver for my device, and its data bus can be 8, 16
or 32 bits. This information is passed through the device tree source.
My code is like this:
struct device_info_t {
void (*read)();
void (*write)();
};
static int __devinit device_probe()
{
prop = of_get_property(ofdev->node, "bus-width", &size);
device->bus_width = *prop;
switch (device->bus_width) {
case 8:
device->read = in_8;
device->write = out_8;
break;
case 16:
device->read = in_be16;
device->write = out_be16;
break;
case 32:
device->read = in_be32;
device->write = out_be32;
break;
default:
break;
}
}
Can someone point me some driver that is doing something similar to the
ideia shown above?
Or what Im doing wrong in my code? Cause Im getting erros (warnings) like:
cc1: warnings being treated as errors
drivers/dev_test.c:37: warning: function declaration isn't a prototype
drivers/dev_test.c:38: warning: function declaration isn't a prototype
drivers/dev_test.c: In function 'device_probe':
drivers/dev_test.c:113: warning: assignment from incompatible pointer
type
PS: Im using a MPC8349, linux kernel 2.6.26
Cheers,
--
Alemao
On Wed, 2009-08-26 at 10:25 -0300, Alemao wrote:
Hi all,
Im trying to develop a driver for my device, and its data bus can be 8, 16
or 32 bits. This information is passed through the device tree source.
My code is like this:
struct device_info_t {
void (*read)();
void (*write)();
};
static int __devinit device_probe()
{
prop = of_get_property(ofdev->node, "bus-width", &size);
device->bus_width = *prop;
switch (device->bus_width) {
case 8:
device->read = in_8;
device->write = out_8;
break;
case 16:
device->read = in_be16;
device->write = out_be16;
break;
case 32:
device->read = in_be32;
device->write = out_be32;
break;
default:
break;
}
}
Can someone point me some driver that is doing something similar to the
ideia shown above?
Or what Im doing wrong in my code? Cause Im getting erros (warnings) like:
cc1: warnings being treated as errors
drivers/dev_test.c:37: warning: function declaration isn't a prototype
drivers/dev_test.c:38: warning: function declaration isn't a prototype
drivers/dev_test.c: In function 'device_probe':
drivers/dev_test.c:113: warning: assignment from incompatible pointer
type
I'm not sure about the first two, you don't seem to have pasted all the
source, and you haven't given the line numbers.
The 3rd is probably because the prototype for in_8 etc. doesn't match
your structure.
cheers
On Thu, 27 Aug 2009 00:22:45 +1000 Michael Ellerman [off-list ref] wrote:
quoted
struct device_info_t {
void (*read)();
void (*write)();
These are not prototypes because there is no parameter list (use "void" for empty).
quoted
};
static int __devinit device_probe()
This isn't a prototype either.
quoted
cc1: warnings being treated as errors
drivers/dev_test.c:37: warning: function declaration isn't a prototype
drivers/dev_test.c:38: warning: function declaration isn't a prototype
drivers/dev_test.c: In function 'device_probe':
drivers/dev_test.c:113: warning: assignment from incompatible pointer
type
--
Cheers,
Stephen Rothwell sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/