Thomas Bogendoerfer wrote: > The last line of PARISC machines (C8000, RP34x0, etc.) have a BMC for > controlling temperature, fan speed and other stuff. The BMC is connected > via a special bus and listed in the firmware device tree. This change > adds support for these BMCs to the IPMI driver. > > Signed-off-by: Thomas Bogendoerfer <[email protected]> > --- > > This is the second try to get this change integrated. If you see > any problems with this patch, please give me hints how to improve > this patch. > > > drivers/char/ipmi/ipmi_si_intf.c | 77 > ++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) > > diff --git a/drivers/char/ipmi/ipmi_si_intf.c > b/drivers/char/ipmi/ipmi_si_intf.c index af4b23f..b017b8a 100644 > --- a/drivers/char/ipmi/ipmi_si_intf.c > +++ b/drivers/char/ipmi/ipmi_si_intf.c > @@ -71,6 +71,11 @@ > #include <linux/of_address.h> > #include <linux/of_irq.h> > > +#ifdef CONFIG_PARISC > +#include <asm/hardware.h> /* for register_parisc_driver() stuff */ > +#include <asm/parisc-device.h> > +#endif > + > #define PFX "ipmi_si: " > > /* Measure times between events in the driver. */ > @@ -298,6 +303,9 @@ static int pci_registered; > #ifdef CONFIG_ACPI > static int pnp_registered; > #endif > +#ifdef CONFIG_PARISC > +static int parisc_registered; > +#endif > static unsigned int kipmid_max_busy_us[SI_MAX_PARMS]; > static int num_max_busy_us;
Can be bool
> @@ -2697,6 +2705,64 @@ static struct platform_driver ipmi_driver = {
> .remove = ipmi_remove,
> };
>
> +#ifdef CONFIG_PARISC
> +static int ipmi_parisc_probe(struct parisc_device *dev)
> +{
> + struct smi_info *info;
> +
> + info = kzalloc(sizeof(*info), GFP_KERNEL);
> +
> + if (!info) {
> + dev_err(&dev->dev,
> + "could not allocate memory for PARISC probe\n");
> + return -ENOMEM;
> + }
> +
> + info->si_type = SI_KCS;
> + info->addr_source = SI_DEVICETREE;
> + info->io_setup = mem_setup;
> + info->io.addr_type = IPMI_MEM_ADDR_SPACE;
> + info->io.addr_data = dev->hpa.start;
> + info->io.regsize = 1;
> + info->io.regspacing = 1;
> + info->io.regshift = 0;
> + info->irq = 0; /* no interrupt */
> + info->irq_setup = NULL;
> + info->dev = &dev->dev;
> +
> + dev_dbg(&dev->dev, "addr 0x%lx regsize %d spacing %d irq %d\n",
> + info->io.addr_data, info->io.regsize, info->io.regspacing,
> + info->irq);
Printing regsize, regspacing, and IRQ here is kind of pointless as they have
fixed values, no?
> + dev_set_drvdata(&dev->dev, info);
> +
> + if (add_smi(info)) {
> + kfree(info);
> + return -EBUSY;
> + }
add_smi() will already return an error code AFAICS. So just forward that.
Regards,
Eike
signature.asc
Description: This is a digitally signed message part.
------------------------------------------------------------------------------ Get your SQL database under version control now! Version control is standard for application code, but databases havent caught up. So what steps can you take to put your SQL databases under version control? Why should you start doing it? Read more to find out. http://pubads.g.doubleclick.net/gampad/clk?id=49501711&iu=/4140/ostg.clktrk
_______________________________________________ Openipmi-developer mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/openipmi-developer
