* [PATCH] [v2] drivers/tty: don't use the byte channel handle as a parameter in ehv_bytechan.c
From: Timur Tabi @ 2011-09-23 1:33 UTC (permalink / raw)
To: greg, linuxppc-dev, linux-kernel
The ePAPR hypervisor byte channel console driver only supports one byte
channel as a console, and the byte channel handle is stored in a global
variable. It doesn't make any sense to pass that handle as a parameter
to the console functions, since these functions already have access to the
global variable.
Signed-off-by: Timur Tabi <timur@freescale.com>
---
drivers/tty/ehv_bytechan.c | 7 ++-----
1 files changed, 2 insertions(+), 5 deletions(-)
diff --git a/drivers/tty/ehv_bytechan.c b/drivers/tty/ehv_bytechan.c
index f733718..1595dba 100644
--- a/drivers/tty/ehv_bytechan.c
+++ b/drivers/tty/ehv_bytechan.c
@@ -282,7 +282,6 @@ static int ehv_bc_console_byte_channel_send(unsigned int handle, const char *s,
static void ehv_bc_console_write(struct console *co, const char *s,
unsigned int count)
{
- unsigned int handle = (uintptr_t)co->data;
char s2[EV_BYTE_CHANNEL_MAX_BYTES];
unsigned int i, j = 0;
char c;
@@ -295,14 +294,14 @@ static void ehv_bc_console_write(struct console *co, const char *s,
s2[j++] = c;
if (j >= (EV_BYTE_CHANNEL_MAX_BYTES - 1)) {
- if (ehv_bc_console_byte_channel_send(handle, s2, j))
+ if (ehv_bc_console_byte_channel_send(stdout_bc, s2, j))
return;
j = 0;
}
}
if (j)
- ehv_bc_console_byte_channel_send(handle, s2, j);
+ ehv_bc_console_byte_channel_send(stdout_bc, s2, j);
}
/*
@@ -348,8 +347,6 @@ static int __init ehv_bc_console_init(void)
CONFIG_PPC_EARLY_DEBUG_EHV_BC_HANDLE);
#endif
- ehv_bc_console.data = (void *)(uintptr_t)stdout_bc;
-
/* add_preferred_console() must be called before register_console(),
otherwise it won't work. However, we don't want to enumerate all the
byte channels here, either, since we only care about one. */
--
1.7.4.4
^ permalink raw reply related
* Re: I2c driver crash
From: Benjamin Herrenschmidt @ 2011-09-23 1:28 UTC (permalink / raw)
To: smitha.vanga; +Cc: scottwood, linuxppc-dev
In-Reply-To: <40631E9A2581F14BA60888C87A76A1FE012ED4@HYD-MKD-MBX4.wipro.com>
On Thu, 2011-09-22 at 15:25 +0000, smitha.vanga@wipro.com wrote:
> Hi Scott,
>
> When I call if i2c_master_send(&ds75->i2c_client,buffer,2) it
> crashes. In module initialization I don't see any errors. Below are
> kernel messages. Could you please let me know what may be the reason
> for this crash.
Why the heck are you trying to write a new driver for ds75 ? There's
already one in there (lm75, same thing).
Cheers,
Ben.
> -----------Logs---------
> Loading Temperature Sensor Interface module (temp_if.ko)
> ds75_init
> DS75_DRIVER : Open
> DS75_DRIVER : Device Open Successful!
> DS75_DRIVER : ioctl TEMP_READ cmd 1
> ds75_temp_read calling i2c_master_send
> In i2c_master_send enter-------
> Unable to handle kernel paging request for data at address 0x00000010
> Faulting instruction address: 0xc01b06a4
> Oops: Kernel access of bad area, sig: 11 [#1]
>
> Modules linked in: temp_if gpio_if
> NIP: C01B06A4 LR: C01B06A0 CTR: C019BC90
> REGS: c309bdc0 TRAP: 0300 Not tainted
> (2.6.21.7-hrt1-cfs-v22-grsec-WR2.0bl_cgl)
> MSR: 00009032 <EE,ME,IR,DR> CR: 44004822 XER: 00000000
> DAR: 00000010, DSISR: 20000000
> TASK = c306f810[145] 'epn412' THREAD: c309a000
> GPR00: 00007D00 C309BE70 C306F810 C02A0000 00000001 00000001 00000000
> FDFBD0A0
> GPR08: 003DE8A0 A827A936 00003F78 C02EAE88 00000001 1011C7C0 03EFD000
> FFFFFFFF
> GPR16: 00000001 00000000 007FFC00 37942FA8 1012EAC0 1001E530 37942FB4
> 00000003
> GPR24: 37942FB4 00000000 003D0F00 C309BEA8 FFFFFFF7 00000008 C309BEA8
> 00000002
> Call Trace:
> [C309BE70] [C01B0698] (unreliable)
> [C309BEA0] [C50B71DC]
> [C309BED0] [C007A0D0]
> [C309BEE0] [C007A158]
> [C309BF10] [C007A4EC]
> [C309BF40] [C000E780]
> --- Exception: c01Instruction dump:
> 7c0802a6 bf61001c 7c7d1b78 3c60c02a 386313b4 7cbf2b78 90010034
> 7c9b2378
> 4be6bc79 386007d0 4be5ac6d 3c60c02a <839d0008> 386313d8 4be6bc61
> a01d0004
>
>
>
>
> Below is the driver code.
> -------------------------
>
> #include "temp_if.h"
> #include <asm-powerpc/uaccess.h>
> #include <linux/i2c.h>
> //#include <asm/arch/platform.h>
>
>
> #define I2C_DEBUG
>
> #ifdef I2C_DEBUG
> #define I2C_DBG1(x) printk(KERN_WARNING x)
> #define I2C_DBG2(x,y) printk(KERN_WARNING x,y)
> #define I2C_DBG3(x,y,z) printk(KERN_WARNING x,y,z)
> #define I2C_DBG4(w,x,y,z) printk(KERN_WARNING w,x,y,z)
> #else
> #define I2C_DBG1(x)
> #define I2C_DBG2(x,y)
> #define I2C_DBG3(x,y,z)
> #define I2C_DBG4(w,x,y,z)
> #endif
>
> /* Function Prototype */
> static int ds75_open(struct inode *inode, struct file *filp);
> static int ds75_iotcl(struct inode *inode, struct file *flip, unsigned
> int cmd, unsigned long arg);
> static int ds75_release(struct inode *inode, struct file *flip);
> int ds75_attach_client(struct ds75_data * ds75, struct i2c_adapter
> *adapter);
>
> int ds75_attach_adapter(struct i2c_adapter *adapter);
> int ds75_detach_client(struct i2c_client *client);
>
>
>
>
> /* Structure */
> static struct file_operations tmpsensor_fops =
> {
> ioctl: ds75_iotcl,
> open: ds75_open,
> release: ds75_release,
>
> };
>
> static struct i2c_driver ds75_driver = {
> .driver = {
> .name = "DS75",
> },
> .attach_adapter = ds75_attach_adapter,
> .detach_client = ds75_detach_client,
> };
>
> /* Global Variable */
> static int s_nI2CMajor = 0;
> static int s_bI2CDevOpen = 0;
> static int s_nUseCnt = 0;
> struct ds75_data *ds75;
>
>
> static int ds75_open(struct inode *inode, struct file *flip)
> {
> I2C_DBG1( "DS75_DRIVER : Open\n");
> if(s_bI2CDevOpen == 0)
> {
> I2C_DBG1("DS75_DRIVER : Device Open Successful!\n");
> s_bI2CDevOpen = 1;
> s_nUseCnt++;
>
> }
> else
> {
> I2C_DBG1("DS75_DRIVER : Device Already Opened Successfully!\n");
> s_bI2CDevOpen = 1;
> s_nUseCnt++;
> }
> return 0;
> }
>
>
> static int ds75_release(struct inode *inode, struct file *flip)
> {
> I2C_DBG1 (KERN_INFO "Entering ds75_release\n" );
> if(s_bI2CDevOpen)
> {
> if( s_nUseCnt <= 0 )
> {
> I2C_DBG1("DS75_DRIVER : i2c driver can't be released!\n");
> return -EIO;
> }
> else
> {
> I2C_DBG1("DS75_DRIVER : Release Successful!\n");
> s_nUseCnt--;
> if( s_nUseCnt == 0 )
> {
> s_bI2CDevOpen = 0;
> I2C_DBG1("DS75_DRIVER : I2C Driver is Closed!\n");
> }
> }
> return 0;
> }
> else
> {
> I2C_DBG1("DS75_DRIVER : Release Fail! (Device is Not Open)\n");
> return -EIO;
> }
> }
>
> /*
> This function will read the Temperature from the device and copies to
> user space
> */
> static int ds75_temp_read(struct ds75_msg_t *pData)
> {
> //unsigned char buffer[4];
> signed char buffer[4];
> int ret;
> buffer[0]=0; /* Writing 0 in to Pointer register. --> Temprature
> read register */
> if ((ret = i2c_master_send(&ds75->i2c_client,buffer,2)) !=2)
> {
> I2C_DBG2("DS75_DRIVER : Error writing to I2C ret = %d
> \n",ret);
> return -1;
> }
>
> /* reading from the temperature read register */
> if (i2c_master_recv(&ds75->i2c_client,buffer,2)!= 2)
> {
> I2C_DBG1("DS75_DRIVER : Error reading from I2C\n");
> return -1;
> }
>
> //I2C_DBG3("DS75_DRIVER: data[0] = %d, data[1] = %d
> \n",buffer[0],buffer[1]);
> //I2C_DBG3("DS75_DRIVER: data[0] = %d, data[1] = %d
> \n",buffer[0],buffer[1]);
>
> /* Copy User Memory Area */
> if(copy_to_user(pData->ReadData,buffer, 2 ) != 0)
> {
> I2C_DBG1("DS75_DRIVER : error in copying to user
> space");
> return -1;
> }
>
> return 0; /* Success */
>
> }
>
>
> static int ds75_iotcl(struct inode *inode, struct file *flip, unsigned
> int cmd, unsigned long arg)
> {
> int nRetVal = 0;
>
> if( ((struct ds75_msg_t *)arg) == NULL ){
> I2C_DBG1("DS75_DRIVER : ioctl Message Buff must not
> be NULL\n");
> return -EFAULT;
> }
>
> switch(cmd){
> case TEMP_READ:
> I2C_DBG2("DS75_DRIVER : ioctl TEMP_READ cmd %
> d\n",cmd);
> nRetVal = ds75_temp_read((struct ds75_msg_t *)
> arg);
> break;
>
> default:
> /* Error! */
> I2C_DBG1("DS75_DRIVER : Command not
> implemented\n");
> nRetVal = -EIO;
> break;
> }
> return nRetVal;
> }
>
>
> /*
> * i2c_attach_client - tries to detect and initialize slics
> */
> int ds75_attach_client(struct ds75_data * ds75, struct i2c_adapter
> *adapter)
> {
> struct i2c_client * client;
>
> /* register i2c client */
> client = &ds75->i2c_client;
> client->adapter = adapter;
> client->driver = &ds75_driver;
> // client->flags = I2C_CLIENT_ALLOW_USE;
> client->addr = DS75_ADDR;
> strlcpy(client->name, "DS75", I2C_NAME_SIZE);
> i2c_set_clientdata(client, ds75);
>
> if (i2c_attach_client(client))
> return -1;
>
> printk (KERN_INFO DS75_DRIVER_NAME ": I2C client attached\n");
> return 0;
> }
>
> /*
> * i2c_attach_adapter - initializes the maxim driver
> */
> int ds75_attach_adapter(struct i2c_adapter *adapter)
> {
> /* allocate maxim_data structure */
> ds75 = kmalloc(sizeof (struct ds75_data), GFP_KERNEL);
> if (ds75 == NULL)
> {
> printk (KERN_ERR "Unable to allocate memory for ds75 temp
> sensor driver\n");
> goto err0;
> }
> memset(ds75, 0, sizeof(struct ds75_data));
>
> /* Attach Spi Client */
> if (ds75_attach_client(ds75, adapter) != 0)
> {
> printk (KERN_ERR "No ds75 device detected\n");
> goto err1;
> }
>
> return 0;
>
> err1:
> kfree(ds75);
> err0:
> return -1;
> }
>
> /*
> * i2c_detach_client - cleans up the maxim driver
> */
> int ds75_detach_client(struct i2c_client *client)
> {
> struct ds75_data *ds75 = i2c_get_clientdata(client);
>
> if (ds75->owned_irq)
> {
> free_irq(ds75->irq, ds75);
> ds75->owned_irq = 0;
>
> }
>
> i2c_detach_client(&ds75->i2c_client);
>
> kfree (ds75); // Free the kernel memory */
>
> return 0;
> }
>
>
>
>
> /*
> * Temperature sensor DS75 init -
> *
> */
> int __init ds75_init(void)
> {
> int rc;
> rc = i2c_add_driver(&ds75_driver);
> if (rc)
> {
> printk (KERN_ERR DS75_DRIVER_NAME ": unable to add
> driver\n");
> return rc;
> }
>
> rc = register_chrdev (DS75_DEVICE_MAJOR_NUM, DS75_DRIVER_NAME,
> &tmpsensor_fops);
> if (rc)
> {
> printk (KERN_ERR DS75_DRIVER_NAME ": unable to
> register char device\n");
> return rc;
> }
>
> return 0;
> }
>
> /**
> * maxim _exit -
> *
> *
> */
> void __exit ds75_exit(void)
> {
> unregister_chrdev (DS75_DEVICE_MAJOR_NUM, DS75_DRIVER_NAME);
>
> i2c_del_driver(&ds75_driver);
> }
>
> MODULE_AUTHOR("xxxx");
> MODULE_DESCRIPTION("DS75 I2C driver");
> MODULE_LICENSE("GPL");
>
> module_init(ds75_init);
> module_exit(ds75_exit);
>
>
> Regards,
> Smitha
>
> Please do not print this email unless it is absolutely necessary.
>
> The information contained in this electronic message and any
> attachments to this message are intended for the exclusive use of the
> addressee(s) and may contain proprietary, confidential or privileged
> information. If you are not the intended recipient, you should not
> disseminate, distribute or copy this e-mail. Please notify the sender
> immediately and destroy all copies of this message and any
> attachments.
>
> WARNING: Computer viruses can be transmitted via email. The recipient
> should check this email and any attachments for the presence of
> viruses. The company accepts no liability for any damage caused by any
> virus transmitted by this email.
>
> www.wipro.com
>
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev@lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/linuxppc-dev
^ permalink raw reply
* Re: [PATCH] drivers/tty: don't use the byte channel handle as a parameter in ehv_bytechan.c
From: Tabi Timur-B04825 @ 2011-09-23 1:11 UTC (permalink / raw)
To: Greg KH
Cc: linuxppc-dev@ozlabs.org, linux-kernel@vger.kernel.org,
linux-console@vger.kernel.org
In-Reply-To: <20110922232828.GA12088@kroah.com>
Greg KH wrote:
>>> > > This patch doesn't apply at all to my tty tree, what was it made
>>> > > against?
>> >
>> > An internal repository that supposed to be in-sync with the latest an=
d greatest.
>> >
>> > What's the URL for your tty-next repo?
> There is no public one due to kernel.org being down.
>
> Does your patch apply to linux-next?
It does not, and I see why now. Looks like the internal tree is not in=20
sync after all.
I will post a V2 shortly.
--=20
Timur Tabi
Linux kernel developer at Freescale=
^ permalink raw reply
* Re: [PATCH] PSeries: Cancel RTAS event scan before firmware flash
From: Benjamin Herrenschmidt @ 2011-09-23 0:38 UTC (permalink / raw)
To: Ravi K Nittala; +Cc: linuxppc-dev
In-Reply-To: <20110921102825.16444.75131.stgit@localhost6.localdomain6>
On Wed, 2011-09-21 at 15:59 +0530, Ravi K Nittala wrote:
> The RTAS firmware flash update is conducted using an RTAS call that is
> serialized by lock_rtas() which uses spin_lock. While the flash is in
> progress, rtasd performs scan for any RTAS events that are generated by
> the system. rtasd keeps scanning for the RTAS events generated on the
> machine. This is performed via workqueue mechanism. The rtas_event_scan()
> also uses an RTAS call to scan the events, eventually trying to acquire
> the spin_lock before issuing therequest.
Better. However:
> diff --git a/arch/powerpc/include/asm/rtas.h b/arch/powerpc/include/asm/rtas.h
> index 58625d1..b5cbd9f 100644
> --- a/arch/powerpc/include/asm/rtas.h
> +++ b/arch/powerpc/include/asm/rtas.h
> @@ -245,6 +245,10 @@ extern int early_init_dt_scan_rtas(unsigned long node,
>
> extern void pSeries_log_error(char *buf, unsigned int err_type, int fatal);
>
> +#ifdef CONFIG_PPC_RTAS_DAEMON
> +extern bool rtas_cancel_event_scan(void);
> +#endif
The extern as such doesn't need an ifdef... however, you could avoid
this one:
.../...
>
> +#ifdef CONFIG_PPC_RTAS_DAEMON
> + /*
> + * Just before starting the firmware flash, cancel the event scan work
> + * to avoid any soft lockup issues.
> + */
> + rtas_cancel_event_scan();
> +#endif
> +
Here, by having the header contain instead:
#ifdef CONFIG_PPC_RTAS_DAEMON
extern void rtas_cancel_event_scan(void);
#else
static inline void rtas_cancel_event_scan(void) { }
#endif
Also note that I removed the bool, it's not useful since you don't
test it anyway.
> * NOTE: the "first" block must be under 4GB, so we create
> * an entry with no data blocks in the reserved buffer in
> diff --git a/arch/powerpc/kernel/rtasd.c b/arch/powerpc/kernel/rtasd.c
> index 481ef06..e8f03fa 100644
> --- a/arch/powerpc/kernel/rtasd.c
> +++ b/arch/powerpc/kernel/rtasd.c
> @@ -472,6 +472,12 @@ static void start_event_scan(void)
> &event_scan_work, event_scan_delay);
> }
>
> +/* Cancel the rtas event scan work */
> +bool rtas_cancel_event_scan(void)
> +{
> + return cancel_delayed_work_sync(&event_scan_work);
> +}
Finally, the above is missing an EXPORT_SYMBOL_GPL() since rtas
flash can be a module.
Cheers,
Ben.
> static int __init rtas_init(void)
> {
> struct proc_dir_entry *entry;
^ permalink raw reply
* Re: Please pull 'next' branch of 5xxx tree
From: Benjamin Herrenschmidt @ 2011-09-23 0:15 UTC (permalink / raw)
To: Anatolij Gustschin; +Cc: linuxppc-dev list
In-Reply-To: <20110923012000.31d4e38d@wker>
On Fri, 2011-09-23 at 01:20 +0200, Anatolij Gustschin wrote:
> Hi Ben,
>
> please pull some mpc5xxx updates and mpc8xxx/512x gpio driver
> move patches for next.
Thanks, pulled & pushed out to github.
Cheers,
Ben.
> Anatolij
>
> The following changes since commit a120db06c3f435c37d028b6e5a1968dad06b7df0:
>
> perf events, powerpc: Add POWER7 stalled-cycles-frontend/backend events (2011-09-20 16:12:56 +1000)
>
> are available in the git repository at:
> git://git.denx.de/linux-2.6-agust.git next
>
> Anatolij Gustschin (4):
> powerpc/5200: mpc5200b.dtsi: add spi node address- and size-cells properties
> powerpc/5200: dts: digsy_mtc.dts: update to add can, pci, serial and spi
> powerpc/5200: dts: digsy_mtc.dts: add timer0 and timer1 gpio properties
> powerpc/5200: dts: digsy_mtc.dts: enable both MSCAN nodes
>
> Timur Tabi (1):
> powerpc/5200: enable audio in the defconfig
>
> Wolfram Sang (2):
> gpio: move mpc8xxx/512x gpio driver to drivers/gpio
> powerpc: update 512x-defconfig
>
> arch/powerpc/boot/dts/digsy_mtc.dts | 59 +++++++++++++++++---
> arch/powerpc/boot/dts/mpc5200b.dtsi | 2 +
> arch/powerpc/configs/85xx/p1023rds_defconfig | 2 +-
> arch/powerpc/configs/85xx/xes_mpc85xx_defconfig | 2 +-
> arch/powerpc/configs/mpc512x_defconfig | 19 ++++---
> arch/powerpc/configs/mpc5200_defconfig | 12 ++++
> arch/powerpc/configs/mpc85xx_defconfig | 2 +-
> arch/powerpc/configs/mpc85xx_smp_defconfig | 2 +-
> arch/powerpc/configs/ppc6xx_defconfig | 2 +-
> arch/powerpc/platforms/512x/Kconfig | 1 +
> arch/powerpc/platforms/83xx/Kconfig | 9 ++-
> arch/powerpc/platforms/85xx/Kconfig | 12 +++-
> arch/powerpc/platforms/86xx/Kconfig | 1 +
> arch/powerpc/platforms/Kconfig | 10 ---
> arch/powerpc/sysdev/Makefile | 1 -
> drivers/gpio/Kconfig | 8 +++
> drivers/gpio/Makefile | 1 +
> .../mpc8xxx_gpio.c => drivers/gpio/gpio-mpc8xxx.c | 0
> 18 files changed, 106 insertions(+), 39 deletions(-)
> rename arch/powerpc/sysdev/mpc8xxx_gpio.c => drivers/gpio/gpio-mpc8xxx.c (100%)
^ permalink raw reply
* Re: [PATCH] drivers/tty: don't use the byte channel handle as a parameter in ehv_bytechan.c
From: Greg KH @ 2011-09-22 23:28 UTC (permalink / raw)
To: Timur Tabi; +Cc: linuxppc-dev, linux-kernel, linux-console
In-Reply-To: <4E7BC1A9.5050708@freescale.com>
On Thu, Sep 22, 2011 at 06:15:53PM -0500, Timur Tabi wrote:
> Greg KH wrote:
> > This patch doesn't apply at all to my tty tree, what was it made
> > against?
>
> An internal repository that supposed to be in-sync with the latest and greatest.
>
> What's the URL for your tty-next repo?
There is no public one due to kernel.org being down.
Does your patch apply to linux-next?
^ permalink raw reply
* Please pull 'next' branch of 5xxx tree
From: Anatolij Gustschin @ 2011-09-22 23:20 UTC (permalink / raw)
To: Benjamin Herrenschmidt; +Cc: linuxppc-dev list
Hi Ben,
please pull some mpc5xxx updates and mpc8xxx/512x gpio driver
move patches for next.
Anatolij
The following changes since commit a120db06c3f435c37d028b6e5a1968dad06b7df0:
perf events, powerpc: Add POWER7 stalled-cycles-frontend/backend events (2011-09-20 16:12:56 +1000)
are available in the git repository at:
git://git.denx.de/linux-2.6-agust.git next
Anatolij Gustschin (4):
powerpc/5200: mpc5200b.dtsi: add spi node address- and size-cells properties
powerpc/5200: dts: digsy_mtc.dts: update to add can, pci, serial and spi
powerpc/5200: dts: digsy_mtc.dts: add timer0 and timer1 gpio properties
powerpc/5200: dts: digsy_mtc.dts: enable both MSCAN nodes
Timur Tabi (1):
powerpc/5200: enable audio in the defconfig
Wolfram Sang (2):
gpio: move mpc8xxx/512x gpio driver to drivers/gpio
powerpc: update 512x-defconfig
arch/powerpc/boot/dts/digsy_mtc.dts | 59 +++++++++++++++++---
arch/powerpc/boot/dts/mpc5200b.dtsi | 2 +
arch/powerpc/configs/85xx/p1023rds_defconfig | 2 +-
arch/powerpc/configs/85xx/xes_mpc85xx_defconfig | 2 +-
arch/powerpc/configs/mpc512x_defconfig | 19 ++++---
arch/powerpc/configs/mpc5200_defconfig | 12 ++++
arch/powerpc/configs/mpc85xx_defconfig | 2 +-
arch/powerpc/configs/mpc85xx_smp_defconfig | 2 +-
arch/powerpc/configs/ppc6xx_defconfig | 2 +-
arch/powerpc/platforms/512x/Kconfig | 1 +
arch/powerpc/platforms/83xx/Kconfig | 9 ++-
arch/powerpc/platforms/85xx/Kconfig | 12 +++-
arch/powerpc/platforms/86xx/Kconfig | 1 +
arch/powerpc/platforms/Kconfig | 10 ---
arch/powerpc/sysdev/Makefile | 1 -
drivers/gpio/Kconfig | 8 +++
drivers/gpio/Makefile | 1 +
.../mpc8xxx_gpio.c => drivers/gpio/gpio-mpc8xxx.c | 0
18 files changed, 106 insertions(+), 39 deletions(-)
rename arch/powerpc/sysdev/mpc8xxx_gpio.c => drivers/gpio/gpio-mpc8xxx.c (100%)
^ permalink raw reply
* Re: [PATCH] drivers/tty: don't use the byte channel handle as a parameter in ehv_bytechan.c
From: Timur Tabi @ 2011-09-22 23:15 UTC (permalink / raw)
To: Greg KH; +Cc: linuxppc-dev, linux-kernel, linux-console
In-Reply-To: <20110922230640.GA16981@kroah.com>
Greg KH wrote:
> This patch doesn't apply at all to my tty tree, what was it made
> against?
An internal repository that supposed to be in-sync with the latest and greatest.
What's the URL for your tty-next repo?
--
Timur Tabi
Linux kernel developer at Freescale
^ permalink raw reply
* Re: [PATCH 54/62] TTY: irq: Remove IRQF_DISABLED
From: Greg KH @ 2011-09-22 23:08 UTC (permalink / raw)
To: Yong Zhang
Cc: nios2-dev, Jesper Nilsson, linux-cris-kernel, Tobias Klauser,
Lucas De Marchi, Greg Kroah-Hartman, linux-kernel, Mikael Starvik,
Jesper Juhl, linux-serial, Jiri Kosina, uclinux-dist-devel, tglx,
Sonic Zhang, linuxppc-dev, mingo, Alan Cox
In-Reply-To: <20110922230420.GA11264@kroah.com>
On Thu, Sep 22, 2011 at 04:04:20PM -0700, Greg KH wrote:
> On Wed, Sep 07, 2011 at 04:10:51PM +0800, Yong Zhang wrote:
> > This flag is a NOOP and can be removed now.
> >
> > Signed-off-by: Yong Zhang <yong.zhang0@gmail.com>
> > Acked-by: Tobias Klauser <tklauser@distanz.ch>
> > ---
> > drivers/tty/amiserial.c | 2 +-
> > drivers/tty/cyclades.c | 2 +-
> > drivers/tty/hvc/hvc_irq.c | 2 +-
> > drivers/tty/hvc/hvcs.c | 2 +-
> > drivers/tty/hvc/hvsi.c | 2 +-
> > drivers/tty/isicom.c | 2 +-
> > drivers/tty/serial/68328serial.c | 2 +-
> > drivers/tty/serial/altera_jtaguart.c | 2 +-
> > drivers/tty/serial/altera_uart.c | 2 +-
> > drivers/tty/serial/bfin_5xx.c | 8 ++++----
>
> This file isn't in my tree anymore, so I can't apply this :(
>
Oh nevermind, I see your newer patch, I'll take that one, sorry.
greg k-h
^ permalink raw reply
* Re: [PATCH] drivers/tty: don't use the byte channel handle as a parameter in ehv_bytechan.c
From: Greg KH @ 2011-09-22 23:06 UTC (permalink / raw)
To: Timur Tabi; +Cc: linuxppc-dev, linux-kernel, linux-console
In-Reply-To: <1316543217-13769-1-git-send-email-timur@freescale.com>
On Tue, Sep 20, 2011 at 01:26:57PM -0500, Timur Tabi wrote:
> The ePAPR hypervisor byte channel console driver only supports one byte
> channel as a console, and the byte channel handle is stored in a global
> variable. It doesn't make any sense to pass that handle as a parameter
> to the console functions, since these functions already have access to the
> global variable.
>
> This change also fixes this compilation warning on a 64-bit kernel:
>
> CC drivers/tty/ehv_bytechan.o
> drivers/tty/ehv_bytechan.c: In function 'ehv_bc_console_write':
> drivers/tty/ehv_bytechan.c:289:24: warning: cast from pointer to integer of different size
> drivers/tty/ehv_bytechan.c: In function 'ehv_bc_console_init':
> drivers/tty/ehv_bytechan.c:355:24: warning: cast to pointer from integer of different size
>
> This warning is because the driver is converting the integer byte channel
> handle to/from the void* 'data' field of struct console. Rather than fix
> the warning, we just eliminate the code altogether.
>
> Signed-off-by: Timur Tabi <timur@freescale.com>
> ---
> drivers/tty/ehv_bytechan.c | 7 ++-----
This patch doesn't apply at all to my tty tree, what was it made
against?
confused,
greg k-h
^ permalink raw reply
* Re: [PATCH 54/62] TTY: irq: Remove IRQF_DISABLED
From: Greg KH @ 2011-09-22 23:04 UTC (permalink / raw)
To: Yong Zhang
Cc: nios2-dev, Jesper Nilsson, linux-cris-kernel, Tobias Klauser,
Lucas De Marchi, Greg Kroah-Hartman, linux-kernel, Mikael Starvik,
Jesper Juhl, linux-serial, Jiri Kosina, uclinux-dist-devel, tglx,
Sonic Zhang, linuxppc-dev, mingo, Alan Cox
In-Reply-To: <1315383059-3673-55-git-send-email-yong.zhang0@gmail.com>
On Wed, Sep 07, 2011 at 04:10:51PM +0800, Yong Zhang wrote:
> This flag is a NOOP and can be removed now.
>
> Signed-off-by: Yong Zhang <yong.zhang0@gmail.com>
> Acked-by: Tobias Klauser <tklauser@distanz.ch>
> ---
> drivers/tty/amiserial.c | 2 +-
> drivers/tty/cyclades.c | 2 +-
> drivers/tty/hvc/hvc_irq.c | 2 +-
> drivers/tty/hvc/hvcs.c | 2 +-
> drivers/tty/hvc/hvsi.c | 2 +-
> drivers/tty/isicom.c | 2 +-
> drivers/tty/serial/68328serial.c | 2 +-
> drivers/tty/serial/altera_jtaguart.c | 2 +-
> drivers/tty/serial/altera_uart.c | 2 +-
> drivers/tty/serial/bfin_5xx.c | 8 ++++----
This file isn't in my tree anymore, so I can't apply this :(
^ permalink raw reply
* Re: [PATCH V2 1/2] gpio: move mpc8xxx/512x gpio driver to drivers/gpio
From: Anatolij Gustschin @ 2011-09-22 23:03 UTC (permalink / raw)
To: Wolfram Sang; +Cc: linuxppc-dev
In-Reply-To: <1316602161-12546-1-git-send-email-w.sang@pengutronix.de>
On Wed, 21 Sep 2011 12:49:20 +0200
Wolfram Sang <w.sang@pengutronix.de> wrote:
> Move the driver to the place where it is expected to be nowadays. Also
> rename its CONFIG-name to match the rest and adapt the defconfigs.
> Finally, move selection of REQUIRE_GPIOLIB or WANTS_OPTIONAL_GPIOLIB to
> the platforms, because this option is per-platform and not per-driver.
>
> Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
> Cc: Anatolij Gustschin <agust@denx.de>
> Cc: Grant Likely <grant.likely@secretlab.ca>
> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
> ---
>
> I'd think this should go via ppc, so it is in sync with the defconfig update of
> patch 2/2.
applied both patches to next, thanks.
Anatolij
^ permalink raw reply
* Re: [PATCH] powerpc/5200: enable audio in the defconfig
From: Anatolij Gustschin @ 2011-09-22 23:01 UTC (permalink / raw)
To: Timur Tabi; +Cc: linuxppc-dev
In-Reply-To: <1314916282-13863-1-git-send-email-timur@freescale.com>
On Thu, 1 Sep 2011 17:31:22 -0500
Timur Tabi <timur@freescale.com> wrote:
> Audio support for the MPC5200 exists, so enable it by default.
>
> Signed-off-by: Timur Tabi <timur@freescale.com>
> ---
>
> There was a bug in the audio drivers related to the of_platform
> changes that was never discovered because these drivers were
> never compiled by default. This patch should make sure that
> never happens again.
>
> arch/powerpc/configs/mpc5200_defconfig | 12 ++++++++++++
> 1 files changed, 12 insertions(+), 0 deletions(-)
applied to next, thanks.
Anatolij
^ permalink raw reply
* I2c driver crash
From: smitha.vanga @ 2011-09-22 15:25 UTC (permalink / raw)
To: scottwood; +Cc: linuxppc-dev
In-Reply-To: <4E57FD3D.6090809@freescale.com>
[-- Attachment #1: Type: text/plain, Size: 9837 bytes --]
Hi Scott,
When I call if i2c_master_send(&ds75->i2c_client,buffer,2) it crashes. In module initialization I don't see any errors. Below are kernel messages. Could you please let me know what may be the reason for this crash.
-----------Logs---------
Loading Temperature Sensor Interface module (temp_if.ko)
ds75_init
DS75_DRIVER : Open
DS75_DRIVER : Device Open Successful!
DS75_DRIVER : ioctl TEMP_READ cmd 1
ds75_temp_read calling i2c_master_send
In i2c_master_send enter-------
Unable to handle kernel paging request for data at address 0x00000010
Faulting instruction address: 0xc01b06a4
Oops: Kernel access of bad area, sig: 11 [#1]
Modules linked in: temp_if gpio_if
NIP: C01B06A4 LR: C01B06A0 CTR: C019BC90
REGS: c309bdc0 TRAP: 0300 Not tainted (2.6.21.7-hrt1-cfs-v22-grsec-WR2.0bl_cgl)
MSR: 00009032 <EE,ME,IR,DR> CR: 44004822 XER: 00000000
DAR: 00000010, DSISR: 20000000
TASK = c306f810[145] 'epn412' THREAD: c309a000
GPR00: 00007D00 C309BE70 C306F810 C02A0000 00000001 00000001 00000000 FDFBD0A0
GPR08: 003DE8A0 A827A936 00003F78 C02EAE88 00000001 1011C7C0 03EFD000 FFFFFFFF
GPR16: 00000001 00000000 007FFC00 37942FA8 1012EAC0 1001E530 37942FB4 00000003
GPR24: 37942FB4 00000000 003D0F00 C309BEA8 FFFFFFF7 00000008 C309BEA8 00000002
Call Trace:
[C309BE70] [C01B0698] (unreliable)
[C309BEA0] [C50B71DC]
[C309BED0] [C007A0D0]
[C309BEE0] [C007A158]
[C309BF10] [C007A4EC]
[C309BF40] [C000E780]
--- Exception: c01Instruction dump:
7c0802a6 bf61001c 7c7d1b78 3c60c02a 386313b4 7cbf2b78 90010034 7c9b2378
4be6bc79 386007d0 4be5ac6d 3c60c02a <839d0008> 386313d8 4be6bc61 a01d0004
Below is the driver code.
-------------------------
#include "temp_if.h"
#include <asm-powerpc/uaccess.h>
#include <linux/i2c.h>
//#include <asm/arch/platform.h>
#define I2C_DEBUG
#ifdef I2C_DEBUG
#define I2C_DBG1(x) printk(KERN_WARNING x)
#define I2C_DBG2(x,y) printk(KERN_WARNING x,y)
#define I2C_DBG3(x,y,z) printk(KERN_WARNING x,y,z)
#define I2C_DBG4(w,x,y,z) printk(KERN_WARNING w,x,y,z)
#else
#define I2C_DBG1(x)
#define I2C_DBG2(x,y)
#define I2C_DBG3(x,y,z)
#define I2C_DBG4(w,x,y,z)
#endif
/* Function Prototype */
static int ds75_open(struct inode *inode, struct file *filp);
static int ds75_iotcl(struct inode *inode, struct file *flip, unsigned int cmd, unsigned long arg);
static int ds75_release(struct inode *inode, struct file *flip);
int ds75_attach_client(struct ds75_data * ds75, struct i2c_adapter *adapter);
int ds75_attach_adapter(struct i2c_adapter *adapter);
int ds75_detach_client(struct i2c_client *client);
/* Structure */
static struct file_operations tmpsensor_fops =
{
ioctl: ds75_iotcl,
open: ds75_open,
release: ds75_release,
};
static struct i2c_driver ds75_driver = {
.driver = {
.name = "DS75",
},
.attach_adapter = ds75_attach_adapter,
.detach_client = ds75_detach_client,
};
/* Global Variable */
static int s_nI2CMajor = 0;
static int s_bI2CDevOpen = 0;
static int s_nUseCnt = 0;
struct ds75_data *ds75;
static int ds75_open(struct inode *inode, struct file *flip)
{
I2C_DBG1( "DS75_DRIVER : Open\n");
if(s_bI2CDevOpen == 0)
{
I2C_DBG1("DS75_DRIVER : Device Open Successful!\n");
s_bI2CDevOpen = 1;
s_nUseCnt++;
}
else
{
I2C_DBG1("DS75_DRIVER : Device Already Opened Successfully!\n");
s_bI2CDevOpen = 1;
s_nUseCnt++;
}
return 0;
}
static int ds75_release(struct inode *inode, struct file *flip)
{
I2C_DBG1 (KERN_INFO "Entering ds75_release\n" );
if(s_bI2CDevOpen)
{
if( s_nUseCnt <= 0 )
{
I2C_DBG1("DS75_DRIVER : i2c driver can't be released!\n");
return -EIO;
}
else
{
I2C_DBG1("DS75_DRIVER : Release Successful!\n");
s_nUseCnt--;
if( s_nUseCnt == 0 )
{
s_bI2CDevOpen = 0;
I2C_DBG1("DS75_DRIVER : I2C Driver is Closed!\n");
}
}
return 0;
}
else
{
I2C_DBG1("DS75_DRIVER : Release Fail! (Device is Not Open)\n");
return -EIO;
}
}
/*
This function will read the Temperature from the device and copies to user space
*/
static int ds75_temp_read(struct ds75_msg_t *pData)
{
//unsigned char buffer[4];
signed char buffer[4];
int ret;
buffer[0]=0; /* Writing 0 in to Pointer register. --> Temprature read register */
if ((ret = i2c_master_send(&ds75->i2c_client,buffer,2)) !=2)
{
I2C_DBG2("DS75_DRIVER : Error writing to I2C ret = %d\n",ret);
return -1;
}
/* reading from the temperature read register */
if (i2c_master_recv(&ds75->i2c_client,buffer,2)!= 2)
{
I2C_DBG1("DS75_DRIVER : Error reading from I2C\n");
return -1;
}
//I2C_DBG3("DS75_DRIVER: data[0] = %d, data[1] = %d \n",buffer[0],buffer[1]);
//I2C_DBG3("DS75_DRIVER: data[0] = %d, data[1] = %d \n",buffer[0],buffer[1]);
/* Copy User Memory Area */
if(copy_to_user(pData->ReadData,buffer, 2 ) != 0)
{
I2C_DBG1("DS75_DRIVER : error in copying to user space");
return -1;
}
return 0; /* Success */
}
static int ds75_iotcl(struct inode *inode, struct file *flip, unsigned int cmd, unsigned long arg)
{
int nRetVal = 0;
if( ((struct ds75_msg_t *)arg) == NULL ){
I2C_DBG1("DS75_DRIVER : ioctl Message Buff must not be NULL\n");
return -EFAULT;
}
switch(cmd){
case TEMP_READ:
I2C_DBG2("DS75_DRIVER : ioctl TEMP_READ cmd %d\n",cmd);
nRetVal = ds75_temp_read((struct ds75_msg_t *) arg);
break;
default:
/* Error! */
I2C_DBG1("DS75_DRIVER : Command not implemented\n");
nRetVal = -EIO;
break;
}
return nRetVal;
}
/*
* i2c_attach_client - tries to detect and initialize slics
*/
int ds75_attach_client(struct ds75_data * ds75, struct i2c_adapter *adapter)
{
struct i2c_client * client;
/* register i2c client */
client = &ds75->i2c_client;
client->adapter = adapter;
client->driver = &ds75_driver;
// client->flags = I2C_CLIENT_ALLOW_USE;
client->addr = DS75_ADDR;
strlcpy(client->name, "DS75", I2C_NAME_SIZE);
i2c_set_clientdata(client, ds75);
if (i2c_attach_client(client))
return -1;
printk (KERN_INFO DS75_DRIVER_NAME ": I2C client attached\n");
return 0;
}
/*
* i2c_attach_adapter - initializes the maxim driver
*/
int ds75_attach_adapter(struct i2c_adapter *adapter)
{
/* allocate maxim_data structure */
ds75 = kmalloc(sizeof (struct ds75_data), GFP_KERNEL);
if (ds75 == NULL)
{
printk (KERN_ERR "Unable to allocate memory for ds75 temp sensor driver\n");
goto err0;
}
memset(ds75, 0, sizeof(struct ds75_data));
/* Attach Spi Client */
if (ds75_attach_client(ds75, adapter) != 0)
{
printk (KERN_ERR "No ds75 device detected\n");
goto err1;
}
return 0;
err1:
kfree(ds75);
err0:
return -1;
}
/*
* i2c_detach_client - cleans up the maxim driver
*/
int ds75_detach_client(struct i2c_client *client)
{
struct ds75_data *ds75 = i2c_get_clientdata(client);
if (ds75->owned_irq)
{
free_irq(ds75->irq, ds75);
ds75->owned_irq = 0;
}
i2c_detach_client(&ds75->i2c_client);
kfree (ds75); // Free the kernel memory */
return 0;
}
/*
* Temperature sensor DS75 init -
*
*/
int __init ds75_init(void)
{
int rc;
rc = i2c_add_driver(&ds75_driver);
if (rc)
{
printk (KERN_ERR DS75_DRIVER_NAME ": unable to add driver\n");
return rc;
}
rc = register_chrdev (DS75_DEVICE_MAJOR_NUM, DS75_DRIVER_NAME, &tmpsensor_fops);
if (rc)
{
printk (KERN_ERR DS75_DRIVER_NAME ": unable to register char device\n");
return rc;
}
return 0;
}
/**
* maxim _exit -
*
*
*/
void __exit ds75_exit(void)
{
unregister_chrdev (DS75_DEVICE_MAJOR_NUM, DS75_DRIVER_NAME);
i2c_del_driver(&ds75_driver);
}
MODULE_AUTHOR("xxxx");
MODULE_DESCRIPTION("DS75 I2C driver");
MODULE_LICENSE("GPL");
module_init(ds75_init);
module_exit(ds75_exit);
Regards,
Smitha
Please do not print this email unless it is absolutely necessary.
The information contained in this electronic message and any attachments to this message are intended for the exclusive use of the addressee(s) and may contain proprietary, confidential or privileged information. If you are not the intended recipient, you should not disseminate, distribute or copy this e-mail. Please notify the sender immediately and destroy all copies of this message and any attachments.
WARNING: Computer viruses can be transmitted via email. The recipient should check this email and any attachments for the presence of viruses. The company accepts no liability for any damage caused by any virus transmitted by this email.
www.wipro.com
[-- Attachment #2: Type: text/html, Size: 18804 bytes --]
^ permalink raw reply
* Re: [PATCH 53/57] sound: irq: Remove IRQF_DISABLED
From: Takashi Iwai @ 2011-09-22 9:42 UTC (permalink / raw)
To: Thomas Gleixner
Cc: alsa-devel, Kuninori Morimoto, Clemens Ladisch, Jaroslav Kysela,
Peter Ujfalusi, Paul Gortmaker, linux-arch, Russell King,
Jassi Brar, Manuel Lauss, Uwe Kleine-König, Axel Lin,
Liam Girdwood, cbe-oss-dev, Wan ZongShun, Lucas De Marchi,
Yong Zhang, linux-arm-kernel, Eric Miao, Geoff Levand,
Jiri Kosina, Mark Brown, linux-kernel, Sangbeom Kim, Paul Mundt,
Simon Horman, Joe Perches, Jarkko Nikula, linuxppc-dev
In-Reply-To: <alpine.LFD.2.02.1109211154280.2723@ionos>
At Wed, 21 Sep 2011 11:55:36 +0200 (CEST),
Thomas Gleixner wrote:
>
> > > We run all interrupt handlers with interrupts disabled
> > > and we even check and yell when an interrupt handler
> > > returns with interrupts enabled (see commit [b738a50a:
> > > genirq: Warn when handler enables interrupts]).
> > >
> > > So now this flag is a NOOP and can be removed.
> > >
> > > Signed-off-by: Yong Zhang <yong.zhang0@gmail.com>
> > > Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
> >
> > Do you want to merge by yourself or shall I take it to sound git tree?
> > Since IRQF_DISABLED isn't used, it can be applied safely in 3.1-based
> > tree, right?
>
> Yes, please go ahead. I'll pick up the leftovers.
OK, I applied Yong's (fixed) patch now to sound git tree.
thanks,
Takashi
^ permalink raw reply
* [PATCH 48/55] TTY: irq: Remove IRQF_DISABLED
From: Yong Zhang @ 2011-09-22 8:59 UTC (permalink / raw)
To: linux-kernel, linux-arch
Cc: Jesper Nilsson, linux-cris-kernel, nios2-dev, Greg Kroah-Hartman,
Paul Bolle, Mikael Starvik, yong.zhang0, linux-serial,
Jiri Kosina, Brian King, tglx, linuxppc-dev, Tobias Klauser,
Alan Cox
In-Reply-To: <1316681962-8217-1-git-send-email-yong.zhang0@gmail.com>
Since commit [e58aa3d2: genirq: Run irq handlers with interrupts disabled],
We run all interrupt handlers with interrupts disabled
and we even check and yell when an interrupt handler
returns with interrupts enabled (see commit [b738a50a:
genirq: Warn when handler enables interrupts]).
So now this flag is a NOOP and can be removed.
Signed-off-by: Yong Zhang <yong.zhang0@gmail.com>
Acked-by: Tobias Klauser <tklauser@distanz.ch>
---
drivers/tty/amiserial.c | 2 +-
drivers/tty/cyclades.c | 2 +-
drivers/tty/hvc/hvc_irq.c | 2 +-
drivers/tty/hvc/hvcs.c | 2 +-
drivers/tty/hvc/hvsi.c | 2 +-
drivers/tty/isicom.c | 2 +-
drivers/tty/serial/68328serial.c | 2 +-
drivers/tty/serial/altera_jtaguart.c | 2 +-
drivers/tty/serial/altera_uart.c | 2 +-
drivers/tty/serial/bfin_sport_uart.c | 2 +-
drivers/tty/serial/bfin_uart.c | 8 ++++----
drivers/tty/serial/crisv10.c | 18 +++++++++---------
drivers/tty/serial/icom.c | 2 +-
drivers/tty/serial/lantiq.c | 6 +++---
drivers/tty/serial/mcf.c | 2 +-
drivers/tty/serial/mpc52xx_uart.c | 2 +-
drivers/tty/serial/serial_ks8695.c | 8 ++++----
drivers/tty/serial/sh-sci.c | 2 +-
drivers/tty/serial/sn_console.c | 2 +-
19 files changed, 35 insertions(+), 35 deletions(-)
diff --git a/drivers/tty/amiserial.c b/drivers/tty/amiserial.c
index 6d43f55..b84c834 100644
--- a/drivers/tty/amiserial.c
+++ b/drivers/tty/amiserial.c
@@ -2017,7 +2017,7 @@ static int __init amiga_serial_probe(struct platform_device *pdev)
if (error)
goto fail_unregister;
- error = request_irq(IRQ_AMIGA_RBF, ser_rx_int, IRQF_DISABLED,
+ error = request_irq(IRQ_AMIGA_RBF, ser_rx_int, 0,
"serial RX", state);
if (error)
goto fail_free_irq;
diff --git a/drivers/tty/cyclades.c b/drivers/tty/cyclades.c
index 5beef49..c9bf779 100644
--- a/drivers/tty/cyclades.c
+++ b/drivers/tty/cyclades.c
@@ -3367,7 +3367,7 @@ static int __init cy_detect_isa(void)
/* allocate IRQ */
if (request_irq(cy_isa_irq, cyy_interrupt,
- IRQF_DISABLED, "Cyclom-Y", &cy_card[j])) {
+ 0, "Cyclom-Y", &cy_card[j])) {
printk(KERN_ERR "Cyclom-Y/ISA found at 0x%lx, but "
"could not allocate IRQ#%d.\n",
(unsigned long)cy_isa_address, cy_isa_irq);
diff --git a/drivers/tty/hvc/hvc_irq.c b/drivers/tty/hvc/hvc_irq.c
index 2623e17..c9adb05 100644
--- a/drivers/tty/hvc/hvc_irq.c
+++ b/drivers/tty/hvc/hvc_irq.c
@@ -28,7 +28,7 @@ int notifier_add_irq(struct hvc_struct *hp, int irq)
hp->irq_requested = 0;
return 0;
}
- rc = request_irq(irq, hvc_handle_interrupt, IRQF_DISABLED,
+ rc = request_irq(irq, hvc_handle_interrupt, 0,
"hvc_console", hp);
if (!rc)
hp->irq_requested = 1;
diff --git a/drivers/tty/hvc/hvcs.c b/drivers/tty/hvc/hvcs.c
index 1cd8715..b9040be 100644
--- a/drivers/tty/hvc/hvcs.c
+++ b/drivers/tty/hvc/hvcs.c
@@ -1057,7 +1057,7 @@ static int hvcs_enable_device(struct hvcs_struct *hvcsd, uint32_t unit_address,
* the conn was registered and now.
*/
if (!(rc = request_irq(irq, &hvcs_handle_interrupt,
- IRQF_DISABLED, "ibmhvcs", hvcsd))) {
+ 0, "ibmhvcs", hvcsd))) {
/*
* It is possible the vty-server was removed after the irq was
* requested but before we have time to enable interrupts.
diff --git a/drivers/tty/hvc/hvsi.c b/drivers/tty/hvc/hvsi.c
index c94e2f5..cdfa3e0 100644
--- a/drivers/tty/hvc/hvsi.c
+++ b/drivers/tty/hvc/hvsi.c
@@ -1105,7 +1105,7 @@ static int __init hvsi_init(void)
struct hvsi_struct *hp = &hvsi_ports[i];
int ret = 1;
- ret = request_irq(hp->virq, hvsi_interrupt, IRQF_DISABLED, "hvsi", hp);
+ ret = request_irq(hp->virq, hvsi_interrupt, 0, "hvsi", hp);
if (ret)
printk(KERN_ERR "HVSI: couldn't reserve irq 0x%x (error %i)\n",
hp->virq, ret);
diff --git a/drivers/tty/isicom.c b/drivers/tty/isicom.c
index db1cf9c..e5c295a 100644
--- a/drivers/tty/isicom.c
+++ b/drivers/tty/isicom.c
@@ -1598,7 +1598,7 @@ static int __devinit isicom_probe(struct pci_dev *pdev,
}
retval = request_irq(board->irq, isicom_interrupt,
- IRQF_SHARED | IRQF_DISABLED, ISICOM_NAME, board);
+ IRQF_SHARED, ISICOM_NAME, board);
if (retval < 0) {
dev_err(&pdev->dev, "Could not install handler at Irq %d. "
"Card%d will be disabled.\n", board->irq, index + 1);
diff --git a/drivers/tty/serial/68328serial.c b/drivers/tty/serial/68328serial.c
index e0a7754..84a822e 100644
--- a/drivers/tty/serial/68328serial.c
+++ b/drivers/tty/serial/68328serial.c
@@ -1341,7 +1341,7 @@ rs68328_init(void)
if (request_irq(uart_irqs[i],
rs_interrupt,
- IRQF_DISABLED,
+ 0,
"M68328_UART", info))
panic("Unable to attach 68328 serial interrupt\n");
}
diff --git a/drivers/tty/serial/altera_jtaguart.c b/drivers/tty/serial/altera_jtaguart.c
index 60e049b..00a73ec 100644
--- a/drivers/tty/serial/altera_jtaguart.c
+++ b/drivers/tty/serial/altera_jtaguart.c
@@ -218,7 +218,7 @@ static int altera_jtaguart_startup(struct uart_port *port)
unsigned long flags;
int ret;
- ret = request_irq(port->irq, altera_jtaguart_interrupt, IRQF_DISABLED,
+ ret = request_irq(port->irq, altera_jtaguart_interrupt, 0,
DRV_NAME, port);
if (ret) {
pr_err(DRV_NAME ": unable to attach Altera JTAG UART %d "
diff --git a/drivers/tty/serial/altera_uart.c b/drivers/tty/serial/altera_uart.c
index 50bc5a5..d902558 100644
--- a/drivers/tty/serial/altera_uart.c
+++ b/drivers/tty/serial/altera_uart.c
@@ -315,7 +315,7 @@ static int altera_uart_startup(struct uart_port *port)
return 0;
}
- ret = request_irq(port->irq, altera_uart_interrupt, IRQF_DISABLED,
+ ret = request_irq(port->irq, altera_uart_interrupt, 0,
DRV_NAME, port);
if (ret) {
pr_err(DRV_NAME ": unable to attach Altera UART %d "
diff --git a/drivers/tty/serial/bfin_sport_uart.c b/drivers/tty/serial/bfin_sport_uart.c
index 891d194..ee101c0 100644
--- a/drivers/tty/serial/bfin_sport_uart.c
+++ b/drivers/tty/serial/bfin_sport_uart.c
@@ -294,7 +294,7 @@ static int sport_startup(struct uart_port *port)
if (request_irq(gpio_to_irq(up->cts_pin),
sport_mctrl_cts_int,
IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING |
- IRQF_DISABLED, "BFIN_SPORT_UART_CTS", up)) {
+ 0, "BFIN_SPORT_UART_CTS", up)) {
up->cts_pin = -1;
dev_info(port->dev, "Unable to attach BlackFin UART over SPORT CTS interrupt. So, disable it.\n");
}
diff --git a/drivers/tty/serial/bfin_uart.c b/drivers/tty/serial/bfin_uart.c
index c7e592d..66afb98 100644
--- a/drivers/tty/serial/bfin_uart.c
+++ b/drivers/tty/serial/bfin_uart.c
@@ -667,14 +667,14 @@ static int bfin_serial_startup(struct uart_port *port)
kgdboc_break_enabled = 0;
else {
# endif
- if (request_irq(uart->rx_irq, bfin_serial_rx_int, IRQF_DISABLED,
+ if (request_irq(uart->rx_irq, bfin_serial_rx_int, 0,
"BFIN_UART_RX", uart)) {
printk(KERN_NOTICE "Unable to attach BlackFin UART RX interrupt\n");
return -EBUSY;
}
if (request_irq
- (uart->tx_irq, bfin_serial_tx_int, IRQF_DISABLED,
+ (uart->tx_irq, bfin_serial_tx_int, 0,
"BFIN_UART_TX", uart)) {
printk(KERN_NOTICE "Unable to attach BlackFin UART TX interrupt\n");
free_irq(uart->rx_irq, uart);
@@ -734,7 +734,7 @@ static int bfin_serial_startup(struct uart_port *port)
if (request_irq(gpio_to_irq(uart->cts_pin),
bfin_serial_mctrl_cts_int,
IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING |
- IRQF_DISABLED, "BFIN_UART_CTS", uart)) {
+ 0, "BFIN_UART_CTS", uart)) {
uart->cts_pin = -1;
pr_info("Unable to attach BlackFin UART CTS interrupt. So, disable it.\n");
}
@@ -745,7 +745,7 @@ static int bfin_serial_startup(struct uart_port *port)
#ifdef CONFIG_SERIAL_BFIN_HARD_CTSRTS
if (uart->cts_pin >= 0 && request_irq(uart->status_irq,
bfin_serial_mctrl_cts_int,
- IRQF_DISABLED, "BFIN_UART_MODEM_STATUS", uart)) {
+ 0, "BFIN_UART_MODEM_STATUS", uart)) {
uart->cts_pin = -1;
pr_info("Unable to attach BlackFin UART Modem Status interrupt.\n");
}
diff --git a/drivers/tty/serial/crisv10.c b/drivers/tty/serial/crisv10.c
index 58be715..a39e189 100644
--- a/drivers/tty/serial/crisv10.c
+++ b/drivers/tty/serial/crisv10.c
@@ -258,7 +258,7 @@ static struct e100_serial rs_table[] = {
.dma_out_enabled = 1,
.dma_out_nbr = SER0_TX_DMA_NBR,
.dma_out_irq_nbr = SER0_DMA_TX_IRQ_NBR,
- .dma_out_irq_flags = IRQF_DISABLED,
+ .dma_out_irq_flags = 0,
.dma_out_irq_description = "serial 0 dma tr",
#else
.dma_out_enabled = 0,
@@ -271,7 +271,7 @@ static struct e100_serial rs_table[] = {
.dma_in_enabled = 1,
.dma_in_nbr = SER0_RX_DMA_NBR,
.dma_in_irq_nbr = SER0_DMA_RX_IRQ_NBR,
- .dma_in_irq_flags = IRQF_DISABLED,
+ .dma_in_irq_flags = 0,
.dma_in_irq_description = "serial 0 dma rec",
#else
.dma_in_enabled = 0,
@@ -313,7 +313,7 @@ static struct e100_serial rs_table[] = {
.dma_out_enabled = 1,
.dma_out_nbr = SER1_TX_DMA_NBR,
.dma_out_irq_nbr = SER1_DMA_TX_IRQ_NBR,
- .dma_out_irq_flags = IRQF_DISABLED,
+ .dma_out_irq_flags = 0,
.dma_out_irq_description = "serial 1 dma tr",
#else
.dma_out_enabled = 0,
@@ -326,7 +326,7 @@ static struct e100_serial rs_table[] = {
.dma_in_enabled = 1,
.dma_in_nbr = SER1_RX_DMA_NBR,
.dma_in_irq_nbr = SER1_DMA_RX_IRQ_NBR,
- .dma_in_irq_flags = IRQF_DISABLED,
+ .dma_in_irq_flags = 0,
.dma_in_irq_description = "serial 1 dma rec",
#else
.dma_in_enabled = 0,
@@ -369,7 +369,7 @@ static struct e100_serial rs_table[] = {
.dma_out_enabled = 1,
.dma_out_nbr = SER2_TX_DMA_NBR,
.dma_out_irq_nbr = SER2_DMA_TX_IRQ_NBR,
- .dma_out_irq_flags = IRQF_DISABLED,
+ .dma_out_irq_flags = 0,
.dma_out_irq_description = "serial 2 dma tr",
#else
.dma_out_enabled = 0,
@@ -382,7 +382,7 @@ static struct e100_serial rs_table[] = {
.dma_in_enabled = 1,
.dma_in_nbr = SER2_RX_DMA_NBR,
.dma_in_irq_nbr = SER2_DMA_RX_IRQ_NBR,
- .dma_in_irq_flags = IRQF_DISABLED,
+ .dma_in_irq_flags = 0,
.dma_in_irq_description = "serial 2 dma rec",
#else
.dma_in_enabled = 0,
@@ -423,7 +423,7 @@ static struct e100_serial rs_table[] = {
.dma_out_enabled = 1,
.dma_out_nbr = SER3_TX_DMA_NBR,
.dma_out_irq_nbr = SER3_DMA_TX_IRQ_NBR,
- .dma_out_irq_flags = IRQF_DISABLED,
+ .dma_out_irq_flags = 0,
.dma_out_irq_description = "serial 3 dma tr",
#else
.dma_out_enabled = 0,
@@ -436,7 +436,7 @@ static struct e100_serial rs_table[] = {
.dma_in_enabled = 1,
.dma_in_nbr = SER3_RX_DMA_NBR,
.dma_in_irq_nbr = SER3_DMA_RX_IRQ_NBR,
- .dma_in_irq_flags = IRQF_DISABLED,
+ .dma_in_irq_flags = 0,
.dma_in_irq_description = "serial 3 dma rec",
#else
.dma_in_enabled = 0,
@@ -4558,7 +4558,7 @@ static int __init rs_init(void)
/* hook the irq's for DMA channel 6 and 7, serial output and input, and some more... */
if (request_irq(SERIAL_IRQ_NBR, ser_interrupt,
- IRQF_SHARED | IRQF_DISABLED, "serial ", driver))
+ IRQF_SHARED, "serial ", driver))
panic("%s: Failed to request irq8", __func__);
#endif
diff --git a/drivers/tty/serial/icom.c b/drivers/tty/serial/icom.c
index 8a869e5..d55709a 100644
--- a/drivers/tty/serial/icom.c
+++ b/drivers/tty/serial/icom.c
@@ -1554,7 +1554,7 @@ static int __devinit icom_probe(struct pci_dev *dev,
/* save off irq and request irq line */
if ( (retval = request_irq(dev->irq, icom_interrupt,
- IRQF_DISABLED | IRQF_SHARED, ICOM_DRIVER_NAME,
+ IRQF_SHARED, ICOM_DRIVER_NAME,
(void *) icom_adapter))) {
goto probe_exit2;
}
diff --git a/drivers/tty/serial/lantiq.c b/drivers/tty/serial/lantiq.c
index bc95f52..96c1cac 100644
--- a/drivers/tty/serial/lantiq.c
+++ b/drivers/tty/serial/lantiq.c
@@ -338,21 +338,21 @@ lqasc_startup(struct uart_port *port)
ASCCON_ROEN, port->membase + LTQ_ASC_CON);
retval = request_irq(ltq_port->tx_irq, lqasc_tx_int,
- IRQF_DISABLED, "asc_tx", port);
+ 0, "asc_tx", port);
if (retval) {
pr_err("failed to request lqasc_tx_int\n");
return retval;
}
retval = request_irq(ltq_port->rx_irq, lqasc_rx_int,
- IRQF_DISABLED, "asc_rx", port);
+ 0, "asc_rx", port);
if (retval) {
pr_err("failed to request lqasc_rx_int\n");
goto err1;
}
retval = request_irq(ltq_port->err_irq, lqasc_err_int,
- IRQF_DISABLED, "asc_err", port);
+ 0, "asc_err", port);
if (retval) {
pr_err("failed to request lqasc_err_int\n");
goto err2;
diff --git a/drivers/tty/serial/mcf.c b/drivers/tty/serial/mcf.c
index 3394b7c..9afca09 100644
--- a/drivers/tty/serial/mcf.c
+++ b/drivers/tty/serial/mcf.c
@@ -380,7 +380,7 @@ static void mcf_config_port(struct uart_port *port, int flags)
/* Clear mask, so no surprise interrupts. */
writeb(0, port->membase + MCFUART_UIMR);
- if (request_irq(port->irq, mcf_interrupt, IRQF_DISABLED, "UART", port))
+ if (request_irq(port->irq, mcf_interrupt, 0, "UART", port))
printk(KERN_ERR "MCF: unable to attach ColdFire UART %d "
"interrupt vector=%d\n", port->line, port->irq);
}
diff --git a/drivers/tty/serial/mpc52xx_uart.c b/drivers/tty/serial/mpc52xx_uart.c
index a0bcd8a..a0d02ef 100644
--- a/drivers/tty/serial/mpc52xx_uart.c
+++ b/drivers/tty/serial/mpc52xx_uart.c
@@ -273,7 +273,7 @@ static unsigned int mpc5200b_psc_set_baudrate(struct uart_port *port,
static void mpc52xx_psc_get_irq(struct uart_port *port, struct device_node *np)
{
- port->irqflags = IRQF_DISABLED;
+ port->irqflags = 0;
port->irq = irq_of_parse_and_map(np, 0);
}
diff --git a/drivers/tty/serial/serial_ks8695.c b/drivers/tty/serial/serial_ks8695.c
index 2430319..01949af 100644
--- a/drivers/tty/serial/serial_ks8695.c
+++ b/drivers/tty/serial/serial_ks8695.c
@@ -336,19 +336,19 @@ static int ks8695uart_startup(struct uart_port *port)
/*
* Allocate the IRQ
*/
- retval = request_irq(KS8695_IRQ_UART_TX, ks8695uart_tx_chars, IRQF_DISABLED, "UART TX", port);
+ retval = request_irq(KS8695_IRQ_UART_TX, ks8695uart_tx_chars, 0, "UART TX", port);
if (retval)
goto err_tx;
- retval = request_irq(KS8695_IRQ_UART_RX, ks8695uart_rx_chars, IRQF_DISABLED, "UART RX", port);
+ retval = request_irq(KS8695_IRQ_UART_RX, ks8695uart_rx_chars, 0, "UART RX", port);
if (retval)
goto err_rx;
- retval = request_irq(KS8695_IRQ_UART_LINE_STATUS, ks8695uart_rx_chars, IRQF_DISABLED, "UART LineStatus", port);
+ retval = request_irq(KS8695_IRQ_UART_LINE_STATUS, ks8695uart_rx_chars, 0, "UART LineStatus", port);
if (retval)
goto err_ls;
- retval = request_irq(KS8695_IRQ_UART_MODEM_STATUS, ks8695uart_modem_status, IRQF_DISABLED, "UART ModemStatus", port);
+ retval = request_irq(KS8695_IRQ_UART_MODEM_STATUS, ks8695uart_modem_status, 0, "UART ModemStatus", port);
if (retval)
goto err_ms;
diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c
index 25c3549..1945c70 100644
--- a/drivers/tty/serial/sh-sci.c
+++ b/drivers/tty/serial/sh-sci.c
@@ -1967,7 +1967,7 @@ static int __devinit sci_init_single(struct platform_device *dev,
* For the muxed case there's nothing more to do.
*/
port->irq = p->irqs[SCIx_RXI_IRQ];
- port->irqflags = IRQF_DISABLED;
+ port->irqflags = 0;
port->serial_in = sci_serial_in;
port->serial_out = sci_serial_out;
diff --git a/drivers/tty/serial/sn_console.c b/drivers/tty/serial/sn_console.c
index 377ae74..2969c86 100644
--- a/drivers/tty/serial/sn_console.c
+++ b/drivers/tty/serial/sn_console.c
@@ -737,7 +737,7 @@ static void __init sn_sal_switch_to_interrupts(struct sn_cons_port *port)
DPRINTF("sn_console: switching to interrupt driven console\n");
if (request_irq(SGI_UART_VECTOR, sn_sal_interrupt,
- IRQF_DISABLED | IRQF_SHARED,
+ IRQF_SHARED,
"SAL console driver", port) >= 0) {
spin_lock_irqsave(&port->sc_port.lock, flags);
port->sc_port.irq = SGI_UART_VECTOR;
--
1.7.4.1
^ permalink raw reply related
* [PATCH 53/55] sound: irq: Remove IRQF_DISABLED
From: Yong Zhang @ 2011-09-22 8:59 UTC (permalink / raw)
To: linux-kernel, linux-arch
Cc: alsa-devel, Kuninori Morimoto, Takashi Iwai, Clemens Ladisch,
Jaroslav Kysela, Peter Ujfalusi, Paul Gortmaker, Russell King,
Jassi Brar, Manuel Lauss, Uwe Kleine-König, Axel Lin,
Liam Girdwood, cbe-oss-dev, Lucas De Marchi, yong.zhang0, tglx,
linux-arm-kernel, Eric Miao, Geoff Levand, Jiri Kosina,
Mark Brown, Sangbeom Kim, Paul Mundt, Simon Horman, Joe Perches,
Jarkko Nikula, linuxppc-dev
In-Reply-To: <1316681962-8217-1-git-send-email-yong.zhang0@gmail.com>
Since commit [e58aa3d2: genirq: Run irq handlers with interrupts disabled],
We run all interrupt handlers with interrupts disabled
and we even check and yell when an interrupt handler
returns with interrupts enabled (see commit [b738a50a:
genirq: Warn when handler enables interrupts]).
So now this flag is a NOOP and can be removed.
Signed-off-by: Yong Zhang <yong.zhang0@gmail.com>
Acked-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Takashi Iwai <tiwai@suse.de>
---
include/sound/initval.h | 2 +-
sound/arm/aaci.c | 2 +-
sound/arm/pxa2xx-ac97-lib.c | 2 +-
sound/drivers/ml403-ac97cr.c | 4 ++--
sound/drivers/mpu401/mpu401_uart.c | 2 +-
sound/drivers/mtpav.c | 2 +-
sound/drivers/serial-u16550.c | 2 +-
sound/isa/ad1816a/ad1816a_lib.c | 2 +-
sound/isa/es1688/es1688_lib.c | 2 +-
sound/isa/es18xx.c | 2 +-
sound/isa/gus/gus_main.c | 2 +-
sound/isa/gus/gusmax.c | 2 +-
sound/isa/gus/interwave.c | 2 +-
sound/isa/opl3sa2.c | 2 +-
sound/isa/opti9xx/opti92x-ad1848.c | 2 +-
sound/isa/sb/sb_common.c | 2 +-
sound/isa/wavefront/wavefront.c | 2 +-
sound/isa/wss/wss_lib.c | 2 +-
sound/mips/au1x00.c | 4 ++--
sound/pci/sis7019.c | 4 ++--
sound/ppc/snd_ps3.c | 2 +-
sound/soc/au1x/dma.c | 2 +-
sound/soc/codecs/tlv320dac33.c | 2 +-
sound/soc/nuc900/nuc900-pcm.c | 2 +-
sound/soc/samsung/ac97.c | 2 +-
sound/soc/sh/fsi.c | 2 +-
sound/soc/txx9/txx9aclc-ac97.c | 2 +-
sound/sparc/amd7930.c | 2 +-
28 files changed, 31 insertions(+), 31 deletions(-)
diff --git a/include/sound/initval.h b/include/sound/initval.h
index 1daa6df..f99a0d2 100644
--- a/include/sound/initval.h
+++ b/include/sound/initval.h
@@ -62,7 +62,7 @@ static int snd_legacy_find_free_irq(int *irq_table)
{
while (*irq_table != -1) {
if (!request_irq(*irq_table, snd_legacy_empty_irq_handler,
- IRQF_DISABLED | IRQF_PROBE_SHARED, "ALSA Test IRQ",
+ IRQF_PROBE_SHARED, "ALSA Test IRQ",
(void *) irq_table)) {
free_irq(*irq_table, (void *) irq_table);
return *irq_table;
diff --git a/sound/arm/aaci.c b/sound/arm/aaci.c
index d0cead3..e518d38 100644
--- a/sound/arm/aaci.c
+++ b/sound/arm/aaci.c
@@ -443,7 +443,7 @@ static int aaci_pcm_open(struct snd_pcm_substream *substream)
mutex_lock(&aaci->irq_lock);
if (!aaci->users++) {
ret = request_irq(aaci->dev->irq[0], aaci_irq,
- IRQF_SHARED | IRQF_DISABLED, DRIVER_NAME, aaci);
+ IRQF_SHARED, DRIVER_NAME, aaci);
if (ret != 0)
aaci->users--;
}
diff --git a/sound/arm/pxa2xx-ac97-lib.c b/sound/arm/pxa2xx-ac97-lib.c
index 88eec38..8ad6535 100644
--- a/sound/arm/pxa2xx-ac97-lib.c
+++ b/sound/arm/pxa2xx-ac97-lib.c
@@ -359,7 +359,7 @@ int __devinit pxa2xx_ac97_hw_probe(struct platform_device *dev)
if (ret)
goto err_clk2;
- ret = request_irq(IRQ_AC97, pxa2xx_ac97_irq, IRQF_DISABLED, "AC97", NULL);
+ ret = request_irq(IRQ_AC97, pxa2xx_ac97_irq, 0, "AC97", NULL);
if (ret < 0)
goto err_irq;
diff --git a/sound/drivers/ml403-ac97cr.c b/sound/drivers/ml403-ac97cr.c
index 5cfcb90..2c7a763 100644
--- a/sound/drivers/ml403-ac97cr.c
+++ b/sound/drivers/ml403-ac97cr.c
@@ -1153,7 +1153,7 @@ snd_ml403_ac97cr_create(struct snd_card *card, struct platform_device *pfdev,
"0x%x done\n", (unsigned int)ml403_ac97cr->port);
/* get irq */
irq = platform_get_irq(pfdev, 0);
- if (request_irq(irq, snd_ml403_ac97cr_irq, IRQF_DISABLED,
+ if (request_irq(irq, snd_ml403_ac97cr_irq, 0,
dev_name(&pfdev->dev), (void *)ml403_ac97cr)) {
snd_printk(KERN_ERR SND_ML403_AC97CR_DRIVER ": "
"unable to grab IRQ %d\n",
@@ -1166,7 +1166,7 @@ snd_ml403_ac97cr_create(struct snd_card *card, struct platform_device *pfdev,
"request (playback) irq %d done\n",
ml403_ac97cr->irq);
irq = platform_get_irq(pfdev, 1);
- if (request_irq(irq, snd_ml403_ac97cr_irq, IRQF_DISABLED,
+ if (request_irq(irq, snd_ml403_ac97cr_irq, 0,
dev_name(&pfdev->dev), (void *)ml403_ac97cr)) {
snd_printk(KERN_ERR SND_ML403_AC97CR_DRIVER ": "
"unable to grab IRQ %d\n",
diff --git a/sound/drivers/mpu401/mpu401_uart.c b/sound/drivers/mpu401/mpu401_uart.c
index 34df505..1cff331 100644
--- a/sound/drivers/mpu401/mpu401_uart.c
+++ b/sound/drivers/mpu401/mpu401_uart.c
@@ -578,7 +578,7 @@ int snd_mpu401_uart_new(struct snd_card *card, int device,
else
mpu->cport = port + 1;
if (irq >= 0) {
- if (request_irq(irq, snd_mpu401_uart_interrupt, IRQF_DISABLED,
+ if (request_irq(irq, snd_mpu401_uart_interrupt, 0,
"MPU401 UART", (void *) mpu)) {
snd_printk(KERN_ERR "mpu401_uart: "
"unable to grab IRQ %d\n", irq);
diff --git a/sound/drivers/mtpav.c b/sound/drivers/mtpav.c
index f50021c..7693079 100644
--- a/sound/drivers/mtpav.c
+++ b/sound/drivers/mtpav.c
@@ -590,7 +590,7 @@ static int __devinit snd_mtpav_get_ISA(struct mtpav * mcard)
return -EBUSY;
}
mcard->port = port;
- if (request_irq(irq, snd_mtpav_irqh, IRQF_DISABLED, "MOTU MTPAV", mcard)) {
+ if (request_irq(irq, snd_mtpav_irqh, 0, "MOTU MTPAV", mcard)) {
snd_printk(KERN_ERR "MTVAP IRQ %d busy\n", irq);
return -EBUSY;
}
diff --git a/sound/drivers/serial-u16550.c b/sound/drivers/serial-u16550.c
index 6c5bf58..85aad43 100644
--- a/sound/drivers/serial-u16550.c
+++ b/sound/drivers/serial-u16550.c
@@ -816,7 +816,7 @@ static int __devinit snd_uart16550_create(struct snd_card *card,
if (irq >= 0 && irq != SNDRV_AUTO_IRQ) {
if (request_irq(irq, snd_uart16550_interrupt,
- IRQF_DISABLED, "Serial MIDI", uart)) {
+ 0, "Serial MIDI", uart)) {
snd_printk(KERN_WARNING
"irq %d busy. Using Polling.\n", irq);
} else {
diff --git a/sound/isa/ad1816a/ad1816a_lib.c b/sound/isa/ad1816a/ad1816a_lib.c
index 05aef8b..177eed3 100644
--- a/sound/isa/ad1816a/ad1816a_lib.c
+++ b/sound/isa/ad1816a/ad1816a_lib.c
@@ -595,7 +595,7 @@ int __devinit snd_ad1816a_create(struct snd_card *card,
snd_ad1816a_free(chip);
return -EBUSY;
}
- if (request_irq(irq, snd_ad1816a_interrupt, IRQF_DISABLED, "AD1816A", (void *) chip)) {
+ if (request_irq(irq, snd_ad1816a_interrupt, 0, "AD1816A", (void *) chip)) {
snd_printk(KERN_ERR "ad1816a: can't grab IRQ %d\n", irq);
snd_ad1816a_free(chip);
return -EBUSY;
diff --git a/sound/isa/es1688/es1688_lib.c b/sound/isa/es1688/es1688_lib.c
index 0767620..d3eab6f 100644
--- a/sound/isa/es1688/es1688_lib.c
+++ b/sound/isa/es1688/es1688_lib.c
@@ -661,7 +661,7 @@ int snd_es1688_create(struct snd_card *card,
snd_printk(KERN_ERR "es1688: can't grab port 0x%lx\n", port + 4);
return -EBUSY;
}
- if (request_irq(irq, snd_es1688_interrupt, IRQF_DISABLED, "ES1688", (void *) chip)) {
+ if (request_irq(irq, snd_es1688_interrupt, 0, "ES1688", (void *) chip)) {
snd_printk(KERN_ERR "es1688: can't grab IRQ %d\n", irq);
return -EBUSY;
}
diff --git a/sound/isa/es18xx.c b/sound/isa/es18xx.c
index aeee8f8..bf6ad0b 100644
--- a/sound/isa/es18xx.c
+++ b/sound/isa/es18xx.c
@@ -1805,7 +1805,7 @@ static int __devinit snd_es18xx_new_device(struct snd_card *card,
return -EBUSY;
}
- if (request_irq(irq, snd_es18xx_interrupt, IRQF_DISABLED, "ES18xx",
+ if (request_irq(irq, snd_es18xx_interrupt, 0, "ES18xx",
(void *) card)) {
snd_es18xx_free(card);
snd_printk(KERN_ERR PFX "unable to grap IRQ %d\n", irq);
diff --git a/sound/isa/gus/gus_main.c b/sound/isa/gus/gus_main.c
index 12eb98f..3167e5a 100644
--- a/sound/isa/gus/gus_main.c
+++ b/sound/isa/gus/gus_main.c
@@ -180,7 +180,7 @@ int snd_gus_create(struct snd_card *card,
snd_gus_free(gus);
return -EBUSY;
}
- if (irq >= 0 && request_irq(irq, snd_gus_interrupt, IRQF_DISABLED, "GUS GF1", (void *) gus)) {
+ if (irq >= 0 && request_irq(irq, snd_gus_interrupt, 0, "GUS GF1", (void *) gus)) {
snd_printk(KERN_ERR "gus: can't grab irq %d\n", irq);
snd_gus_free(gus);
return -EBUSY;
diff --git a/sound/isa/gus/gusmax.c b/sound/isa/gus/gusmax.c
index 3e4a58b..c43faa0 100644
--- a/sound/isa/gus/gusmax.c
+++ b/sound/isa/gus/gusmax.c
@@ -291,7 +291,7 @@ static int __devinit snd_gusmax_probe(struct device *pdev, unsigned int dev)
goto _err;
}
- if (request_irq(xirq, snd_gusmax_interrupt, IRQF_DISABLED, "GUS MAX", (void *)maxcard)) {
+ if (request_irq(xirq, snd_gusmax_interrupt, 0, "GUS MAX", (void *)maxcard)) {
snd_printk(KERN_ERR PFX "unable to grab IRQ %d\n", xirq);
err = -EBUSY;
goto _err;
diff --git a/sound/isa/gus/interwave.c b/sound/isa/gus/interwave.c
index c7b80e4..5f869a3 100644
--- a/sound/isa/gus/interwave.c
+++ b/sound/isa/gus/interwave.c
@@ -684,7 +684,7 @@ static int __devinit snd_interwave_probe(struct snd_card *card, int dev)
if ((err = snd_gus_initialize(gus)) < 0)
return err;
- if (request_irq(xirq, snd_interwave_interrupt, IRQF_DISABLED,
+ if (request_irq(xirq, snd_interwave_interrupt, 0,
"InterWave", iwcard)) {
snd_printk(KERN_ERR PFX "unable to grab IRQ %d\n", xirq);
return -EBUSY;
diff --git a/sound/isa/opl3sa2.c b/sound/isa/opl3sa2.c
index de99f47..bbafb0b 100644
--- a/sound/isa/opl3sa2.c
+++ b/sound/isa/opl3sa2.c
@@ -667,7 +667,7 @@ static int __devinit snd_opl3sa2_probe(struct snd_card *card, int dev)
err = snd_opl3sa2_detect(card);
if (err < 0)
return err;
- err = request_irq(xirq, snd_opl3sa2_interrupt, IRQF_DISABLED,
+ err = request_irq(xirq, snd_opl3sa2_interrupt, 0,
"OPL3-SA2", card);
if (err) {
snd_printk(KERN_ERR PFX "can't grab IRQ %d\n", xirq);
diff --git a/sound/isa/opti9xx/opti92x-ad1848.c b/sound/isa/opti9xx/opti92x-ad1848.c
index 346e12b..6dbbfa7 100644
--- a/sound/isa/opti9xx/opti92x-ad1848.c
+++ b/sound/isa/opti9xx/opti92x-ad1848.c
@@ -892,7 +892,7 @@ static int __devinit snd_opti9xx_probe(struct snd_card *card)
#endif
#ifdef OPTi93X
error = request_irq(irq, snd_opti93x_interrupt,
- IRQF_DISABLED, DEV_NAME" - WSS", chip);
+ 0, DEV_NAME" - WSS", chip);
if (error < 0) {
snd_printk(KERN_ERR "opti9xx: can't grab IRQ %d\n", irq);
return error;
diff --git a/sound/isa/sb/sb_common.c b/sound/isa/sb/sb_common.c
index eae6c1c..d2e1921 100644
--- a/sound/isa/sb/sb_common.c
+++ b/sound/isa/sb/sb_common.c
@@ -240,7 +240,7 @@ int snd_sbdsp_create(struct snd_card *card,
if (request_irq(irq, irq_handler,
(hardware == SB_HW_ALS4000 ||
hardware == SB_HW_CS5530) ?
- IRQF_SHARED : IRQF_DISABLED,
+ IRQF_SHARED : 0,
"SoundBlaster", (void *) chip)) {
snd_printk(KERN_ERR "sb: can't grab irq %d\n", irq);
snd_sbdsp_free(chip);
diff --git a/sound/isa/wavefront/wavefront.c b/sound/isa/wavefront/wavefront.c
index 83f291d..8714297 100644
--- a/sound/isa/wavefront/wavefront.c
+++ b/sound/isa/wavefront/wavefront.c
@@ -418,7 +418,7 @@ snd_wavefront_probe (struct snd_card *card, int dev)
return -EBUSY;
}
if (request_irq(ics2115_irq[dev], snd_wavefront_ics2115_interrupt,
- IRQF_DISABLED, "ICS2115", acard)) {
+ 0, "ICS2115", acard)) {
snd_printk(KERN_ERR "unable to use ICS2115 IRQ %d\n", ics2115_irq[dev]);
return -EBUSY;
}
diff --git a/sound/isa/wss/wss_lib.c b/sound/isa/wss/wss_lib.c
index 2a42cc3..7277c5b 100644
--- a/sound/isa/wss/wss_lib.c
+++ b/sound/isa/wss/wss_lib.c
@@ -1833,7 +1833,7 @@ int snd_wss_create(struct snd_card *card,
}
chip->cport = cport;
if (!(hwshare & WSS_HWSHARE_IRQ))
- if (request_irq(irq, snd_wss_interrupt, IRQF_DISABLED,
+ if (request_irq(irq, snd_wss_interrupt, 0,
"WSS", (void *) chip)) {
snd_printk(KERN_ERR "wss: can't grab IRQ %d\n", irq);
snd_wss_free(chip);
diff --git a/sound/mips/au1x00.c b/sound/mips/au1x00.c
index 446cf97..7567ebd 100644
--- a/sound/mips/au1x00.c
+++ b/sound/mips/au1x00.c
@@ -465,13 +465,13 @@ snd_au1000_pcm_new(struct snd_au1000 *au1000)
flags = claim_dma_lock();
if ((au1000->stream[PLAYBACK]->dma = request_au1000_dma(DMA_ID_AC97C_TX,
- "AC97 TX", au1000_dma_interrupt, IRQF_DISABLED,
+ "AC97 TX", au1000_dma_interrupt, 0,
au1000->stream[PLAYBACK])) < 0) {
release_dma_lock(flags);
return -EBUSY;
}
if ((au1000->stream[CAPTURE]->dma = request_au1000_dma(DMA_ID_AC97C_RX,
- "AC97 RX", au1000_dma_interrupt, IRQF_DISABLED,
+ "AC97 RX", au1000_dma_interrupt, 0,
au1000->stream[CAPTURE])) < 0){
release_dma_lock(flags);
return -EBUSY;
diff --git a/sound/pci/sis7019.c b/sound/pci/sis7019.c
index bcf6152..5ffb20b 100644
--- a/sound/pci/sis7019.c
+++ b/sound/pci/sis7019.c
@@ -1234,7 +1234,7 @@ static int sis_resume(struct pci_dev *pci)
goto error;
}
- if (request_irq(pci->irq, sis_interrupt, IRQF_DISABLED|IRQF_SHARED,
+ if (request_irq(pci->irq, sis_interrupt, IRQF_SHARED,
KBUILD_MODNAME, sis)) {
printk(KERN_ERR "sis7019: unable to regain IRQ %d\n", pci->irq);
goto error;
@@ -1340,7 +1340,7 @@ static int __devinit sis_chip_create(struct snd_card *card,
if (rc)
goto error_out_cleanup;
- if (request_irq(pci->irq, sis_interrupt, IRQF_DISABLED|IRQF_SHARED,
+ if (request_irq(pci->irq, sis_interrupt, IRQF_SHARED,
KBUILD_MODNAME, sis)) {
printk(KERN_ERR "unable to allocate irq %d\n", sis->irq);
goto error_out_cleanup;
diff --git a/sound/ppc/snd_ps3.c b/sound/ppc/snd_ps3.c
index bc823a5..775bd95 100644
--- a/sound/ppc/snd_ps3.c
+++ b/sound/ppc/snd_ps3.c
@@ -845,7 +845,7 @@ static int __devinit snd_ps3_allocate_irq(void)
return ret;
}
- ret = request_irq(the_card.irq_no, snd_ps3_interrupt, IRQF_DISABLED,
+ ret = request_irq(the_card.irq_no, snd_ps3_interrupt, 0,
SND_PS3_DRIVER_NAME, &the_card);
if (ret) {
pr_info("%s: request_irq failed (%d)\n", __func__, ret);
diff --git a/sound/soc/au1x/dma.c b/sound/soc/au1x/dma.c
index 7aa5b76..177f713 100644
--- a/sound/soc/au1x/dma.c
+++ b/sound/soc/au1x/dma.c
@@ -211,7 +211,7 @@ static int alchemy_pcm_open(struct snd_pcm_substream *substream)
/* DMA setup */
name = (s == SNDRV_PCM_STREAM_PLAYBACK) ? "audio-tx" : "audio-rx";
ctx->stream[s].dma = request_au1000_dma(dmaids[s], name,
- au1000_dma_interrupt, IRQF_DISABLED,
+ au1000_dma_interrupt, 0,
&ctx->stream[s]);
set_dma_mode(ctx->stream[s].dma,
get_dma_mode(ctx->stream[s].dma) & ~DMA_NC);
diff --git a/sound/soc/codecs/tlv320dac33.c b/sound/soc/codecs/tlv320dac33.c
index faa5e9f..243d177 100644
--- a/sound/soc/codecs/tlv320dac33.c
+++ b/sound/soc/codecs/tlv320dac33.c
@@ -1431,7 +1431,7 @@ static int dac33_soc_probe(struct snd_soc_codec *codec)
/* Check if the IRQ number is valid and request it */
if (dac33->irq >= 0) {
ret = request_irq(dac33->irq, dac33_interrupt_handler,
- IRQF_TRIGGER_RISING | IRQF_DISABLED,
+ IRQF_TRIGGER_RISING,
codec->name, codec);
if (ret < 0) {
dev_err(codec->dev, "Could not request IRQ%d (%d)\n",
diff --git a/sound/soc/nuc900/nuc900-pcm.c b/sound/soc/nuc900/nuc900-pcm.c
index e46d551..865b288 100644
--- a/sound/soc/nuc900/nuc900-pcm.c
+++ b/sound/soc/nuc900/nuc900-pcm.c
@@ -268,7 +268,7 @@ static int nuc900_dma_open(struct snd_pcm_substream *substream)
nuc900_audio = nuc900_ac97_data;
if (request_irq(nuc900_audio->irq_num, nuc900_dma_interrupt,
- IRQF_DISABLED, "nuc900-dma", substream))
+ 0, "nuc900-dma", substream))
return -EBUSY;
runtime->private_data = nuc900_audio;
diff --git a/sound/soc/samsung/ac97.c b/sound/soc/samsung/ac97.c
index b4f9b00..41b387b 100644
--- a/sound/soc/samsung/ac97.c
+++ b/sound/soc/samsung/ac97.c
@@ -450,7 +450,7 @@ static __devinit int s3c_ac97_probe(struct platform_device *pdev)
}
ret = request_irq(irq_res->start, s3c_ac97_irq,
- IRQF_DISABLED, "AC97", NULL);
+ 0, "AC97", NULL);
if (ret < 0) {
dev_err(&pdev->dev, "ac97: interrupt request failed.\n");
goto err4;
diff --git a/sound/soc/sh/fsi.c b/sound/soc/sh/fsi.c
index 8e112cc..1493ebf 100644
--- a/sound/soc/sh/fsi.c
+++ b/sound/soc/sh/fsi.c
@@ -1285,7 +1285,7 @@ static int fsi_probe(struct platform_device *pdev)
pm_runtime_enable(&pdev->dev);
dev_set_drvdata(&pdev->dev, master);
- ret = request_irq(irq, &fsi_interrupt, IRQF_DISABLED,
+ ret = request_irq(irq, &fsi_interrupt, 0,
id_entry->name, master);
if (ret) {
dev_err(&pdev->dev, "irq request err\n");
diff --git a/sound/soc/txx9/txx9aclc-ac97.c b/sound/soc/txx9/txx9aclc-ac97.c
index 743d07b..a4e3f55 100644
--- a/sound/soc/txx9/txx9aclc-ac97.c
+++ b/sound/soc/txx9/txx9aclc-ac97.c
@@ -201,7 +201,7 @@ static int __devinit txx9aclc_ac97_dev_probe(struct platform_device *pdev)
if (!drvdata->base)
return -EBUSY;
err = devm_request_irq(&pdev->dev, irq, txx9aclc_ac97_irq,
- IRQF_DISABLED, dev_name(&pdev->dev), drvdata);
+ 0, dev_name(&pdev->dev), drvdata);
if (err < 0)
return err;
diff --git a/sound/sparc/amd7930.c b/sound/sparc/amd7930.c
index ad7d4d7..f036776 100644
--- a/sound/sparc/amd7930.c
+++ b/sound/sparc/amd7930.c
@@ -962,7 +962,7 @@ static int __devinit snd_amd7930_create(struct snd_card *card,
amd7930_idle(amd);
if (request_irq(irq, snd_amd7930_interrupt,
- IRQF_DISABLED | IRQF_SHARED, "amd7930", amd)) {
+ IRQF_SHARED, "amd7930", amd)) {
snd_printk(KERN_ERR "amd7930-%d: Unable to grab IRQ %d\n",
dev, irq);
snd_amd7930_free(amd);
--
1.7.4.1
^ permalink raw reply related
* [PATCH 49/55] video: irq: Remove IRQF_DISABLED
From: Yong Zhang @ 2011-09-22 8:59 UTC (permalink / raw)
To: linux-kernel, linux-arch
Cc: linux-fbdev, Paul Gortmaker, Laurent Pinchart, Daniel Walker,
Kukjin Kim, Florian Tobias Schandinat, Tomi Valkeinen,
Archit Taneja, David Brown, Anatolij Gustschin, cbe-oss-dev,
Wan ZongShun, linux-arm-msm, yong.zhang0, Ben Dooks, tglx,
linux-omap, linux-arm-kernel, Geoff Levand, Jiri Kosina,
Bryan Huntsman, Andrew Morton, linuxppc-dev
In-Reply-To: <1316681962-8217-1-git-send-email-yong.zhang0@gmail.com>
Since commit [e58aa3d2: genirq: Run irq handlers with interrupts disabled],
We run all interrupt handlers with interrupts disabled
and we even check and yell when an interrupt handler
returns with interrupts enabled (see commit [b738a50a:
genirq: Warn when handler enables interrupts]).
So now this flag is a NOOP and can be removed.
Signed-off-by: Yong Zhang <yong.zhang0@gmail.com>
Acked-by: David Brown <davidb@codeaurora.org>
---
drivers/video/au1200fb.c | 2 +-
drivers/video/bf54x-lq043fb.c | 2 +-
drivers/video/bfin-lq035q1-fb.c | 2 +-
drivers/video/bfin-t350mcqb-fb.c | 2 +-
drivers/video/bfin_adv7393fb.c | 2 +-
drivers/video/mb862xx/mb862xxfbdrv.c | 4 ++--
drivers/video/msm/mddi.c | 2 +-
drivers/video/msm/mdp.c | 2 +-
drivers/video/nuc900fb.c | 2 +-
drivers/video/omap2/displays/panel-taal.c | 2 +-
drivers/video/ps3fb.c | 2 +-
drivers/video/pxa3xx-gcu.c | 2 +-
drivers/video/pxafb.c | 2 +-
drivers/video/s3c2410fb.c | 2 +-
drivers/video/sa1100fb.c | 3 +--
drivers/video/sh_mobile_lcdcfb.c | 2 +-
drivers/video/tmiofb.c | 2 +-
drivers/video/vt8500lcdfb.c | 2 +-
18 files changed, 19 insertions(+), 20 deletions(-)
diff --git a/drivers/video/au1200fb.c b/drivers/video/au1200fb.c
index a19a40e..7200559 100644
--- a/drivers/video/au1200fb.c
+++ b/drivers/video/au1200fb.c
@@ -1673,7 +1673,7 @@ static int __devinit au1200fb_drv_probe(struct platform_device *dev)
/* Now hook interrupt too */
irq = platform_get_irq(dev, 0);
ret = request_irq(irq, au1200fb_handle_irq,
- IRQF_DISABLED | IRQF_SHARED, "lcd", (void *)dev);
+ IRQF_SHARED, "lcd", (void *)dev);
if (ret) {
print_err("fail to request interrupt line %d (err: %d)",
irq, ret);
diff --git a/drivers/video/bf54x-lq043fb.c b/drivers/video/bf54x-lq043fb.c
index 2464b91..56720fb 100644
--- a/drivers/video/bf54x-lq043fb.c
+++ b/drivers/video/bf54x-lq043fb.c
@@ -633,7 +633,7 @@ static int __devinit bfin_bf54x_probe(struct platform_device *pdev)
goto out7;
}
- if (request_irq(info->irq, bfin_bf54x_irq_error, IRQF_DISABLED,
+ if (request_irq(info->irq, bfin_bf54x_irq_error, 0,
"PPI ERROR", info) < 0) {
printk(KERN_ERR DRIVER_NAME
": unable to request PPI ERROR IRQ\n");
diff --git a/drivers/video/bfin-lq035q1-fb.c b/drivers/video/bfin-lq035q1-fb.c
index 23b6c4b..c633068 100644
--- a/drivers/video/bfin-lq035q1-fb.c
+++ b/drivers/video/bfin-lq035q1-fb.c
@@ -695,7 +695,7 @@ static int __devinit bfin_lq035q1_probe(struct platform_device *pdev)
goto out7;
}
- ret = request_irq(info->irq, bfin_lq035q1_irq_error, IRQF_DISABLED,
+ ret = request_irq(info->irq, bfin_lq035q1_irq_error, 0,
DRIVER_NAME" PPI ERROR", info);
if (ret < 0) {
dev_err(&pdev->dev, "unable to request PPI ERROR IRQ\n");
diff --git a/drivers/video/bfin-t350mcqb-fb.c b/drivers/video/bfin-t350mcqb-fb.c
index d8de29f..d5e1267 100644
--- a/drivers/video/bfin-t350mcqb-fb.c
+++ b/drivers/video/bfin-t350mcqb-fb.c
@@ -529,7 +529,7 @@ static int __devinit bfin_t350mcqb_probe(struct platform_device *pdev)
goto out7;
}
- ret = request_irq(info->irq, bfin_t350mcqb_irq_error, IRQF_DISABLED,
+ ret = request_irq(info->irq, bfin_t350mcqb_irq_error, 0,
"PPI ERROR", info);
if (ret < 0) {
printk(KERN_ERR DRIVER_NAME
diff --git a/drivers/video/bfin_adv7393fb.c b/drivers/video/bfin_adv7393fb.c
index 8486f54..811dd7f 100644
--- a/drivers/video/bfin_adv7393fb.c
+++ b/drivers/video/bfin_adv7393fb.c
@@ -481,7 +481,7 @@ static int __devinit bfin_adv7393_fb_probe(struct i2c_client *client,
goto out_4;
}
- if (request_irq(IRQ_PPI_ERROR, ppi_irq_error, IRQF_DISABLED,
+ if (request_irq(IRQ_PPI_ERROR, ppi_irq_error, 0,
"PPI ERROR", fbdev) < 0) {
dev_err(&client->dev, "unable to request PPI ERROR IRQ\n");
ret = -EFAULT;
diff --git a/drivers/video/mb862xx/mb862xxfbdrv.c b/drivers/video/mb862xx/mb862xxfbdrv.c
index 12a634a..11a7a33 100644
--- a/drivers/video/mb862xx/mb862xxfbdrv.c
+++ b/drivers/video/mb862xx/mb862xxfbdrv.c
@@ -738,7 +738,7 @@ static int __devinit of_platform_mb862xx_probe(struct platform_device *ofdev)
if (mb862xx_gdc_init(par))
goto io_unmap;
- if (request_irq(par->irq, mb862xx_intr, IRQF_DISABLED,
+ if (request_irq(par->irq, mb862xx_intr, 0,
DRV_NAME, (void *)par)) {
dev_err(dev, "Cannot request irq\n");
goto io_unmap;
@@ -1074,7 +1074,7 @@ static int __devinit mb862xx_pci_probe(struct pci_dev *pdev,
if (mb862xx_pci_gdc_init(par))
goto io_unmap;
- if (request_irq(par->irq, mb862xx_intr, IRQF_DISABLED | IRQF_SHARED,
+ if (request_irq(par->irq, mb862xx_intr, IRQF_SHARED,
DRV_NAME, (void *)par)) {
dev_err(dev, "Cannot request irq\n");
goto io_unmap;
diff --git a/drivers/video/msm/mddi.c b/drivers/video/msm/mddi.c
index 178b072..4527cbf 100644
--- a/drivers/video/msm/mddi.c
+++ b/drivers/video/msm/mddi.c
@@ -715,7 +715,7 @@ static int __devinit mddi_probe(struct platform_device *pdev)
mddi->int_enable = 0;
mddi_writel(mddi->int_enable, INTEN);
- ret = request_irq(mddi->irq, mddi_isr, IRQF_DISABLED, "mddi",
+ ret = request_irq(mddi->irq, mddi_isr, 0, "mddi",
&mddi->client_data);
if (ret) {
printk(KERN_ERR "mddi: failed to request enable irq!\n");
diff --git a/drivers/video/msm/mdp.c b/drivers/video/msm/mdp.c
index 2750ed2..cb2ddf1 100644
--- a/drivers/video/msm/mdp.c
+++ b/drivers/video/msm/mdp.c
@@ -426,7 +426,7 @@ int mdp_probe(struct platform_device *pdev)
goto error_get_clk;
}
- ret = request_irq(mdp->irq, mdp_isr, IRQF_DISABLED, "msm_mdp", mdp);
+ ret = request_irq(mdp->irq, mdp_isr, 0, "msm_mdp", mdp);
if (ret)
goto error_request_irq;
disable_irq(mdp->irq);
diff --git a/drivers/video/nuc900fb.c b/drivers/video/nuc900fb.c
index 37dd850..d1fbbd8 100644
--- a/drivers/video/nuc900fb.c
+++ b/drivers/video/nuc900fb.c
@@ -587,7 +587,7 @@ static int __devinit nuc900fb_probe(struct platform_device *pdev)
fbinfo->flags = FBINFO_FLAG_DEFAULT;
fbinfo->pseudo_palette = &fbi->pseudo_pal;
- ret = request_irq(irq, nuc900fb_irqhandler, IRQF_DISABLED,
+ ret = request_irq(irq, nuc900fb_irqhandler, 0,
pdev->name, fbinfo);
if (ret) {
dev_err(&pdev->dev, "cannot register irq handler %d -err %d\n",
diff --git a/drivers/video/omap2/displays/panel-taal.c b/drivers/video/omap2/displays/panel-taal.c
index 7f91002..80c3f6a 100644
--- a/drivers/video/omap2/displays/panel-taal.c
+++ b/drivers/video/omap2/displays/panel-taal.c
@@ -1034,7 +1034,7 @@ static int taal_probe(struct omap_dss_device *dssdev)
gpio_direction_input(gpio);
r = request_irq(gpio_to_irq(gpio), taal_te_isr,
- IRQF_DISABLED | IRQF_TRIGGER_RISING,
+ IRQF_TRIGGER_RISING,
"taal vsync", dssdev);
if (r) {
diff --git a/drivers/video/ps3fb.c b/drivers/video/ps3fb.c
index 65560a1..213fbbc 100644
--- a/drivers/video/ps3fb.c
+++ b/drivers/video/ps3fb.c
@@ -1082,7 +1082,7 @@ static int __devinit ps3fb_probe(struct ps3_system_bus_device *dev)
}
retval = request_irq(ps3fb.irq_no, ps3fb_vsync_interrupt,
- IRQF_DISABLED, DEVICE_NAME, &dev->core);
+ 0, DEVICE_NAME, &dev->core);
if (retval) {
dev_err(&dev->core, "%s: request_irq failed %d\n", __func__,
retval);
diff --git a/drivers/video/pxa3xx-gcu.c b/drivers/video/pxa3xx-gcu.c
index d8de557..1ed8b36 100644
--- a/drivers/video/pxa3xx-gcu.c
+++ b/drivers/video/pxa3xx-gcu.c
@@ -676,7 +676,7 @@ pxa3xx_gcu_probe(struct platform_device *dev)
}
ret = request_irq(irq, pxa3xx_gcu_handle_irq,
- IRQF_DISABLED, DRV_NAME, priv);
+ 0, DRV_NAME, priv);
if (ret) {
dev_err(&dev->dev, "request_irq failed\n");
ret = -EBUSY;
diff --git a/drivers/video/pxafb.c b/drivers/video/pxafb.c
index 0f4e8c9..e89778f 100644
--- a/drivers/video/pxafb.c
+++ b/drivers/video/pxafb.c
@@ -2191,7 +2191,7 @@ static int __devinit pxafb_probe(struct platform_device *dev)
goto failed_free_mem;
}
- ret = request_irq(irq, pxafb_handle_irq, IRQF_DISABLED, "LCD", fbi);
+ ret = request_irq(irq, pxafb_handle_irq, 0, "LCD", fbi);
if (ret) {
dev_err(&dev->dev, "request_irq failed: %d\n", ret);
ret = -EBUSY;
diff --git a/drivers/video/s3c2410fb.c b/drivers/video/s3c2410fb.c
index 798144a..ee4c0df 100644
--- a/drivers/video/s3c2410fb.c
+++ b/drivers/video/s3c2410fb.c
@@ -910,7 +910,7 @@ static int __devinit s3c24xxfb_probe(struct platform_device *pdev,
for (i = 0; i < 256; i++)
info->palette_buffer[i] = PALETTE_BUFF_CLEAR;
- ret = request_irq(irq, s3c2410fb_irq, IRQF_DISABLED, pdev->name, info);
+ ret = request_irq(irq, s3c2410fb_irq, 0, pdev->name, info);
if (ret) {
dev_err(&pdev->dev, "cannot get irq %d - err %d\n", irq, ret);
ret = -EBUSY;
diff --git a/drivers/video/sa1100fb.c b/drivers/video/sa1100fb.c
index e8b76d6..98d55d0 100644
--- a/drivers/video/sa1100fb.c
+++ b/drivers/video/sa1100fb.c
@@ -1457,8 +1457,7 @@ static int __devinit sa1100fb_probe(struct platform_device *pdev)
if (ret)
goto failed;
- ret = request_irq(irq, sa1100fb_handle_irq, IRQF_DISABLED,
- "LCD", fbi);
+ ret = request_irq(irq, sa1100fb_handle_irq, 0, "LCD", fbi);
if (ret) {
printk(KERN_ERR "sa1100fb: request_irq failed: %d\n", ret);
goto failed;
diff --git a/drivers/video/sh_mobile_lcdcfb.c b/drivers/video/sh_mobile_lcdcfb.c
index 4636f9d..facffc2 100644
--- a/drivers/video/sh_mobile_lcdcfb.c
+++ b/drivers/video/sh_mobile_lcdcfb.c
@@ -1577,7 +1577,7 @@ static int __devinit sh_mobile_lcdc_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, priv);
- error = request_irq(i, sh_mobile_lcdc_irq, IRQF_DISABLED,
+ error = request_irq(i, sh_mobile_lcdc_irq, 0,
dev_name(&pdev->dev), priv);
if (error) {
dev_err(&pdev->dev, "unable to request irq\n");
diff --git a/drivers/video/tmiofb.c b/drivers/video/tmiofb.c
index cd1c4dc..8e4a446 100644
--- a/drivers/video/tmiofb.c
+++ b/drivers/video/tmiofb.c
@@ -744,7 +744,7 @@ static int __devinit tmiofb_probe(struct platform_device *dev)
goto err_ioremap_vram;
}
- retval = request_irq(irq, &tmiofb_irq, IRQF_DISABLED,
+ retval = request_irq(irq, &tmiofb_irq, 0,
dev_name(&dev->dev), info);
if (retval)
diff --git a/drivers/video/vt8500lcdfb.c b/drivers/video/vt8500lcdfb.c
index c13c246..777c21d 100644
--- a/drivers/video/vt8500lcdfb.c
+++ b/drivers/video/vt8500lcdfb.c
@@ -355,7 +355,7 @@ static int __devinit vt8500lcd_probe(struct platform_device *pdev)
goto failed_free_palette;
}
- ret = request_irq(irq, vt8500lcd_handle_irq, IRQF_DISABLED, "LCD", fbi);
+ ret = request_irq(irq, vt8500lcd_handle_irq, 0, "LCD", fbi);
if (ret) {
dev_err(&pdev->dev, "request_irq failed: %d\n", ret);
ret = -EBUSY;
--
1.7.4.1
^ permalink raw reply related
* [PATCH 45/55] powerpc/ps3: irq: Remove IRQF_DISABLED
From: Yong Zhang @ 2011-09-22 8:59 UTC (permalink / raw)
To: linux-kernel, linux-arch
Cc: Geoff Levand, yong.zhang0, tglx, linuxppc-dev, cbe-oss-dev
In-Reply-To: <1316681962-8217-1-git-send-email-yong.zhang0@gmail.com>
Since commit [e58aa3d2: genirq: Run irq handlers with interrupts disabled],
We run all interrupt handlers with interrupts disabled
and we even check and yell when an interrupt handler
returns with interrupts enabled (see commit [b738a50a:
genirq: Warn when handler enables interrupts]).
So now this flag is a NOOP and can be removed.
Signed-off-by: Yong Zhang <yong.zhang0@gmail.com>
Acked-by: Geoff Levand <geoff@infradead.org>
---
drivers/ps3/ps3-vuart.c | 2 +-
drivers/ps3/ps3stor_lib.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/ps3/ps3-vuart.c b/drivers/ps3/ps3-vuart.c
index d9fb729..fb73008 100644
--- a/drivers/ps3/ps3-vuart.c
+++ b/drivers/ps3/ps3-vuart.c
@@ -952,7 +952,7 @@ static int ps3_vuart_bus_interrupt_get(void)
}
result = request_irq(vuart_bus_priv.virq, ps3_vuart_irq_handler,
- IRQF_DISABLED, "vuart", &vuart_bus_priv);
+ 0, "vuart", &vuart_bus_priv);
if (result) {
pr_debug("%s:%d: request_irq failed (%d)\n",
diff --git a/drivers/ps3/ps3stor_lib.c b/drivers/ps3/ps3stor_lib.c
index cc328de..8c3f5ad 100644
--- a/drivers/ps3/ps3stor_lib.c
+++ b/drivers/ps3/ps3stor_lib.c
@@ -167,7 +167,7 @@ int ps3stor_setup(struct ps3_storage_device *dev, irq_handler_t handler)
goto fail_close_device;
}
- error = request_irq(dev->irq, handler, IRQF_DISABLED,
+ error = request_irq(dev->irq, handler, 0,
dev->sbd.core.driver->name, dev);
if (error) {
dev_err(&dev->sbd.core, "%s:%u: request_irq failed %d\n",
--
1.7.4.1
^ permalink raw reply related
* [PATCH 15/55] powerpc: irq: Remove IRQF_DISABLED
From: Yong Zhang @ 2011-09-22 8:58 UTC (permalink / raw)
To: linux-kernel, linux-arch
Cc: cbe-oss-dev, Arnd Bergmann, Geoff Levand, Milton Miller,
Michael Ellerman, yong.zhang0, Paul Mackerras, Scott Wood, tglx,
linuxppc-dev, Timur Tabi
In-Reply-To: <1316681962-8217-1-git-send-email-yong.zhang0@gmail.com>
Since commit [e58aa3d2: genirq: Run irq handlers with interrupts disabled],
We run all interrupt handlers with interrupts disabled
and we even check and yell when an interrupt handler
returns with interrupts enabled (see commit [b738a50a:
genirq: Warn when handler enables interrupts]).
So now this flag is a NOOP and can be removed.
Signed-off-by: Yong Zhang <yong.zhang0@gmail.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
---
arch/powerpc/include/asm/floppy.h | 4 ++--
arch/powerpc/include/asm/xics.h | 4 ++--
arch/powerpc/kernel/smp.c | 2 +-
arch/powerpc/platforms/cell/beat.c | 2 +-
arch/powerpc/platforms/cell/celleb_scc_pciex.c | 2 +-
arch/powerpc/platforms/cell/iommu.c | 3 +--
arch/powerpc/platforms/cell/pmu.c | 2 +-
arch/powerpc/platforms/cell/spu_base.c | 9 +++------
arch/powerpc/platforms/powermac/pic.c | 1 -
arch/powerpc/platforms/powermac/smp.c | 4 ++--
arch/powerpc/platforms/ps3/device-init.c | 2 +-
arch/powerpc/sysdev/mpic.c | 2 --
arch/powerpc/sysdev/ppc4xx_soc.c | 2 +-
arch/powerpc/sysdev/xics/xics-common.c | 5 ++---
14 files changed, 18 insertions(+), 26 deletions(-)
diff --git a/arch/powerpc/include/asm/floppy.h b/arch/powerpc/include/asm/floppy.h
index 24bd34c..936a904 100644
--- a/arch/powerpc/include/asm/floppy.h
+++ b/arch/powerpc/include/asm/floppy.h
@@ -108,10 +108,10 @@ static int fd_request_irq(void)
{
if (can_use_virtual_dma)
return request_irq(FLOPPY_IRQ, floppy_hardint,
- IRQF_DISABLED, "floppy", NULL);
+ 0, "floppy", NULL);
else
return request_irq(FLOPPY_IRQ, floppy_interrupt,
- IRQF_DISABLED, "floppy", NULL);
+ 0, "floppy", NULL);
}
static int vdma_dma_setup(char *addr, unsigned long size, int mode, int io)
diff --git a/arch/powerpc/include/asm/xics.h b/arch/powerpc/include/asm/xics.h
index bd6c401..c48de98 100644
--- a/arch/powerpc/include/asm/xics.h
+++ b/arch/powerpc/include/asm/xics.h
@@ -15,8 +15,8 @@
#define DEFAULT_PRIORITY 5
/*
- * Mark IPIs as higher priority so we can take them inside interrupts that
- * arent marked IRQF_DISABLED
+ * Mark IPIs as higher priority so we can take them inside interrupts
+ * FIXME: still true now?
*/
#define IPI_PRIORITY 4
diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c
index 25ddbfc..6df7090 100644
--- a/arch/powerpc/kernel/smp.c
+++ b/arch/powerpc/kernel/smp.c
@@ -187,7 +187,7 @@ int smp_request_message_ipi(int virq, int msg)
return 1;
}
#endif
- err = request_irq(virq, smp_ipi_action[msg], IRQF_DISABLED|IRQF_PERCPU,
+ err = request_irq(virq, smp_ipi_action[msg], IRQF_PERCPU,
smp_ipi_name[msg], 0);
WARN(err < 0, "unable to request_irq %d for %s (rc %d)\n",
virq, smp_ipi_name[msg], err);
diff --git a/arch/powerpc/platforms/cell/beat.c b/arch/powerpc/platforms/cell/beat.c
index 232fc38..852592b 100644
--- a/arch/powerpc/platforms/cell/beat.c
+++ b/arch/powerpc/platforms/cell/beat.c
@@ -230,7 +230,7 @@ static int __init beat_register_event(void)
}
ev->virq = virq;
- rc = request_irq(virq, ev->handler, IRQF_DISABLED,
+ rc = request_irq(virq, ev->handler, 0,
ev->typecode, NULL);
if (rc != 0) {
printk(KERN_ERR "Beat: failed to request virtual IRQ"
diff --git a/arch/powerpc/platforms/cell/celleb_scc_pciex.c b/arch/powerpc/platforms/cell/celleb_scc_pciex.c
index ae790ac..14be2bd 100644
--- a/arch/powerpc/platforms/cell/celleb_scc_pciex.c
+++ b/arch/powerpc/platforms/cell/celleb_scc_pciex.c
@@ -514,7 +514,7 @@ static __init int celleb_setup_pciex(struct device_node *node,
virq = irq_create_of_mapping(oirq.controller, oirq.specifier,
oirq.size);
if (request_irq(virq, pciex_handle_internal_irq,
- IRQF_DISABLED, "pciex", (void *)phb)) {
+ 0, "pciex", (void *)phb)) {
pr_err("PCIEXC:Failed to request irq\n");
goto error;
}
diff --git a/arch/powerpc/platforms/cell/iommu.c b/arch/powerpc/platforms/cell/iommu.c
index fc46fca..592c3d5 100644
--- a/arch/powerpc/platforms/cell/iommu.c
+++ b/arch/powerpc/platforms/cell/iommu.c
@@ -412,8 +412,7 @@ static void cell_iommu_enable_hardware(struct cbe_iommu *iommu)
IIC_IRQ_IOEX_ATI | (iommu->nid << IIC_IRQ_NODE_SHIFT));
BUG_ON(virq == NO_IRQ);
- ret = request_irq(virq, ioc_interrupt, IRQF_DISABLED,
- iommu->name, iommu);
+ ret = request_irq(virq, ioc_interrupt, 0, iommu->name, iommu);
BUG_ON(ret);
/* set the IOC segment table origin register (and turn on the iommu) */
diff --git a/arch/powerpc/platforms/cell/pmu.c b/arch/powerpc/platforms/cell/pmu.c
index 1acf360..59c1a16 100644
--- a/arch/powerpc/platforms/cell/pmu.c
+++ b/arch/powerpc/platforms/cell/pmu.c
@@ -392,7 +392,7 @@ static int __init cbe_init_pm_irq(void)
}
rc = request_irq(irq, cbe_pm_irq,
- IRQF_DISABLED, "cbe-pmu-0", NULL);
+ 0, "cbe-pmu-0", NULL);
if (rc) {
printk("ERROR: Request for irq on node %d failed\n",
node);
diff --git a/arch/powerpc/platforms/cell/spu_base.c b/arch/powerpc/platforms/cell/spu_base.c
index 3675da7..e94d3ec 100644
--- a/arch/powerpc/platforms/cell/spu_base.c
+++ b/arch/powerpc/platforms/cell/spu_base.c
@@ -442,8 +442,7 @@ static int spu_request_irqs(struct spu *spu)
snprintf(spu->irq_c0, sizeof (spu->irq_c0), "spe%02d.0",
spu->number);
ret = request_irq(spu->irqs[0], spu_irq_class_0,
- IRQF_DISABLED,
- spu->irq_c0, spu);
+ 0, spu->irq_c0, spu);
if (ret)
goto bail0;
}
@@ -451,8 +450,7 @@ static int spu_request_irqs(struct spu *spu)
snprintf(spu->irq_c1, sizeof (spu->irq_c1), "spe%02d.1",
spu->number);
ret = request_irq(spu->irqs[1], spu_irq_class_1,
- IRQF_DISABLED,
- spu->irq_c1, spu);
+ 0, spu->irq_c1, spu);
if (ret)
goto bail1;
}
@@ -460,8 +458,7 @@ static int spu_request_irqs(struct spu *spu)
snprintf(spu->irq_c2, sizeof (spu->irq_c2), "spe%02d.2",
spu->number);
ret = request_irq(spu->irqs[2], spu_irq_class_2,
- IRQF_DISABLED,
- spu->irq_c2, spu);
+ 0, spu->irq_c2, spu);
if (ret)
goto bail2;
}
diff --git a/arch/powerpc/platforms/powermac/pic.c b/arch/powerpc/platforms/powermac/pic.c
index cb40e92..901bfbd 100644
--- a/arch/powerpc/platforms/powermac/pic.c
+++ b/arch/powerpc/platforms/powermac/pic.c
@@ -272,7 +272,6 @@ static struct irqaction xmon_action = {
static struct irqaction gatwick_cascade_action = {
.handler = gatwick_action,
- .flags = IRQF_DISABLED,
.name = "cascade",
};
diff --git a/arch/powerpc/platforms/powermac/smp.c b/arch/powerpc/platforms/powermac/smp.c
index 9a521dc..9b6a820 100644
--- a/arch/powerpc/platforms/powermac/smp.c
+++ b/arch/powerpc/platforms/powermac/smp.c
@@ -200,7 +200,7 @@ static int psurge_secondary_ipi_init(void)
if (psurge_secondary_virq)
rc = request_irq(psurge_secondary_virq, psurge_ipi_intr,
- IRQF_DISABLED|IRQF_PERCPU, "IPI", NULL);
+ IRQF_PERCPU, "IPI", NULL);
if (rc)
pr_err("Failed to setup secondary cpu IPI\n");
@@ -408,7 +408,7 @@ static int __init smp_psurge_kick_cpu(int nr)
static struct irqaction psurge_irqaction = {
.handler = psurge_ipi_intr,
- .flags = IRQF_DISABLED|IRQF_PERCPU,
+ .flags = IRQF_PERCPU,
.name = "primary IPI",
};
diff --git a/arch/powerpc/platforms/ps3/device-init.c b/arch/powerpc/platforms/ps3/device-init.c
index 6c4b583..3f175e8 100644
--- a/arch/powerpc/platforms/ps3/device-init.c
+++ b/arch/powerpc/platforms/ps3/device-init.c
@@ -825,7 +825,7 @@ static int ps3_probe_thread(void *data)
spin_lock_init(&dev.lock);
- res = request_irq(irq, ps3_notification_interrupt, IRQF_DISABLED,
+ res = request_irq(irq, ps3_notification_interrupt, 0,
"ps3_notification", &dev);
if (res) {
pr_err("%s:%u: request_irq failed %d\n", __func__, __LINE__,
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c
index 9678081..1b0493d 100644
--- a/arch/powerpc/sysdev/mpic.c
+++ b/arch/powerpc/sysdev/mpic.c
@@ -800,8 +800,6 @@ static void mpic_end_ipi(struct irq_data *d)
* IPIs are marked IRQ_PER_CPU. This has the side effect of
* preventing the IRQ_PENDING/IRQ_INPROGRESS logic from
* applying to them. We EOI them late to avoid re-entering.
- * We mark IPI's with IRQF_DISABLED as they must run with
- * irqs disabled.
*/
mpic_eoi(mpic);
}
diff --git a/arch/powerpc/sysdev/ppc4xx_soc.c b/arch/powerpc/sysdev/ppc4xx_soc.c
index d3d6ce3..0debcc3 100644
--- a/arch/powerpc/sysdev/ppc4xx_soc.c
+++ b/arch/powerpc/sysdev/ppc4xx_soc.c
@@ -115,7 +115,7 @@ static int __init ppc4xx_l2c_probe(void)
}
/* Install error handler */
- if (request_irq(irq, l2c_error_handler, IRQF_DISABLED, "L2C", 0) < 0) {
+ if (request_irq(irq, l2c_error_handler, 0, "L2C", 0) < 0) {
printk(KERN_ERR "Cannot install L2C error handler"
", cache is not enabled\n");
of_node_put(np);
diff --git a/arch/powerpc/sysdev/xics/xics-common.c b/arch/powerpc/sysdev/xics/xics-common.c
index 3d93a8d..63762c6 100644
--- a/arch/powerpc/sysdev/xics/xics-common.c
+++ b/arch/powerpc/sysdev/xics/xics-common.c
@@ -134,11 +134,10 @@ static void xics_request_ipi(void)
BUG_ON(ipi == NO_IRQ);
/*
- * IPIs are marked IRQF_DISABLED as they must run with irqs
- * disabled, and PERCPU. The handler was set in map.
+ * IPIs are marked IRQF_PERCPU. The handler was set in map.
*/
BUG_ON(request_irq(ipi, icp_ops->ipi_action,
- IRQF_DISABLED|IRQF_PERCPU, "IPI", NULL));
+ IRQF_PERCPU, "IPI", NULL));
}
int __init xics_smp_probe(void)
--
1.7.4.1
^ permalink raw reply related
* Re: Timer interrupt on Linux 3.0.3
From: MohanReddy koppula @ 2011-09-22 6:22 UTC (permalink / raw)
To: Scott Wood; +Cc: linuxppc-dev, linux-embedded, Vineeth
In-Reply-To: <4E7A3DED.9030402@freescale.com>
I had the same issue with an MPC885 board. My kernel was 2.6.33. On
that board decrementer exception was not working. I replaced the
board, took new board (MPC885 only, just another board) and the same
kernel worked fine. I don't know how the problem was solved.
-Mohan
On 9/22/11, Scott Wood <scottwood@freescale.com> wrote:
> On 09/21/2011 01:56 AM, Vineeth wrote:
>>>> What was the issue? You really should try to make this work rather than
>>>> hack around it.
>>
>> what we found was the decrementer is not generating an exception when it
>> becomes 0. and the timebase registers are not getting incremented too.
>
> Does the decrementer actually tick until it reaches zero, or do it and
> the timebase never tick?
>
> Is the TBEN input to the CPU asserted?
>
> -Scott
>
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev@lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/linuxppc-dev
>
^ permalink raw reply
* Re: [PATCH 49/57] video: irq: Remove IRQF_DISABLED
From: David Brown @ 2011-09-21 20:22 UTC (permalink / raw)
To: Yong Zhang
Cc: linux-fbdev, Paul Gortmaker, Laurent Pinchart, Daniel Walker,
linux-arch, Kukjin Kim, Florian Tobias Schandinat, Tomi Valkeinen,
Archit Taneja, David Brown, Anatolij Gustschin, cbe-oss-dev,
Wan ZongShun, linux-arm-msm, Ben Dooks, tglx, linux-omap,
linux-arm-kernel, Geoff Levand, Jiri Kosina, linux-kernel,
Bryan Huntsman, Andrew Morton, linuxppc-dev
In-Reply-To: <1316597339-29861-50-git-send-email-yong.zhang0@gmail.com>
On Wed, Sep 21, 2011 at 05:28:50PM +0800, Yong Zhang wrote:
> Since commit [c58543c8: genirq: Run irq handlers with interrupts disabled],
> We run all interrupt handlers with interrupts disabled
> and we even check and yell when an interrupt handler
> returns with interrupts enabled (see commit [b738a50a:
> genirq: Warn when handler enables interrupts]).
>
> So now this flag is a NOOP and can be removed.
>
> Signed-off-by: Yong Zhang <yong.zhang0@gmail.com>
> ---
> drivers/video/msm/mddi.c | 2 +-
> drivers/video/msm/mdp.c | 2 +-
Acked-by: David Brown <davidb@codeaurora.org>
--
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.
^ permalink raw reply
* Re: Timer interrupt on Linux 3.0.3
From: Scott Wood @ 2011-09-21 19:41 UTC (permalink / raw)
To: Vineeth; +Cc: linuxppc-dev, linux-embedded
In-Reply-To: <CAFbQSaBcdLCoVY471mVLAyM=eYDSN77=DODPasMaAEm6pRm7jQ@mail.gmail.com>
On 09/21/2011 01:56 AM, Vineeth wrote:
>>> What was the issue? You really should try to make this work rather than
>>> hack around it.
>
> what we found was the decrementer is not generating an exception when it
> becomes 0. and the timebase registers are not getting incremented too.
Does the decrementer actually tick until it reaches zero, or do it and
the timebase never tick?
Is the TBEN input to the CPU asserted?
-Scott
^ permalink raw reply
* Re: [PATCH] eSDHC: Access Freescale eSDHC registers by 32-bit
From: Chris Ball @ 2011-09-21 17:53 UTC (permalink / raw)
To: Roy Zang; +Cc: Xu lei, linux-mmc, akpm, linuxppc-dev
In-Reply-To: <1315569946-21386-1-git-send-email-tie-fei.zang@freescale.com>
Hi Roy,
On Fri, Sep 09 2011, Roy Zang wrote:
> From: Xu lei <B33228@freescale.com>
>
> Freescale eSDHC registers only support 32-bit accesses,
> this patch ensures that all Freescale eSDHC register accesses
> are 32-bit.
>
> Signed-off-by: Xu lei <B33228@freescale.com>
> Signed-off-by: Roy Zang <tie-fei.zang@freescale.com>
> Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
Pushed to mmc-next for 3.2 with Anton's ACK now, thanks.
- Chris.
--
Chris Ball <cjb@laptop.org> <http://printf.net/>
One Laptop Per Child
^ permalink raw reply
* Re: [PATCH V2 1/2] gpio: move mpc8xxx/512x gpio driver to drivers/gpio
From: Grant Likely @ 2011-09-21 16:33 UTC (permalink / raw)
To: Wolfram Sang; +Cc: linuxppc-dev, Anatolij Gustschin
In-Reply-To: <1316602161-12546-1-git-send-email-w.sang@pengutronix.de>
On Wed, Sep 21, 2011 at 12:49:20PM +0200, Wolfram Sang wrote:
> Move the driver to the place where it is expected to be nowadays. Also
> rename its CONFIG-name to match the rest and adapt the defconfigs.
> Finally, move selection of REQUIRE_GPIOLIB or WANTS_OPTIONAL_GPIOLIB to
> the platforms, because this option is per-platform and not per-driver.
>
> Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
> Cc: Anatolij Gustschin <agust@denx.de>
> Cc: Grant Likely <grant.likely@secretlab.ca>
> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
> ---
>
> I'd think this should go via ppc, so it is in sync with the defconfig update of
> patch 2/2.
>
> Changes since V1: Use -C in format-patch to show the rename.
Nit: I prefer to see the changelog before the s-o-b lines so that it
gets included in the final commit text. Helps when trying to identify
exactly which version of a patch got merged.
>
> arch/powerpc/configs/85xx/p1023rds_defconfig | 2 +-
> arch/powerpc/configs/85xx/xes_mpc85xx_defconfig | 2 +-
> arch/powerpc/configs/mpc85xx_defconfig | 2 +-
> arch/powerpc/configs/mpc85xx_smp_defconfig | 2 +-
> arch/powerpc/configs/ppc6xx_defconfig | 2 +-
> arch/powerpc/platforms/512x/Kconfig | 1 +
> arch/powerpc/platforms/83xx/Kconfig | 9 ++++++---
> arch/powerpc/platforms/85xx/Kconfig | 12 ++++++++----
> arch/powerpc/platforms/86xx/Kconfig | 1 +
> arch/powerpc/platforms/Kconfig | 10 ----------
> arch/powerpc/sysdev/Makefile | 1 -
> drivers/gpio/Kconfig | 8 ++++++++
> drivers/gpio/Makefile | 1 +
> .../mpc8xxx_gpio.c => drivers/gpio/gpio-mpc8xxx.c | 0
> 14 files changed, 30 insertions(+), 23 deletions(-)
> rename arch/powerpc/sysdev/mpc8xxx_gpio.c => drivers/gpio/gpio-mpc8xxx.c (100%)
Looks good to me. Acked-by: Grant Likely <grant.likely@secretlab.ca>
Yes, it probably should go via the ppc tree. I don't foresee any conflict
issues with the gpio tree.
g.
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox