On Sun, May 10, 2015 at 02:40:40PM -0400, nick wrote:
On 2015-05-10 02:35 PM, patrik.r.jakobsson@gmail.com wrote:
On Sun, May 10, 2015 at 01:48:14PM -0400, nick wrote:
On 2015-05-10 01:04 PM, patrik.r.jakobsson@gmail.com wrote:
On Tue, May 05, 2015 at 11:17:07AM -0400, nick wrote:
On 2015-05-05 09:06 AM, Patrik Jakobsson wrote:
On Tue, May 5, 2015 at 12:29 AM, Nicholas Krause xerofoify@gmail.com wrote: > This removes the deprecated functions,i2c_dp_aux_add_bus and > i2c_dp_aux_prepare_bus and the only call in the function, > cdv_intel_dp_i2c_init to i2c_dp_aux_add_bus respectfully. > The call and use of these functions is now replaced alongside > the removal of setting other values in the function,cdv_intel_dp_i2c_init > to use the helper function, drm_dp_aux_register that can handle all this > work internally.
You need to fill in the drm_dp_aux structure and implement a proper transfer function. This patch would only break things. But the cdv dp output is already broken on my system so it needs fixing first.
-Patrik
Patrik, Due to me not being an expert in this area of the kernel I based my work off the similar function, intel_dp_aux_init for i915. I was unsure of which helper functions for i915 need to be written differently for gma500 based solutions as I don't known the differences between these two in the graphics specs area. Thanks, Nick
Hi Nick You are _required_ to know what your patches are doing before sending them. If you don't test your code and don't know what it's doing then we will not accept it. You're expected to read the available documentation and relevant literature before sending patches and asking questions. Otherwise someone else is doing the work for you, which I assume is not the purpose of you patch submission.
Thanks Patrik
Patrik, Sorry about that my question is actually this ,I am unsure of what parts of the function,intel_dp_aux_init need to be ported for the gma500 gpu driver. Furthermore I will list what parts for certain I known need to be ported over above the lines of code in the function definition I have pasted below. Please let me known if there are any areas I am missing. This is more just of a double check to make sure I don't miss something critical:)(I like to verify something before I code it). Sorry for the misunderstanding,
You can figure this out by reading the drm dp helpers docs and looking at cdv_intel_dp.c. For instance, in gma500 we initialize DP_B and DP_C.
My point is that _you_ need to read the code and understand it. I cannot help you with that.
But as I said in my first reply. DP on CDV is broken (at least on my machine) so that should be fixed first.
Cheers Patrik
Patrik, Sorry about that :). Your right it's a bad habit :(, I will start working on it. Further more by "broken" you mean what. This is very vague and if you would like some help with it, I am willing to if you can give me a detailed response of what is wrong. Nick
Vague? Both DP and LVDS displays are black after boot when DP is connected. What additional information do you need?
Nick static void 1002 intel_dp_aux_init(struct intel_dp *intel_dp, struct intel_connector *connector) 1003 { /*Unsure about how to port this over the functions in these lines a.k.a any differences between i915 and gma500 related to these functions? I read through these function definitions but would like to double check*/ 1004 struct drm_device *dev = intel_dp_to_dev(intel_dp); 1005 struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp); 1006 enum port port = intel_dig_port->port; /*Port these lines*/ 1007 const char *name = NULL; 1008 int ret; /*Port this switch statement */ 1009 1010 switch (port) { 1011 case PORT_A: 1012 intel_dp->aux_ch_ctl_reg = DPA_AUX_CH_CTL; 1013 name = "DPDDC-A"; 1014 break; 1015 case PORT_B: 1016 intel_dp->aux_ch_ctl_reg = PCH_DPB_AUX_CH_CTL; 1017 name = "DPDDC-B"; 1018 break; 1019 case PORT_C: 1020 intel_dp->aux_ch_ctl_reg = PCH_DPC_AUX_CH_CTL; 1021 name = "DPDDC-C"; 1022 break; 1023 case PORT_D: 1024 intel_dp->aux_ch_ctl_reg = PCH_DPD_AUX_CH_CTL; 1025 name = "DPDDC-D"; 1026 break; 1027 default: 1028 BUG(); 1029 } 1030 1031 /* 1032 * The AUX_CTL register is usually DP_CTL + 0x10. 1033 * 1034 * On Haswell and Broadwell though: 1035 * - Both port A DDI_BUF_CTL and DDI_AUX_CTL are on the CPU 1036 * - Port B/C/D AUX channels are on the PCH, DDI_BUF_CTL on the CPU 1037 * 1038 * Skylake moves AUX_CTL back next to DDI_BUF_CTL, on the CPU. 1039 */ 1040 if (!IS_HASWELL(dev) && !IS_BROADWELL(dev)) 1041 intel_dp->aux_ch_ctl_reg = intel_dp->output_reg + 0x10; 1042 /*Port these lines*/ 1043 intel_dp->aux.name = name; 1044 intel_dp->aux.dev = dev->dev; 1045 intel_dp->aux.transfer = intel_dp_aux_transfer; 1046 /*Port this devugging message */ 1047 DRM_DEBUG_KMS("registering %s bus for %s\n", name, 1048 connector->base.kdev->kobj.name); 1049 /*Port these lines*/ 1050 ret = drm_dp_aux_register(&intel_dp->aux); 1051 if (ret < 0) { 1052 DRM_ERROR("drm_dp_aux_register() for %s failed (%d)\n", 1053 name, ret); 1054 return; 1055 } 1056 /*Port the of the function */ 1057 ret = sysfs_create_link(&connector->base.kdev->kobj, 1058 &intel_dp->aux.ddc.dev.kobj, 1059 intel_dp->aux.ddc.dev.kobj.name); 1060 if (ret < 0) { 1061 DRM_ERROR("sysfs_create_link() for %s failed (%d)\n", name, ret); 1062 drm_dp_aux_unregister(&intel_dp->aux); 1063 } 1064 } 1065
> Signed-off-by: Nicholas Krause xerofoify@gmail.com > --- > drivers/gpu/drm/gma500/cdv_intel_dp.c | 42 ++--------------------------------- > 1 file changed, 2 insertions(+), 40 deletions(-) > > diff --git a/drivers/gpu/drm/gma500/cdv_intel_dp.c b/drivers/gpu/drm/gma500/cdv_intel_dp.c > index 0fafb8e..c8c20fc 100644 > --- a/drivers/gpu/drm/gma500/cdv_intel_dp.c > +++ b/drivers/gpu/drm/gma500/cdv_intel_dp.c > @@ -200,38 +200,6 @@ static const struct i2c_algorithm i2c_dp_aux_algo = { > .functionality = i2c_algo_dp_aux_functionality, > }; > > -static void > -i2c_dp_aux_reset_bus(struct i2c_adapter *adapter) > -{ > - (void) i2c_algo_dp_aux_address(adapter, 0, false); > - (void) i2c_algo_dp_aux_stop(adapter, false); > -} > - > -static int > -i2c_dp_aux_prepare_bus(struct i2c_adapter *adapter) > -{ > - adapter->algo = &i2c_dp_aux_algo; > - adapter->retries = 3; > - i2c_dp_aux_reset_bus(adapter); > - return 0; > -} > - > -/* > - * FIXME: This is the old dp aux helper, gma500 is the last driver that needs to > - * be ported over to the new helper code in drm_dp_helper.c like i915 or radeon. > - */ > -static int __deprecated > -i2c_dp_aux_add_bus(struct i2c_adapter *adapter) > -{ > - int error; > - > - error = i2c_dp_aux_prepare_bus(adapter); > - if (error) > - return error; > - error = i2c_add_adapter(adapter); > - return error; > -} > - > #define _wait_for(COND, MS, W) ({ \ > unsigned long timeout__ = jiffies + msecs_to_jiffies(MS); \ > int ret__ = 0; \ > @@ -275,6 +243,7 @@ struct cdv_intel_dp { > int backlight_on_delay; > int backlight_off_delay; > struct drm_display_mode *panel_fixed_mode; /* for eDP */ > + struct drm_dp_aux aux; > bool panel_on; > }; > > @@ -855,18 +824,11 @@ cdv_intel_dp_i2c_init(struct gma_connector *connector, > intel_dp->algo.running = false; > intel_dp->algo.address = 0; > intel_dp->algo.aux_ch = cdv_intel_dp_i2c_aux_ch; > - > memset(&intel_dp->adapter, '\0', sizeof (intel_dp->adapter)); > - intel_dp->adapter.owner = THIS_MODULE; > - intel_dp->adapter.class = I2C_CLASS_DDC; > - strncpy (intel_dp->adapter.name, name, sizeof(intel_dp->adapter.name) - 1); > - intel_dp->adapter.name[sizeof(intel_dp->adapter.name) - 1] = '\0'; > - intel_dp->adapter.algo_data = &intel_dp->algo; > - intel_dp->adapter.dev.parent = connector->base.kdev; > > if (is_edp(encoder)) > cdv_intel_edp_panel_vdd_on(encoder); > - ret = i2c_dp_aux_add_bus(&intel_dp->adapter); > + ret = drm_dp_aux_register(&intel_dp->aux); > if (is_edp(encoder)) > cdv_intel_edp_panel_vdd_off(encoder); > > -- > 2.1.4 >
dri-devel@lists.freedesktop.org