On Sun, May 10, 2015 at 9:50 PM, Nicholas Krause <xerofo...@gmail.com> wrote:
>
>
> On May 10, 2015 3:45:36 PM EDT, patrik.r.jakobs...@gmail.com wrote:
>>On Sun, May 10, 2015 at 02:40:40PM -0400, nick wrote:
>>>
>>>
>>> On 2015-05-10 02:35 PM, patrik.r.jakobs...@gmail.com wrote:
>>> > On Sun, May 10, 2015 at 01:48:14PM -0400, nick wrote:
>>> >>
>>> >>
>>> >> On 2015-05-10 01:04 PM, patrik.r.jakobs...@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
>><xerofo...@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?
>>
>  That sounds broken to me. This seems like a good place to start helping a 
> new with your permission.
> Nick

Sorry but I'm no teacher and cannot help you with that.

Patrik

>>> >> 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 <xerofo...@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
>>> >>>>>>
>
> --
> Sent from my Android device with K-9 Mail. Please excuse my brevity.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to