On 1/8/26 6:49 PM, Bjorn Andersson wrote:
> On Thu, Jan 08, 2026 at 04:45:49PM +0200, Dmitry Baryshkov wrote:
>> On Thu, Jan 08, 2026 at 03:21:51PM +0100, Konrad Dybcio wrote:
>>> From: Konrad Dybcio <[email protected]>
>>>
>>> To make sure the correct settings for a given DRAM configuration get
>>> applied, attempt to retrieve that data from SMEM (which happens to be
>>> what the BSP kernel does, albeit with through convoluted means of the
>>> bootloader altering the DT with this data).
>>>
>>> Signed-off-by: Konrad Dybcio <[email protected]>
>>>
>>> ---
>>> I'm not sure about this approach - perhaps a global variable storing
>>> the selected config, which would then be non-const would be better?
>>
>> I'd prefer if const data was const, split HBB to a separate API.
>>
>
> I agree, but I'd prefer to avoid a separate API for it.
>
> Instead I'd like to either return the struct by value (after updating
> the hbb), but we then loose the ability to return errors, or by changing
> the signature to:
>
> int qcom_ubwc_config_get_data(struct qcom_ubwc_cfg_data *data)
>
> This costs us an additional 16 bytes in each client (as the pointer is
> replaced with the data), but I think it's a cleaner API.
I don't see how that's much better than
static const qcom_ubwc_cfg_data foobar_ubwc_data = {
...
};
static qcom_ubwc_cfg __data;
const struct qcom_ubwc_cfg_data *qcom_ubwc_config_get_data(void)
{
...
if (__data)
return data;
__data = of_machine_get_match_data()
...
hbb = ...;
__data->hbb = hbb;
return data; //still returns a constptr
}
Since we essentially do the same thing, except we save space and rest
assured the various client drivers don't mess with the data they receive
Konrad