Message ID | 1449963004-8391-2-git-send-email-christophe-h.ricard@st.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Sun, Dec 13, 2015 at 1:30 AM, Christophe Ricard <christophe.ricard@gmail.com> wrote: > acpi_gsi_get_irq_type could be use out of gsi purpose. > > Rename and make it available as a resource function. > > Signed-off-by: Christophe Ricard <christophe-h.ricard@st.com> > --- > drivers/acpi/gsi.c | 21 +-------------------- > drivers/acpi/resource.c | 26 ++++++++++++++++++++++++++ > include/linux/acpi.h | 1 + > 3 files changed, 28 insertions(+), 20 deletions(-) > > diff --git a/drivers/acpi/gsi.c b/drivers/acpi/gsi.c > index fa4585a..ee9e0f2 100644 > --- a/drivers/acpi/gsi.c > +++ b/drivers/acpi/gsi.c > @@ -17,25 +17,6 @@ enum acpi_irq_model_id acpi_irq_model; > > static struct fwnode_handle *acpi_gsi_domain_id; > > -static unsigned int acpi_gsi_get_irq_type(int trigger, int polarity) > -{ > - switch (polarity) { > - case ACPI_ACTIVE_LOW: > - return trigger == ACPI_EDGE_SENSITIVE ? > - IRQ_TYPE_EDGE_FALLING : > - IRQ_TYPE_LEVEL_LOW; > - case ACPI_ACTIVE_HIGH: > - return trigger == ACPI_EDGE_SENSITIVE ? > - IRQ_TYPE_EDGE_RISING : > - IRQ_TYPE_LEVEL_HIGH; > - case ACPI_ACTIVE_BOTH: > - if (trigger == ACPI_EDGE_SENSITIVE) > - return IRQ_TYPE_EDGE_BOTH; > - default: > - return IRQ_TYPE_NONE; > - } > -} > - > /** > * acpi_gsi_to_irq() - Retrieve the linux irq number for a given GSI > * @gsi: GSI IRQ number to map > @@ -82,7 +63,7 @@ int acpi_register_gsi(struct device *dev, u32 gsi, int trigger, > > fwspec.fwnode = acpi_gsi_domain_id; > fwspec.param[0] = gsi; > - fwspec.param[1] = acpi_gsi_get_irq_type(trigger, polarity); > + fwspec.param[1] = acpi_dev_get_irq_type(trigger, polarity); > fwspec.param_count = 2; > > return irq_create_fwspec_mapping(&fwspec); > diff --git a/drivers/acpi/resource.c b/drivers/acpi/resource.c > index 15d22db..bd1b945 100644 > --- a/drivers/acpi/resource.c > +++ b/drivers/acpi/resource.c > @@ -23,6 +23,7 @@ > #include <linux/export.h> > #include <linux/ioport.h> > #include <linux/slab.h> > +#include <linux/irq.h> > > #ifdef CONFIG_X86 > #define valid_IRQ(i) (((i) != 0) && ((i) != 2)) > @@ -333,6 +334,31 @@ unsigned long acpi_dev_irq_flags(u8 triggering, u8 polarity, u8 shareable) > } > EXPORT_SYMBOL_GPL(acpi_dev_irq_flags); > > +/** > + * acpi_dev_get_irq_type - Determine irq type. > + * @triggering: Triggering type as provided by ACPI. > + * @polarity: Interrupt polarity as provided by ACPI. > + */ > +u32 acpi_dev_get_irq_type(u32 triggering, u32 polarity) > +{ > + switch (polarity) { > + case ACPI_ACTIVE_LOW: > + return triggering == ACPI_EDGE_SENSITIVE ? > + IRQ_TYPE_EDGE_FALLING : > + IRQ_TYPE_LEVEL_LOW; > + case ACPI_ACTIVE_HIGH: > + return triggering == ACPI_EDGE_SENSITIVE ? > + IRQ_TYPE_EDGE_RISING : > + IRQ_TYPE_LEVEL_HIGH; > + case ACPI_ACTIVE_BOTH: > + if (triggering == ACPI_EDGE_SENSITIVE) > + return IRQ_TYPE_EDGE_BOTH; > + default: > + return IRQ_TYPE_NONE; > + } > +} > +EXPORT_SYMBOL_GPL(acpi_dev_get_irq_type); > + > static void acpi_dev_irqresource_disabled(struct resource *res, u32 gsi) > { > res->start = gsi; > diff --git a/include/linux/acpi.h b/include/linux/acpi.h > index d863e12..162e0e7 100644 > --- a/include/linux/acpi.h > +++ b/include/linux/acpi.h > @@ -299,6 +299,7 @@ bool acpi_dev_resource_address_space(struct acpi_resource *ares, > bool acpi_dev_resource_ext_address_space(struct acpi_resource *ares, > struct resource_win *win); > unsigned long acpi_dev_irq_flags(u8 triggering, u8 polarity, u8 shareable); > +u32 acpi_dev_get_irq_type(u32 triggering, u32 polarity); Commit message doesn't describe why you changed return type to u32. I actually vote for pure C type since it doesn't seem like a direct hardware value, though let me check rest or the patches. > bool acpi_dev_resource_interrupt(struct acpi_resource *ares, int index, > struct resource *res); > > -- > 2.1.4 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-spi" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/acpi/gsi.c b/drivers/acpi/gsi.c index fa4585a..ee9e0f2 100644 --- a/drivers/acpi/gsi.c +++ b/drivers/acpi/gsi.c @@ -17,25 +17,6 @@ enum acpi_irq_model_id acpi_irq_model; static struct fwnode_handle *acpi_gsi_domain_id; -static unsigned int acpi_gsi_get_irq_type(int trigger, int polarity) -{ - switch (polarity) { - case ACPI_ACTIVE_LOW: - return trigger == ACPI_EDGE_SENSITIVE ? - IRQ_TYPE_EDGE_FALLING : - IRQ_TYPE_LEVEL_LOW; - case ACPI_ACTIVE_HIGH: - return trigger == ACPI_EDGE_SENSITIVE ? - IRQ_TYPE_EDGE_RISING : - IRQ_TYPE_LEVEL_HIGH; - case ACPI_ACTIVE_BOTH: - if (trigger == ACPI_EDGE_SENSITIVE) - return IRQ_TYPE_EDGE_BOTH; - default: - return IRQ_TYPE_NONE; - } -} - /** * acpi_gsi_to_irq() - Retrieve the linux irq number for a given GSI * @gsi: GSI IRQ number to map @@ -82,7 +63,7 @@ int acpi_register_gsi(struct device *dev, u32 gsi, int trigger, fwspec.fwnode = acpi_gsi_domain_id; fwspec.param[0] = gsi; - fwspec.param[1] = acpi_gsi_get_irq_type(trigger, polarity); + fwspec.param[1] = acpi_dev_get_irq_type(trigger, polarity); fwspec.param_count = 2; return irq_create_fwspec_mapping(&fwspec); diff --git a/drivers/acpi/resource.c b/drivers/acpi/resource.c index 15d22db..bd1b945 100644 --- a/drivers/acpi/resource.c +++ b/drivers/acpi/resource.c @@ -23,6 +23,7 @@ #include <linux/export.h> #include <linux/ioport.h> #include <linux/slab.h> +#include <linux/irq.h> #ifdef CONFIG_X86 #define valid_IRQ(i) (((i) != 0) && ((i) != 2)) @@ -333,6 +334,31 @@ unsigned long acpi_dev_irq_flags(u8 triggering, u8 polarity, u8 shareable) } EXPORT_SYMBOL_GPL(acpi_dev_irq_flags); +/** + * acpi_dev_get_irq_type - Determine irq type. + * @triggering: Triggering type as provided by ACPI. + * @polarity: Interrupt polarity as provided by ACPI. + */ +u32 acpi_dev_get_irq_type(u32 triggering, u32 polarity) +{ + switch (polarity) { + case ACPI_ACTIVE_LOW: + return triggering == ACPI_EDGE_SENSITIVE ? + IRQ_TYPE_EDGE_FALLING : + IRQ_TYPE_LEVEL_LOW; + case ACPI_ACTIVE_HIGH: + return triggering == ACPI_EDGE_SENSITIVE ? + IRQ_TYPE_EDGE_RISING : + IRQ_TYPE_LEVEL_HIGH; + case ACPI_ACTIVE_BOTH: + if (triggering == ACPI_EDGE_SENSITIVE) + return IRQ_TYPE_EDGE_BOTH; + default: + return IRQ_TYPE_NONE; + } +} +EXPORT_SYMBOL_GPL(acpi_dev_get_irq_type); + static void acpi_dev_irqresource_disabled(struct resource *res, u32 gsi) { res->start = gsi; diff --git a/include/linux/acpi.h b/include/linux/acpi.h index d863e12..162e0e7 100644 --- a/include/linux/acpi.h +++ b/include/linux/acpi.h @@ -299,6 +299,7 @@ bool acpi_dev_resource_address_space(struct acpi_resource *ares, bool acpi_dev_resource_ext_address_space(struct acpi_resource *ares, struct resource_win *win); unsigned long acpi_dev_irq_flags(u8 triggering, u8 polarity, u8 shareable); +u32 acpi_dev_get_irq_type(u32 triggering, u32 polarity); bool acpi_dev_resource_interrupt(struct acpi_resource *ares, int index, struct resource *res);
acpi_gsi_get_irq_type could be use out of gsi purpose. Rename and make it available as a resource function. Signed-off-by: Christophe Ricard <christophe-h.ricard@st.com> --- drivers/acpi/gsi.c | 21 +-------------------- drivers/acpi/resource.c | 26 ++++++++++++++++++++++++++ include/linux/acpi.h | 1 + 3 files changed, 28 insertions(+), 20 deletions(-)