From mboxrd@z Thu Jan 1 00:00:00 1970 From: linux@arm.linux.org.uk (Russell King - ARM Linux) Date: Fri, 30 Jul 2010 08:09:43 +0100 Subject: [PATCH v4] GPIO PL061: Adding Clk framework support In-Reply-To: <083DF309106F364B939360100EC290F80AC392ACFC@eu1rdcrdc1wx030.exi.nxp.com> References: <20100710071913.GM22845@n2100.arm.linux.org.uk> <20100713074449.GA20118@n2100.arm.linux.org.uk> <20100713182644.GC30142@n2100.arm.linux.org.uk> <4C3EA46B.1000709@st.com> <20100715083032.GA26212@n2100.arm.linux.org.uk> <4C3ED678.7010308@st.com> <20100715095637.GF26212@n2100.arm.linux.org.uk> <083DF309106F364B939360100EC290F80AC392ACFC@eu1rdcrdc1wx030.exi.nxp.com> Message-ID: <20100730070943.GA29746@n2100.arm.linux.org.uk> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Fri, Jul 30, 2010 at 01:22:58AM +0200, Kevin Wells wrote: > > /* > > * These are the device model conversion veneers; they convert the > > * device model structures to our more specific structures. > > @@ -130,17 +155,33 @@ static int amba_probe(struct device *dev) > > { > > struct amba_device *pcdev = to_amba_device(dev); > > struct amba_driver *pcdrv = to_amba_driver(dev->driver); > > - struct amba_id *id; > > + struct amba_id *id = amba_lookup(pcdrv->id_table, pcdev); > > + int ret; > > > > - id = amba_lookup(pcdrv->id_table, pcdev); > > + do { > > + ret = amba_get_enable_pclk(pcdev); > > + if (ret) > > + break; > > + > > + ret = pcdrv->probe(pcdev, id); > > + if (ret == 0) > > + break; > > > > - return pcdrv->probe(pcdev, id); > > + amba_put_disable_pclk(pcdev); > > Should the AMBA clock be disabled if the probe() fails? This is exactly what happens here.