Message ID | EAF47CD23C76F840A9E7FCE10091EFAB02A8FD0BFD@dbde02.ent.ti.com (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
> -----Original Message----- > From: Gupta, Ramesh > Sent: Thursday, March 12, 2009 5:25 PM > To: linux-omap@vger.kernel.org > Cc: Menon, Nishanth; Kanigeri, Hari > Subject: [PATCH] DSPBRIDGE Fix for auto image load updated > > From 757beb63e8e66c168231dd990440816fc5789d6c Mon Sep 17 00:00:00 2001 > From: Ramesh Gupta <grgupta@ti.com> > Date: Thu, 12 Mar 2009 09:32:31 -0500 > Subject: [PATCH] DSPBRIDGE Fix for auto image load updated > Resending as the previous patch was not applyng cleanly. > This is updated patch to fix the auto image loading while bridgedriver > initialization. > > Signed-off-by: Ramesh Gupta G <grgupta@ti.com> Tested-by: Nishanth Menon <nm@ti.com> Might be a good idea to push to dspbridge gitorious Regards, Nishanth Menon -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
ext Gupta, Ramesh wrote: > From 757beb63e8e66c168231dd990440816fc5789d6c Mon Sep 17 00:00:00 2001 > From: Ramesh Gupta <grgupta@ti.com> > Date: Thu, 12 Mar 2009 09:32:31 -0500 > Subject: [PATCH] DSPBRIDGE Fix for auto image load updated > Resending as the previous patch was not applyng cleanly. > This is updated patch to fix the auto image loading while bridgedriver initialization. > > Signed-off-by: Ramesh Gupta G <grgupta@ti.com> > --- > drivers/dsp/bridge/rmgr/drv_interface.c | 32 +++++++++++++++--------------- > 1 files changed, 16 insertions(+), 16 deletions(-) > > diff --git a/drivers/dsp/bridge/rmgr/drv_interface.c b/drivers/dsp/bridge/rmgr/drv_interface.c > index 3ad7a43..80edc4d 100755 > --- a/drivers/dsp/bridge/rmgr/drv_interface.c > +++ b/drivers/dsp/bridge/rmgr/drv_interface.c > @@ -400,7 +400,7 @@ static int __init bridge_init(void) > REG_SetValue(NULL, NULL, AUTOSTART, REG_DWORD, (u8 *)&temp, > sizeof(temp)); > REG_SetValue(NULL, NULL, DEFEXEC, REG_SZ, (u8 *)base_img, > - strlen(base_img) + 1); > + strlen(base_img) + 1); > } else { > temp = false; > REG_SetValue(NULL, NULL, AUTOSTART, REG_DWORD, (u8 *)&temp, > @@ -408,7 +408,7 @@ static int __init bridge_init(void) > REG_SetValue(NULL, NULL, DEFEXEC, REG_SZ, (u8 *) "\0", (u32)2); > } > REG_SetValue(NULL, NULL, NUMPROCS, REG_SZ, (u8 *) num_procs, > - strlen(num_procs) + 1); > + strlen(num_procs) + 1); > > if (shm_size >= 0x10000) { /* 64 KB */ > initStatus = REG_SetValue(NULL, NULL, SHMSIZE, REG_DWORD, > @@ -450,18 +450,9 @@ static int __init bridge_init(void) > sizeof(tc_wordswapon)); > } > if (DSP_SUCCEEDED(initStatus)) { > - driverContext = DSP_Init(&initStatus); > - if (DSP_FAILED(initStatus)) { > - status = -1; > - GT_0trace(driverTrace, GT_7CLASS, > - "DSP/BIOS Bridge initialization Failed\n"); > - } else { > - GT_0trace(driverTrace, GT_5CLASS, > - "DSP/BIOS Bridge driver loaded\n"); > - } > #ifdef CONFIG_BRIDGE_DVFS > - for (i = 0; i < 5; i++) > - pdata->mpu_speed[i] = vdd1_rate_table_bridge[i].rate; > + for (i = 0; i < 6; i++) > + pdata->mpu_speed[i] = vdd1_rate_table_bridge[i].rate; > > clk_handle = clk_get(NULL, "iva2_ck"); > if (!clk_handle) { > @@ -479,6 +470,15 @@ static int __init bridge_init(void) > "clk_notifier_register FAIL for iva2_ck \n"); > } > #endif > + driverContext = DSP_Init(&initStatus); > + if (DSP_FAILED(initStatus)) { > + status = -1; > + GT_0trace(driverTrace, GT_7CLASS, > + "DSP/BIOS Bridge initialization Failed\n"); > + } else { > + GT_0trace(driverTrace, GT_5CLASS, > + "DSP/BIOS Bridge driver loaded\n"); > + } > } > > DBC_Assert(status == 0); > @@ -655,11 +655,11 @@ func_cont: > (struct DRV_OBJECT *)hDrvObject, &pPctxt); > > if (pPctxt != NULL) { > - /* Return PID instead of process handle */ > - hProcess = current->pid; > + /* Return PID instead of process handle */ > + hProcess = current->pid; > > DRV_ProcUpdatestate(pPctxt, PROC_RES_ALLOCATED); > - DRV_ProcSetPID(pPctxt, hProcess); > + DRV_ProcSetPID(pPctxt, hProcess); > } > #endif > Hi Ramesh, I am not clear about the issue which this patch fixes. As I understand that: 1. You have increased the count for pdata->mpu_speed[i] = vdd1_rate_table_bridge[i].rate; 2. Moved driverContext = DSP_Init(&initStatus) after clk_notifier_register stuff. 3. Coding Style cleanups. I am not able to understand what this patch is fixing and how? Some explanation about this will be helpful. Thanks. Cheers, Ameya. -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Ameya, > -----Original Message----- > From: Ameya Palande [mailto:ameya.palande@nokia.com] > Sent: Monday, March 16, 2009 7:41 PM > To: Gupta, Ramesh > Cc: linux-omap@vger.kernel.org; Menon, Nishanth; Kanigeri, Hari > Subject: Re: [PATCH] DSPBRIDGE Fix for auto image load updated > > ext Gupta, Ramesh wrote: > > From 757beb63e8e66c168231dd990440816fc5789d6c Mon Sep 17 > 00:00:00 2001 > > From: Ramesh Gupta <grgupta@ti.com> > > Date: Thu, 12 Mar 2009 09:32:31 -0500 > > Subject: [PATCH] DSPBRIDGE Fix for auto image load updated > Resending > > as the previous patch was not applyng cleanly. > > This is updated patch to fix the auto image loading while > bridgedriver initialization. > > > > Signed-off-by: Ramesh Gupta G <grgupta@ti.com> > > --- > > drivers/dsp/bridge/rmgr/drv_interface.c | 32 > +++++++++++++++--------------- > > 1 files changed, 16 insertions(+), 16 deletions(-) > > > > diff --git a/drivers/dsp/bridge/rmgr/drv_interface.c > > b/drivers/dsp/bridge/rmgr/drv_interface.c > > index 3ad7a43..80edc4d 100755 > > --- a/drivers/dsp/bridge/rmgr/drv_interface.c > > +++ b/drivers/dsp/bridge/rmgr/drv_interface.c > > @@ -400,7 +400,7 @@ static int __init bridge_init(void) > > REG_SetValue(NULL, NULL, AUTOSTART, REG_DWORD, > (u8 *)&temp, > > sizeof(temp)); > > REG_SetValue(NULL, NULL, DEFEXEC, REG_SZ, (u8 > *)base_img, > > - strlen(base_img) + 1); > > + strlen(base_img) + 1); > > } else { > > temp = false; > > REG_SetValue(NULL, NULL, AUTOSTART, REG_DWORD, > (u8 *)&temp, @@ > > -408,7 +408,7 @@ static int __init bridge_init(void) > > REG_SetValue(NULL, NULL, DEFEXEC, REG_SZ, (u8 > *) "\0", (u32)2); > > } > > REG_SetValue(NULL, NULL, NUMPROCS, REG_SZ, (u8 *) num_procs, > > - strlen(num_procs) + 1); > > + strlen(num_procs) + 1); > > > > if (shm_size >= 0x10000) { /* 64 KB */ > > initStatus = REG_SetValue(NULL, NULL, SHMSIZE, > REG_DWORD, @@ > > -450,18 +450,9 @@ static int __init bridge_init(void) > > sizeof(tc_wordswapon)); > > } > > if (DSP_SUCCEEDED(initStatus)) { > > - driverContext = DSP_Init(&initStatus); > > - if (DSP_FAILED(initStatus)) { > > - status = -1; > > - GT_0trace(driverTrace, GT_7CLASS, > > - "DSP/BIOS Bridge > initialization Failed\n"); > > - } else { > > - GT_0trace(driverTrace, GT_5CLASS, > > - "DSP/BIOS Bridge driver > loaded\n"); > > - } > > #ifdef CONFIG_BRIDGE_DVFS > > - for (i = 0; i < 5; i++) > > - pdata->mpu_speed[i] = > vdd1_rate_table_bridge[i].rate; > > + for (i = 0; i < 6; i++) > > + pdata->mpu_speed[i] = > vdd1_rate_table_bridge[i].rate; > > > > clk_handle = clk_get(NULL, "iva2_ck"); > > if (!clk_handle) { > > @@ -479,6 +470,15 @@ static int __init bridge_init(void) > > "clk_notifier_register FAIL for iva2_ck \n"); > > } > > #endif > > + driverContext = DSP_Init(&initStatus); > > + if (DSP_FAILED(initStatus)) { > > + status = -1; > > + GT_0trace(driverTrace, GT_7CLASS, > > + "DSP/BIOS Bridge > initialization Failed\n"); > > + } else { > > + GT_0trace(driverTrace, GT_5CLASS, > > + "DSP/BIOS Bridge driver > loaded\n"); > > + } > > } > > > > DBC_Assert(status == 0); > > @@ -655,11 +655,11 @@ func_cont: > > (struct DRV_OBJECT > *)hDrvObject, &pPctxt); > > > > if (pPctxt != NULL) { > > - /* Return PID instead of process handle */ > > - hProcess = current->pid; > > + /* Return PID instead of process handle */ > > + hProcess = current->pid; > > > > DRV_ProcUpdatestate(pPctxt, PROC_RES_ALLOCATED); > > - DRV_ProcSetPID(pPctxt, hProcess); > > + DRV_ProcSetPID(pPctxt, hProcess); > > } > > #endif > > > > Hi Ramesh, > > I am not clear about the issue which this patch fixes. > As I understand that: > > 1. You have increased the count for > pdata->mpu_speed[i] = vdd1_rate_table_bridge[i].rate; > > 2. Moved driverContext = DSP_Init(&initStatus) after > clk_notifier_register stuff. These 2 changes fix the issue. > > 3. Coding Style cleanups. This is to fix only the checkpatch warnings. > > I am not able to understand what this patch is fixing and how? > Some explanation about this will be helpful. Clock registration is called after DSP_Init mistakenly , the image autoloading loads PROC_Load Inturn that calls for OPP boosting while loading the image , this fails as the clock registration is not called. There was a typo in filling the platform data (5 instead of 6) because of that, the OPP5 frequency value is not updated, that causes WARN_ON() In the SRF. Please let me know if you need any more information on these changes. Thanks Ramesh Gupta G-- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi Ramesh, ext Gupta, Ramesh wrote: > Ameya, > > >>> >> Hi Ramesh, >> >> I am not clear about the issue which this patch fixes. >> As I understand that: >> >> 1. You have increased the count for >> pdata->mpu_speed[i] = vdd1_rate_table_bridge[i].rate; >> >> 2. Moved driverContext = DSP_Init(&initStatus) after >> clk_notifier_register stuff. > > These 2 changes fix the issue. > >> 3. Coding Style cleanups. > > This is to fix only the checkpatch warnings. > >> I am not able to understand what this patch is fixing and how? >> Some explanation about this will be helpful. > > Clock registration is called after DSP_Init mistakenly , the image autoloading loads PROC_Load > Inturn that calls for OPP boosting while loading the image , this fails as the clock registration is not called. > > There was a typo in filling the platform data (5 instead of 6) because of that, the OPP5 frequency value is not updated, that causes WARN_ON() > In the SRF. > > Please let me know if you need any more information on these changes. > > Thanks > Ramesh Gupta G Just by looking at the patch these things were not clear to me. Thanks a lot for your quick reply :) Cheers, Ameya. -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/dsp/bridge/rmgr/drv_interface.c b/drivers/dsp/bridge/rmgr/drv_interface.c index 3ad7a43..80edc4d 100755 --- a/drivers/dsp/bridge/rmgr/drv_interface.c +++ b/drivers/dsp/bridge/rmgr/drv_interface.c @@ -400,7 +400,7 @@ static int __init bridge_init(void) REG_SetValue(NULL, NULL, AUTOSTART, REG_DWORD, (u8 *)&temp, sizeof(temp)); REG_SetValue(NULL, NULL, DEFEXEC, REG_SZ, (u8 *)base_img, - strlen(base_img) + 1); + strlen(base_img) + 1); } else { temp = false; REG_SetValue(NULL, NULL, AUTOSTART, REG_DWORD, (u8 *)&temp, @@ -408,7 +408,7 @@ static int __init bridge_init(void) REG_SetValue(NULL, NULL, DEFEXEC, REG_SZ, (u8 *) "\0", (u32)2); } REG_SetValue(NULL, NULL, NUMPROCS, REG_SZ, (u8 *) num_procs, - strlen(num_procs) + 1); + strlen(num_procs) + 1); if (shm_size >= 0x10000) { /* 64 KB */ initStatus = REG_SetValue(NULL, NULL, SHMSIZE, REG_DWORD, @@ -450,18 +450,9 @@ static int __init bridge_init(void) sizeof(tc_wordswapon)); } if (DSP_SUCCEEDED(initStatus)) { - driverContext = DSP_Init(&initStatus); - if (DSP_FAILED(initStatus)) { - status = -1; - GT_0trace(driverTrace, GT_7CLASS, - "DSP/BIOS Bridge initialization Failed\n"); - } else { - GT_0trace(driverTrace, GT_5CLASS, - "DSP/BIOS Bridge driver loaded\n"); - } #ifdef CONFIG_BRIDGE_DVFS - for (i = 0; i < 5; i++) - pdata->mpu_speed[i] = vdd1_rate_table_bridge[i].rate; + for (i = 0; i < 6; i++) + pdata->mpu_speed[i] = vdd1_rate_table_bridge[i].rate; clk_handle = clk_get(NULL, "iva2_ck"); if (!clk_handle) { @@ -479,6 +470,15 @@ static int __init bridge_init(void) "clk_notifier_register FAIL for iva2_ck \n"); } #endif + driverContext = DSP_Init(&initStatus); + if (DSP_FAILED(initStatus)) { + status = -1; + GT_0trace(driverTrace, GT_7CLASS, + "DSP/BIOS Bridge initialization Failed\n"); + } else { + GT_0trace(driverTrace, GT_5CLASS, + "DSP/BIOS Bridge driver loaded\n"); + } } DBC_Assert(status == 0); @@ -655,11 +655,11 @@ func_cont: (struct DRV_OBJECT *)hDrvObject, &pPctxt); if (pPctxt != NULL) { - /* Return PID instead of process handle */ - hProcess = current->pid; + /* Return PID instead of process handle */ + hProcess = current->pid; DRV_ProcUpdatestate(pPctxt, PROC_RES_ALLOCATED); - DRV_ProcSetPID(pPctxt, hProcess); + DRV_ProcSetPID(pPctxt, hProcess); } #endif