Starting with biblatex 3.8/Biber 2.8 you can do the following.
Make the new name parts known to biblatex in a .dbx file (in the example below it is called ethiopian.dbx and created via filecontents, you don't need to do that, it just needs to be in a place where LaTeX can find it)
\DeclareDatamodelConstant[type=list]{nameparts}{prefix,family,suffix,given,patronymic,papponymic}
We add the two name parts patronymic for the father's name and papponymic for that of the grandfather.
Then we need to adjust sorting for Ethiopian names
\DeclareSortingNamekeyTemplate[ethiopian]{
\keypart{
\namepart{given}
}
\keypart{
\namepart{patronymic}
}
\keypart{
\namepart{papponymic}
}
}
The rules for uniqueness can also be changed to include the patronymic and papponymic with the given name if needed to disambiguate.
\DeclareUniquenameTemplate[ethiopian]{
\namepart[base=true]{given}
\namepart[disambiguation=full]{patronymic}
\namepart[disambiguation=full]{papponymic}
}
The names are printed with name: macros
\newbibmacro*{name:ethiopian}[3]{%
\usebibmacro{name:delim}{#1#2#3}%
\usebibmacro{name:hook}{#1#2#3}%
\mkbibethgiven{#1}%
\ifdefvoid{#2}{}{\bibnamedelimd\mkbibethpat{#2}\isdot}%
\ifdefvoid{#3}{}{\bibnamedelimd\mkbibethpap{#3}\isdot}}
\let\mkbibethgiven\mkbibnamefamily
\let\mkbibethpat\mkbibnamegiven
\let\mkbibethpap\mkbibnamegiven
Using \ifsortingnamekeytemplatename and \ifuniquenametemplatename we can then branch the definitions of the name formats
\DeclareNameAlias{sortname}{family-given}
\DeclareNameFormat{given-family}{%
\ifsortingnamekeytemplatename{ethiopian}
{\usebibmacro{name:ethiopian}
{\namepartgiven}
{\namepartpatronymic}
{\namepartpapponymic}}
{\ifgiveninits
{\usebibmacro{name:given-family}
{\namepartfamily}
{\namepartgiveni}
{\namepartprefix}
{\namepartsuffix}}
{\usebibmacro{name:given-family}
{\namepartfamily}
{\namepartgiven}
{\namepartprefix}
{\namepartsuffix}}}%
\usebibmacro{name:andothers}}
\DeclareNameFormat{family-given}{%
\ifsortingnamekeytemplatename{ethiopian}
{\usebibmacro{name:ethiopian}
{\namepartgiven}
{\namepartpatronymic}
{\namepartpapponymic}}
{\ifgiveninits
{\usebibmacro{name:family-given}
{\namepartfamily}
{\namepartgiveni}
{\namepartprefix}
{\namepartsuffix}}
{\usebibmacro{name:family-given}
{\namepartfamily}
{\namepartgiven}
{\namepartprefix}
{\namepartsuffix}}}%
\usebibmacro{name:andothers}}
\DeclareNameFormat{labelname}{%
\ifuniquenametemplatename{ethiopian}
{\usebibmacro{labelname:ethiopian}}
{\usebibmacro{labelname:western}}%
\usebibmacro{name:andothers}}
\newbibmacro{labelname:ethiopian}{%
\iffieldequalstr{uniquepart}{base}
{\usebibmacro{name:ethiopian}
{\namepartgiven}
{\empty}
{\empty}}
{\iffieldequalstr{uniquepart}{patronymic}
{\usebibmacro{name:ethiopian}
{\namepartgiven}
{\namepartpatronymic}
{\empty}}
{\usebibmacro{name:ethiopian}
{\namepartgiven}
{\namepartpatronymic}
{\namepartpapponymic}}}}
\newbibmacro{labelname:western}{%
\ifcase\value{uniquename}%
\usebibmacro{name:family}
{\namepartfamily}
{\namepartgiven}
{\namepartprefix}
{\namepartsuffix}%
\or
\ifuseprefix
{\usebibmacro{name:given-family}
{\namepartfamily}
{\namepartgiveni}
{\namepartprefix}
{\namepartsuffixi}}
{\usebibmacro{name:given-family}
{\namepartfamily}
{\namepartgiveni}
{\namepartprefixi}
{\namepartsuffixi}}%
\or
\usebibmacro{name:given-family}
{\namepartfamily}
{\namepartgiven}
{\namepartprefix}
{\namepartsuffix}%
\fi}
In your .bib file you can give the name as follows
author = {given=Kebede, patronymic=Daniel, papponymic=Demeke, nametemplates=ethiopian},
This is necessary because the traditional name rules of BibTeX can't parse the name correctly.
In total
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{ethiopian.dbx}
\DeclareDatamodelConstant[type=list]{nameparts}{prefix,family,suffix,given,patronymic,papponymic}
\end{filecontents*}
\begin{filecontents*}{\jobname.bib}
@BOOK{kebede,
author = {given=Kebede, patronymic=Daniel, papponymic=Demeke, nametemplates=ethiopian},
title = {One},
date = {1983}
}
@BOOK{two,
author = {given=Daniel, patronymic=Demeke, nametemplates=ethiopian},
title = {Two},
date = {1984}
}
@BOOK{three,
author = {given=Daniel, patronymic=Kebede, nametemplates=ethiopian},
title = {Three},
date = {1985}
}
\end{filecontents*}
\usepackage[style=authoryear,datamodel=ethiopian]{biblatex}
\addbibresource{biblatex-examples.bib}
\addbibresource{\jobname.bib}
\DeclareSortingNamekeyTemplate[ethiopian]{
\keypart{
\namepart{given}
}
\keypart{
\namepart{patronymic}
}
\keypart{
\namepart{papponymic}
}
}
\DeclareUniquenameTemplate[ethiopian]{
\namepart[base=true]{given}
\namepart[disambiguation=full]{patronymic}
\namepart[disambiguation=full]{papponymic}
}
\DeclareNameAlias{sortname}{family-given}
\DeclareNameFormat{given-family}{%
\ifsortingnamekeytemplatename{ethiopian}
{\usebibmacro{name:ethiopian}
{\namepartgiven}
{\namepartpatronymic}
{\namepartpapponymic}}
{\ifgiveninits
{\usebibmacro{name:given-family}
{\namepartfamily}
{\namepartgiveni}
{\namepartprefix}
{\namepartsuffix}}
{\usebibmacro{name:given-family}
{\namepartfamily}
{\namepartgiven}
{\namepartprefix}
{\namepartsuffix}}}%
\usebibmacro{name:andothers}}
\DeclareNameFormat{family-given}{%
\ifsortingnamekeytemplatename{ethiopian}
{\usebibmacro{name:ethiopian}
{\namepartgiven}
{\namepartpatronymic}
{\namepartpapponymic}}
{\ifgiveninits
{\usebibmacro{name:family-given}
{\namepartfamily}
{\namepartgiveni}
{\namepartprefix}
{\namepartsuffix}}
{\usebibmacro{name:family-given}
{\namepartfamily}
{\namepartgiven}
{\namepartprefix}
{\namepartsuffix}}}%
\usebibmacro{name:andothers}}
\DeclareNameFormat{labelname}{%
\ifuniquenametemplatename{ethiopian}
{\usebibmacro{labelname:ethiopian}}
{\usebibmacro{labelname:western}}%
\usebibmacro{name:andothers}}
\newbibmacro{labelname:ethiopian}{%
\iffieldequalstr{uniquepart}{base}
{\usebibmacro{name:ethiopian}
{\namepartgiven}
{\empty}
{\empty}}
{\iffieldequalstr{uniquepart}{patronymic}
{\usebibmacro{name:ethiopian}
{\namepartgiven}
{\namepartpatronymic}
{\empty}}
{\usebibmacro{name:ethiopian}
{\namepartgiven}
{\namepartpatronymic}
{\namepartpapponymic}}}}
\newbibmacro{labelname:western}{%
\ifcase\value{uniquename}%
\usebibmacro{name:family}
{\namepartfamily}
{\namepartgiven}
{\namepartprefix}
{\namepartsuffix}%
\or
\ifuseprefix
{\usebibmacro{name:given-family}
{\namepartfamily}
{\namepartgiveni}
{\namepartprefix}
{\namepartsuffixi}}
{\usebibmacro{name:given-family}
{\namepartfamily}
{\namepartgiveni}
{\namepartprefixi}
{\namepartsuffixi}}%
\or
\usebibmacro{name:given-family}
{\namepartfamily}
{\namepartgiven}
{\namepartprefix}
{\namepartsuffix}%
\fi}
\newbibmacro*{name:ethiopian}[3]{%
\usebibmacro{name:delim}{#1#2#3}%
\usebibmacro{name:hook}{#1#2#3}%
\mkbibethgiven{#1}%
\ifdefvoid{#2}{}{\bibnamedelimd\mkbibethpat{#2}\isdot}%
\ifdefvoid{#3}{}{\bibnamedelimd\mkbibethpap{#3}\isdot}}
\let\mkbibethgiven\mkbibnamefamily
\let\mkbibethpat\mkbibnamegiven
\let\mkbibethpap\mkbibnamegiven
\begin{document}
\textcite{sigfridsson,knuth:ct:a,knuth:ct:b,knuth:ct:c,cicero,geer}
\textcite{kebede}
\textcite{two}
\textcite{three}
\printbibliography
\end{document}
which yields
